# 기존 컬럼이 없으면 추가, 있으면 수정
CCTV_Seoul["최근증가율"] = (
(CCTV_Seoul["2016년"] + CCTV_Seoul["2015년"] + CCTV_Seoul["2014년"]) / CCTV_Seoul["2013년도 이전"] * 100
)
CCTV_Seoul.sort_values(by="최근증가율", ascending=False).head()
unique()
: 한 번이라도 등장한 데이터 중복 없이 반환pop_Seoul["구별"].unique()
>>>
array(['종로구', '중구', '용산구', '성동구', '광진구', '동대문구', '중랑구', '성북구', '강북구',
'도봉구', '노원구', '은평구', '서대문구', '마포구', '양천구', '강서구', '구로구', '금천구',
'영등포구', '동작구', '관악구', '서초구', '강남구', '송파구', '강동구'], dtype=object)
# 외국인비율, 고령자비율
pop_Seoul["외국인비율"] = pop_Seoul["외국인"] / pop_Seoul["인구수"] * 100
pop_Seoul["고령자비율"] = pop_Seoul["고령자"] / pop_Seoul["인구수"] * 100
pop_Seoul.head()
pop_Seoul.sort_values(["인구수"], ascending=False).head()
Pandas에서 데이터 프레임을 병합하는 방법
pd.concat()
pd.merge()
pd.join()
- 두 데이터 프레임에서 컬럼이나 인덱스를 기준으로 잡고 병합하는 방법
- 기준이 되는 컬럼이나 인덱스를 키값이라고 합니다.
- 기준이 되는 키값은 두 데이터 프레임에 모두 포함되어 있어야 함
# on="key": key column 기준으로 병합, how='inner': 기본 옵션, 교집합만 출력
pd.merge(left, right, on="key")
# how='left': 'left' 모두 출력
pd.merge(left, right, how="left", on="key")
# how='outer': 합집합, 모두 출력
pd.merge(left, right, how='outer', on="key")
set_index()
- 선택할 컬럼을 데이터 프레임의 인덱스로 지정
corr()
: correlation 의 약자- 상관계수가 0.2 이상인 데이터를 비교
data_result.corr()
import matplotlib.pyplot as plt
from matplotlib import rc
rc('font', family='Malgun Gothic') # Mac: Arial Univode MS
%matplotlib inline # or get_ipython().run_line_magic('matplotlib', 'inline')
%matplotlib inline
or get_ipython().run_line_magic('matplotlib', 'inline')
: jupyter notebook 에서 그래프를 바로 보여줌cf. matplotlib 에서 '-'(음수 부호) 표기 오류
UserWarning: Glyph 8722 (\N{MINUS SIGN}) missing from current font.
==> 해결 방법: matplotlib.pyplot import 한 뒤 해당 코드 추가
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(10,6)) # 그래프 배경 가로, 세로 사이즈
plt.plot(x, y) # 데이터
plt.show
numpy의 sin 함수 가져오기
np.arange(a, b, s)
: a부터 b까지 s의 간격np.sin(value)
plt.grid(True) #격자무늬
plt.legend(labels=["sin", "cos"], loc="upper right")`
# labels: 선 데이터 의미 구분
# loc: 위치(설정하지 않으면 가장 빈 공간에 자동으로 위치)
plt.plot(t, np.sin(t), label="sin") # 선 데이터 의미 구분(2)
plt.plot(t, np.cos(t), label="cos")
plt.xlabel("time") # x, y축 제목 추가
plt.ylabel("Amplitude")
plt.figure(figsize=(10, 6))
plt.plot(t, t, "r--") # red, ---(점선형태 선)
plt.plot(t, t ** 2, "bs")
plt.plot(t, t ** 3, "g^") # green, 위 화살표
plt.show()
^
, >
, <
red
, green
, blue
-
, --
, dashed
xlim
, ylim
: 그래프 범위 지정# matplotlib 을 가져와서 사용
# 막대 그래프
data_result["인구수"].plot(kind="bar", figsize=(10, 10))
# 막대 그래프 - horizontal
data_result["인구수"].plot(kind="barh", figsize=(10, 10))
;
: 그래프 깔끔하게 출력def drawGraph():
data_result['소계'].sort_values().plot(
kind='barh', grid=True, title='가장 CCTV가 많은 구', figsize=(10, 10));
drawGraph()