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)
ns_book7['대출건수'].var()
ns_book6['대출건수'].std()
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['도서권수'])
np.median(ns_book7['대출건수'])
ns_book7['대출건수'].min()
np.quantile(ns_book7['대출건수'],[0.25,0.5,0.75])
넘파이는 percentile() 함수도 제공. 백분위를 0~100 사이의 값으로 지정하는 것 외에는 quantile() 함수와 동일
np.var(ns_book7['대출건수'])
판다스는 분산을 계산할 때 n-1로 나눈다
판다스와 넘파이 모두 ddof 매개변수를 사용하여 자유도 차감값을 지정할 수 있다
ns_book7['대출건수'].var(ddof=0) <-판다스
ns_book7['대출건수'].var(ddof=1) <-넘파이
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() 함수로 그린다 첫 번째 매개변수에 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)
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()
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)
ns_book7['도서명'].apply(len).plot.hist(bins=100)
plt.show()
ns_book7[['대출건수','도서권수']].boxplot()
plt.yscale('log')
plt.show()