DA 3

Tae Yoon·2024년 1월 9일
0

기술통계 구하기

describe() 메서드

ns_book6.describe()

describe()는 기본적으로 데이터의 25%, 50%, 75%에 위치한 값을 보여준다. 원하는 위치의 값을 보고 싶다면 percentiles 매개변수에 위치를 지정하면 된다

ns_book7.describe(percentiles=[0.3,0.6,0.9])

열의 기술통계를 보고 싶다면 include 매개변수에 데이터 타입을 지정할 수 있다

ns_book7.describe(include='object')

평균 구하기

mean() 메서드

ns_book7['대출건수'].mean()

중앙값 구하기

median() 메서드

ns_book7['대출건수'].median()

중복값 제거하고 중앙값 구하기

ns_book7['대출건수'].drop_duplicates().median()

최솟값, 최댓값 구하기

min(), max() 메서드

분위수 구하기

판다스에서 분위수 값을 계산할 때는 quantile() 메서드 사용

ns_book6['대출건수].quantile(0.25)
ns_book6['대출건수'].quantile([0.25,0.5,0.75])

quantile() 메서드에 여러 개의 분위수를 지정하면 각 분위수에 해당하는 값을 담은 시리즈 객체를 반환한다
그렇다면 1,2,3,4,5 다섯 개의 숫자가 있을 때 90% 위치에 있는 값은 얼마일까?
pd.Series([1,2,3,4,5]).quantile(0.9)

백분위 구하기

불리언 배열을 이용

borrow_10_flag=ns_book7['대출건수']<10
borrow_10_flag.mean()
ns_book7['대출건수'].quantile(0.65)

분산 구하기 var() 메서드

ns_book7['대출건수'].var()

표준편차 구하기 std() 메서드

ns_book6['대출건수'].std()

최빈값 구하기 mode() 메서드

ns_book7['도서명'].mode()

데이터프레임에서 기술통계 구하기

수치형 열만 연산할 수 있기 때문에 해당 열에만 적용되도록 numeric_only 매개변수를 True로 지정

ns_book7.mean(numeric_only=True)

넘파이의 기술통계 함수

평균 구하기 mean() 함수와 average() 함수 사용

np.mean(ns_book7['대출건수'])

average() 함수는 기본적으로 mean() 함수와 동일하게 평균을 계산하는데, weights 매개변수에 가중치를 제공하면 가중평균을 구한다

np.average(ns_book7['대출건수'],weights=1/ns_book7['도서권수'])

중앙값 구하기 median() 함수 사용

np.median(ns_book7['대출건수'])	

최솟값, 최댓값 구하기 min(), max() 함수

ns_book7['대출건수'].min()

분위수 구하기 quantile() 함수

np.quantile(ns_book7['대출건수'],[0.25,0.5,0.75])

넘파이는 percentile() 함수도 제공. 백분위를 0~100 사이의 값으로 지정하는 것 외에는 quantile() 함수와 동일

분산 구하기 var() 함수

np.var(ns_book7['대출건수'])

판다스는 분산을 계산할 때 n-1로 나눈다
판다스와 넘파이 모두 ddof 매개변수를 사용하여 자유도 차감값을 지정할 수 있다

ns_book7['대출건수'].var(ddof=0) <-판다스
ns_book7['대출건수'].var(ddof=1)  <-넘파이

표준편차 구하기 std() 함수

np.std(ns_book7['대출건수'])

최빈값 구하기

넘파이는 직접적으로 최빈값을 계산하는 함수를 제공하지 않는다. 하지만 unique() 함수를 사용해 최빈값을 찾을 수 있다.
unique() 함수는 배열에서 고유한 값을 찾아 준다. return_counts 매개변수를 기본값 False에서 True로 바꿔 주면 고유한 값의 등장 횟수도 반환한다

values, counts=np.unique(ns_book7['도서명'], return_counts=True)

그다음 counts 배열에서 가장 큰 값의 인덱스를 찾아야 한다. 이런 작업은 argmax() 함수를 사용한다

max_idx=np.argmax(counts)
values[max_idx]

분포 요약하기

산점도 그리기

파이썬에서 그래프를 그리는 데 사용하는 대표적 패키지 맷플롯립

import matplotlib.pyplot as plt

scatter() 함수

산점도는 scatter() 함수로 그린다 첫 번째 매개변수에 4개 포인트의 x축 좌표룰 전달하고 두 번째 매개벼눗에 y축 좌표를 전달한다
scatter() 함수를 호출한 다음에는 show(0 함수를 호출하여 그래프를 출력한다

plt.scatter([1,2,3,4],[1,2,3,4]) 
plt.show()

투명도 조정하기

맷플롯립은 alpha 매개변수에 0~1 사이의 값으로 투명도를 지정할 수 있다.

plt.scatter(ns_book7['도서권수'],ns_book7['대출건수'], alpha=0.1)

히스토그램 그리기 hist() 함수

bins 매개변수를 지정하여 구간의 개수를 구할 수 있다

plt.hist([0,3,5,6,7,7,9,13],bins=5)
plt.show()

히스토그램의 구간을 정확하게 확인하기 위해 넘파이에서 제공하는 histogram_bin_edges() 함수를 사용

import numpy as np
np.histogram_bin_edges([0,3,5,6,7,7,9,13],bins=5)

넘파이의 randn() 함수는 표준정규분포를 따르는 랜덤한 실수를 생성할 수 있다

np.random.seed(42)
random_samples= np.random.randn(1000)

랜덤한 실수 1000개를 생성 seed() 함수를 사용하면 유사난수를 생성할 수 있다

구간 조정하기

한 구간의 도수가 너무 커서 다른 구간에는 도수가 표시되지 않는 현상이 발생하면 y축을 로그 스케일로 바꾸어 해결할 수 있다.
로그 스케일로 바꾼다는 것은 y축에 로그 함수를 적용한다는 의미

plt.hist(ns_book7['대출건수'])
plt.yscale('log')
plt.show()

y축에 로그 스케일을 적용했던 것처럼 x축에도 로그 스케일을 적용할 수 있다

plt.hist(title_len,bins=100)
plt.xscale('log')
plt.show()

상자 수염 그림 그리기 boxplot() 함수

plt.boxplot(ns_book7[['대출건수','도서권수']])
plt.show()

상자 수염 그림 수평으로 그리기

boxplot() 함수의 vert 매개변수를 기본값 True에서 False로 바꾸면 된다

plt.boxplot(ns_book7[['대출건수','도서권수']],vert=False) 
plt.xscale('log')
plt.show()

수염 길이 조정하기

boxplot() 함수의 whis 매개변수로 조정할 수 있다. 기본값 1.5

plt.boxplot(ns_book7[['대출건수','도서권수']],whis=10)
plt.yscale('log')
plt.show()

whis 매개변수는 백분율로도 지정할 수 있다

plt.boxplot(ns_book7[['대출건수','도서권수']],whis=(0,100))
plt.yscale('log')
plt.show()

판다스의 그래프 함수

산점도 그리기

판다스 데이터프레임 객체의 plot속성은 여러 가지 그래프를 그릴 수 있는 메서드를 제공한다
이 중 scatter()메서드로 산점도를 그릴 수 있다

ns_book7.plot.scatter('도서권수','대출건수',alpha=0.1)

히스토그램 그리기 hist() 메서드

ns_book7['도서명'].apply(len).plot.hist(bins=100)
plt.show()

상자 수염 그림 그리기 boxplot() 메서드

ns_book7[['대출건수','도서권수']].boxplot()
plt.yscale('log')
plt.show()

0개의 댓글

관련 채용 정보