๋ฐ์ดํฐ
์์๊ณต์ธ์์ฅ์งํฅ๊ณต๋จ_์๊ฐ(์๊ถ)์ ๋ณด_์๋ฃ๊ธฐ๊ด_20190930
์๊ฐ(์๊ถ)์ ๋ณด ์๋ฃ๊ธฐ๊ด์ ๋ํ๋ด๋ ๋ฐ์ดํฐ์ ๋๋ค. ์๋ฃ๊ธฐ๊ด์ ์ํธ๋ช , ์ฃผ์, ์๊ถ์ ์ข ์ค๋ถ๋ฅ๋ช , ์๋ถ๋ฅ๋ช ์ ํญ๋ชฉ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
www.data.go.kr
->๋งํฌ์์ ๋ฐ์ดํฐ ๋ค์ด
๊ฐ์ค์ค์
์์ธ์ ์ข ํฉ๋ณ์์ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ด ์์๊น?
1. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#๊ทธ๋ํ๊ฐ ๋
ธํธ๋ถ ์์ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด
%matplotlib inline
#ํ๊ธ ํฐํธ ์ค์
plt.rc('font', family='Malgun Gothic')
#๋ง์ด๋์ค ๊ธฐํธ๊ฐ ํ์๋๋๋ก ํด์ค
plt.rc('axes', unicode_minus=False)
- matplotlib์์๋ ํ๊ธ๊ณผ ๋ง์ด๋์ค ๊ธฐํธ๊ฐ ๊นจ์ ธ์ ๋ํ๋๊ธฐ ๋๋ฌธ์ ํ๊ธ ์ง์๊ฐ๋ฅํ ๊ธ์จ์ฒด๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋ค!
- plt.rc('font', family='Malgun Gothic') : matplotlib ์์ ์ฌ์ฉํ๋ ํฐํธ๋ฅผ ํ๊ธ ์ง์์ด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ฐ๊พธ๋ ์ฝ๋ ์ ๋๋ค.
df=pd.read_csv('์์๊ณต์ธ์์ฅ์งํฅ๊ณต๋จ_์๊ฐ์
์์ ๋ณด_์๋ฃ๊ธฐ๊ด_201909.csv', encoding='cp949')
#ํ์ด ๊ฐ์
df.shape
2. ์ ์ฒ๋ฆฌ
~๊ฒฐ์ธก์น ๊ฐ์ ํ์ธ~
null_count=df.isnull().sum()
null_count
~๊ฒฐ์ธก์น ์๊ฐ์ ์ผ๋ก ํ์ธ~
null_count.plot.barh(figsize=(5,10))
~๊ฒฐ์ธก์น๊ฐ์๋ฅผ ์ผ ๋ฐ์ดํฐํ๋ ์ -> ์ปฌ๋ผ๋ช ๋ณ๊ฒฝ~
df_null_count=null_count.reset_index()
print(df_null_count.head())
#์ปฌ๋ผ๋ช
๋ณ๊ฒฝ
df_null_count.columns=['์ปฌ๋ผ๋ช
','๊ฒฐ์ธก์น์']
print(df_null_count.head())
-> ์ปฌ๋ผ๋ช ์ด ์ ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธ!
~๊ฒฐ์ธก์น ์๊ฐ ํฐ ์์ผ๋ก ์ ๋ ฌํด์ ์ ์ฅ!~
df_null_count_top=df_null_count.sort_values(by="๊ฒฐ์ธก์น์", ascending=False).head(10)
df_null_count_top
~๊ฒฐ์ธก์น๊ฐ ๋ง์ ์ปฌ๋ผ์ ์ปฌ๋ผ๋ช ์ ๋ฆฌ์คํธ๋ก ์ ์ฅ~
drop_columns=df_null_count_top["์ปฌ๋ผ๋ช
"].tolist()
drop_columns
~์ญ์ ~
print("์๋ฐ์ดํฐ :", df.shape)
df=df.drop(drop_columns, axis=1)
print("drop ํ :", df.shape)
3. ์๊ฐํ
~"์๋๋ช " ์๋ฃ๊ธฐ๊ด ๊ฐ์ count~
city=df["์๋๋ช
"].value_counts()
city
~์ ๊ทํ~
city_normalize=df["์๋๋ช
"].value_counts(normalize=True)
city_normalize
~"์๋๋ณ" ์๋ฃ๊ธฐ๊ด ๊ฐ์ ์๊ฐํ~
#bar๊ทธ๋ํ
#city=)์์์ value_counts()ํ ๋ฐ์ดํฐ
city.plot.barh()
#barh๋์ seaborn(countplot)
sns.countplot(data=df, y='์๋๋ช
')
#์๊ทธ๋ํ
city_normalize.plot.pie(figsize=(7,7))
4. ๊ฐ์ค๊ฒ์ ์ ์ํ ๋ถ์
~์์ธ ์ข ํฉ๋ณ์ ๋ฐ์ดํฐ ์ถ์ถ~
df_seoul_hospital=df[(df["์๊ถ์
์ข
์๋ถ๋ฅ๋ช
"]=="์ข
ํฉ๋ณ์") & (df["์๋๋ช
"]=="์์ธํน๋ณ์")]
df_seoul_hospital
- "์๊ถ์ ์ข ์๋ถ๋ฅ๋ช "์ด ""์ข ํฉ๋ณ์"์ธ ๋ฐ์ดํฐ & "์๋๋ช "์ด "์์ธํน๋ณ์"์ธ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ๊ฒฐ๊ณผ๋ฅผ df_seoul_hospital์ ํ ๋น
์์ธ ์ข ํฉ๋ณ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ผ๋
์ํธ๋ช ์ ํ์ธํ๋ฉด ์ค์ ์ข ํฉ๋ณ์์ด ์๋ ๋ฐ์ดํฐ๊ฐ ๋จ์์์
=> ์ ๊ฑฐ ํ์
~์ํธ๋ช ์ ์ข ํฉ๋ณ์์ด ํฌํจ๋์ด์์ง ์์ ๋ฐ์ดํฐ ์ฐพ๊ธฐ~
df_seoul_hospital.loc[~df_seoul_hospital["์ํธ๋ช
"].str.contains("์ข
ํฉ๋ณ์"), "์ํธ๋ช
"].unique()
- "์ข ํฉ๋ณ์"์ด ์ํธ๋ช ์ ํฌํจ๋์ด ์์ง ์์ ๋ณ์๋ค์ ๋ณด๋ฉด "๊ฝ๋ฐฐ๋ฌ/์๋ฃ๊ธฐ/์ฅ๋ก์์ฅ/์๋ด์/์ด๋ฆฐ์ด์ง"๊ณผ ๊ฐ์ ์ข ํฉ๋ณ์๊ณผ ๋ฌด๊ดํ ๊ณณ๋ค์ด ์์=> ์ญ์
~๊ฝ๋ฐฐ๋ฌ/์๋ฃ๊ธฐ/์ฅ๋ก์์ฅ/์๋ด์/์ด๋ฆฐ์ด์ง์ ์ข ํฉ๋ณ์๊ณผ ๋ฌด๊ดํ๋ฏ๋ก ์ ๊ฑฐ~
#dropํ index์ ์ฅ
drop_row=df_seoul_hospital[df_seoul_hospital["์ํธ๋ช
"].str.contains("๊ฝ๋ฐฐ๋ฌ|์๋ฃ๊ธฐ|์ฅ๋ก์์ฅ|์๋ด์|์ด๋ฆฐ์ด์ง")].index
#index๋ฅผ ๋ฆฌ์คํธ๋ก ์ ์ฅ
drop_row=drop_row.tolist()
drop_row
~์์์ผ๋ก ๋๋๋ ๋ฐ์ดํฐ๋ ์ข ํฉ๋ณ์์ผ๋ก ๋ณผ ์ ์์ผ๋ฏ๋ก ์ ๊ฑฐ~
#dropํ index์ ์ฅ
drop_row2=df_seoul_hospital[df_seoul_hospital["์ํธ๋ช
"].str.endswith("์์")].index
#index๋ฅผ ๋ฆฌ์คํธ๋ก ์ ์ฅ
drop_row2=drop_row2.tolist()
drop_row2
#์ญ์ ํ ํ drop_row์ ํฉ์ณ์ค๋ค
drop_row=drop_row+drop_row2
print(len(drop_row))
#ํด๋น ์
์ ์ญ์ ํ๊ณ ์ญ์ ์ ๊ณผ ํ์ ํ ๊ฐฏ์ ๋น๊ต
print("์ญ์ ์ :", df_seoul_hospital.shape)
df_seoul_hospital=df_seoul_hospital.drop(drop_row, axis=0)
print("์ญ์ ํ :", df_seoul_hospital.shape)
5. ๋ถ์ ํ ์๊ฐํ
~์๊ตฐ๊ตฌ๋ช ์ ๋ฐ๋ฅธ ์ข ํฉ๋ณ์ ์ ์๊ฐํ~
df_seoul_hospital["์๊ตฐ๊ตฌ๋ช
"].value_counts().plot.bar()
-> ๊ฐ๋จ๊ตฌ, ์๋ฑํฌ๊ตฌ, ์ค๊ตฌ ์์ผ๋ก ์ข ํฉ๋ณ์ ์๊ฐ ๋ง์ ๊ฒ์ ํ์ธ
#countplot์ผ๋ก ๊ทธ๋ ค๋ณด๊ธฐ
plt.figure(figsize=(15,4))
sns.countplot(data=df_seoul_hospital, x="์๊ตฐ๊ตฌ๋ช
", order=df_seoul_hospital["์๊ตฐ๊ตฌ๋ช
"].value_counts().index)
-> ๊ทธ๋ํ๋ฅผ ํด์ํด๋ณด๋ฉด ๊ฒฐ๊ณผ๋ ๊ฐ๋ค!
๊ฒฐ๋ก
Q : ์์ธ์ ์ข ํฉ๋ณ์์ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ด ์์๊น?
- ๊ฐ๋จ๊ตฌ, ์๋ฑํฌ๊ตฌ, ์ค๊ตฌ, ์์ฒ๊ตฌ ์์ผ๋ก ์ข ํฉ๋ณ์์ด ๋ง์ด ๋ถํฌ๋์ด ์๋ค.
- ๊ฐ๋จ๊ตฌ์ ์ข ํฉ๋ณ์์ด ์๋์ ์ผ๋ก ๋ง์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์ ์ข ํฉ๋ณ์์ด ์์ธ์ ๊ณจ๊ณ ๋ฃจ ๋ถํฌ๋์ด ์์ง๋ ์๋ค๊ณ ํ ์ ์๋ค.
'๐ ๋ฐ์ดํฐ ๋ถ์ > 04. Data Analysis' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋น ๋ฐ์ดํฐ] KT ๋ฐ์ดํฐ ๋ง์ผ (0) | 2022.04.07 |
---|---|
[๋น ๋ฐ์ดํฐ] ํตํฉ ๋ฐ์ดํฐ ์ง๋(๋น ๋ฐ์ดํฐ ํ๋ซํผ) ์๊ฐ (0) | 2022.04.06 |
[A/B ํ ์คํธ] A/B ํ ์คํธ๋? (0) | 2022.03.21 |
[ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์ - ์์ธก (0) | 2022.03.21 |
[ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์ - ๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌ์ Smoothing (0) | 2022.03.20 |