(1)
import pydataset
pydataset.data('mpg')
(2)
mpg = pd.read_csv("https://raw.githubusercontent.com/sidsriv/Introduction-to-Data-Science-in-python/master/mpg.csv")
mpg = mpg.iloc[:, 1:]
mpg
#(1) class의 그룹 만들기
mpg.groupby(['manufacturer', 'class'])
mpg
#(2.1) class의 그룹 만들고 hwy 칼럼 뽑아내기
mpg.groupby(['manufacturer','class']).mean()[['hwy']]
(2) class의 그룹 만들고 hwy 칼럼 뽑아내기
mpg.groupby(['manufacturer','class']).agg(mean_hwy=('hwy', 'mean'))
(3) class의 그룹 만들고 hwy 칼럼 뽑아내기
mpg.groupby(['manufacturer', 'class'])[['hwy']].mean()
import numpy as np
(1)
mpg[(mpg['nclass'] == 'compact') | (mpg['nclass'] == 'midsize') | (mpg['nclass'] == 'suv')]
mpg.head(10)
#(2)
df[(df['class'] == 'compact') ^ (df['class'] == 'suv') ^ (df['class'] == 'midsize')]
mpg.head(10)
#(3)
mpg = mpg.rename({'class' : 'nclass'},axis = 1)
mpg.query('nclass in ["compact","midsize","suv"]')
mpg. head(20)
import pandas as pd
exam = pd.read_excel("excel_exam.xlsx")
exam
exam.rename ({"class":"nclass"}, axis =1, inplace = True)
exam.iloc[0,2] = 1
exam.iloc[1,3] = 1
exam.iloc[2,4] = 1
exam[:3]
seaborn 패키지의 boxplot()을 이용하여 상자 그림 그린다.
import seaborn as sns
sns.boxplot(data = exam, y= 'math')
df.quantile()을 이용하면 분위수를 구할 수있다.
#3사분위 구하기
exam['math'].quantile(.75)
-> 75.75
#1사분위 구하기
exam['math'].quantile(.25)
-> 45.0
#이름 정해주기
pct75 = exam['math'].quantile(.75)
pct25 = exam['math'].quantile(.25)
IQR = pct75- pct25
IQR
#상한
pct75 + 1.5 * IQR
-> 121.875
$#하한
pct25 - 1.5 * IQR
-> -1.125
import pydataset
mpg=pydataset.data('mpg')
mpg=mpg.copy()
mpg = mpg.iloc[:,1:]
mpg
(1)
mpg.cty.describe()
print(14-7.5)
print(19+7.5)
->
6.5
26.5
(2)
pct75 = mpg['cty'].quantile(.75)
pct25 = mpg['cty'].quantile(.25)
IQR = pct75- pct25
print(pct75+1.5 IQR)
print(pct25-1.5 IQR)
->
26.5
6.5
(1)
cond1 = mpg.hwy >= 40.5
cond2 = mpg.hwy <= 4.5
mpg[cond1 | cond2]
(2)
mpg.query('hwy >= 40.5 | hwy <= 4.5')
(1)
mpg.query('hwy < 40.5 | hwy > 4.5').mean()[['hwy']]
(2)
mpg.query("hwy < 40.5 | hwy > 4.5")['hwy'].mean()
->
23.44017094017094
mpg
sns.scatterplot(data = mpg, x= 'displ',y='hwy', hue='drv')
sns.scatterplot(data = mpg, x= 'displ',y='hwy', hue='drv').set(xlim=(3,6))
sns.scatterplot(data = mpg, x= 'displ',y='hwy', hue='drv')\
.set(xlim=(3,6), ylim=(10,30))
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.figsize': [6,4]})
sns.scatterplot(data = mpg, x= 'displ',y='hwy', hue='drv').set(xlim=(3,6), ylim=(10,30))
plt.savefig('tesr.png',dpi =300)
sns.barplot(data = df_mpg, x= drv, y= hwy )
df_mpg = mpg.groupby("drv")[['hwy']].mean()
df_mpg
sns.barplot(data = df_mpg.reset_index() , x= 'drv' , y= 'hwy' )
df_mpg.reset_index()
df_mpg = mpg.groupby("drv", as_index = False )[['hwy']].mean()
df_mpg
sns.barplot(data = df_mpg.reset_index() , x= 'drv' , y= 'hwy' )
df_mpg =df_mpg.sort_values(by= 'hwy', ascending = False)
df_mpg
sns.barplot(data = df_mpg, x= 'drv' , y= 'hwy' )
import pydataset
economics = pydataset.data('economics')
economics[:2]
economics.info()
sns.lineplot(data= economics, x='date', y='unemploy' )
economics['unemploy'] = economics['unemploy'].astype('float')
economics.info()
(1)
economics['date'] = economics['date'].astype('datetime64')★
economics.info()
sns.lineplot(data= economics, x='date', y='unemploy' )
(2)
economics['date'] = pd.to_datetime(economics['date'])
economics.info()
sns.boxplot(data = mpg , x= 'drv', y= 'hwy')
sns.boxplot(data = mpg , y= 'hwy')
raw_welfare =pd.read_spss("Koweps_hpwc14_2019_beta3.sav ")
raw_welfare
pip install pyreadstat
welrfare= raw_welfare.loc[:,['h14_g3','h14_g4','h14_g10','h14_g11','p1402_8aq1','h14_eco9','h14_reg7']]
welrfare
#성별과 월급의 평균 구하기
welfare.groupby('sex')[['income']].mean()
#칼럼으로 성별 만들어주기
df=welfare.groupby('sex',as_index= False)[['income']].mean()
df
#1:남자2.여자 바꿔주어라
import numpy as np
welfare['sex'] = np.where(welfare['sex'] == 1.0, 'male', 'female')
welfare[:4]
#박스그래프로 만들어주어라.
sns.barplot(data=df, x='sex', y='income')
welfare['sex'].unique()
welfare['sex'].value_counts()
welfare['sex'].describe()
#birth의 최대 최솟값 찾기.
min(welfare.birth)
max(welfare.birth)
#age열 만들어 주세요. 2018년생 1살, 2017년 2살
welfare['age']= 2019 - welfare['birth']
welfare[:2]
welfare.isna().sum()
#age열의 타입을 정수로 바꿔주세요.
welfare['age']= welfare['age'].astype('int')
welfare[['age']]
#나이별로 소득 평균 구해 주세요.
welfare.groupby(['age']).mean()[['income']]
df=welfare.groupby('age').agg('mean')[['income']]
df[:2]
df = df.reset_index()
df
sns.lineplot(data=df, x= 'age', y= 'income')
다양한 데이터 분석의 세계{p276}
텍스트 마이닝{p278}
워드 클라우드 만들기