import pandas as pd
import numpy as np
df = pd.read_csv("Data/gapminder.tsv", sep ='\t')
df
df.head()
df.columns
df.iloc[-1]
# 1.100, 1000번행 추출
df.loc[1]
df.loc[[1,100,1000]]
df.head()
#df pop, year 열
#[]
df.loc[:,['year','pop']]
df.iloc[:,[2,4,-1]]
df.iloc[:,list(range(5))] #열이 list형
#list(range(5))
df.iloc[:,:3]
df.iloc[:,0:6:2] # 0번부터 6까지 2씩증가
#df 의 1번 10번 100번행의 2번 4번 열을 추출
df.iloc[[1,10,100],[2,4]]
df.loc[[1,10,100],['year','pop']]
df
#lifeExp 열을 연도별로 그룹화하여 평균을 구하여라
df.groupby(by='year')['lifeExp'].mean()
#lifeExp, gdpPercap열의 평균값을 연도, 지역별로 그룹화하여 계산
# 1952 asia
#df.groupby(by=['year','continent'])['lifeExp','gdpPercap'].mean()
df.groupby(by=['year','continent'])[['lifeExp','gdpPercap']].mean()
#대륙별 국가의 개수 출력
#df['country'].unique()
#df.groupby('continent')['country'].count()
df.groupby('continent')['country'].nunique() # 숫자는 앞에 n
import seaborn as sns
anscombe=sns.load_dataset("anscombe")
anscombe
#'통계치로만 데이터를 해석하지 말아라 ! dataset'
anscombe.describe()#기술통계
anscombe #dataset 단위로 x 및 y의 평균을 출력
# print(anscombe.groupby('dataset')[['x','y']].mean())
# print(anscombe.groupby('dataset')[['x','y']].std())
# print(anscombe.groupby('dataset')[['x','y']].var())
anscombe
import matplotlib.pyplot as plt
df1=anscombe[anscombe['dataset']=='I']
df2=anscombe[anscombe['dataset']=='II']
df3=anscombe[anscombe['dataset']=='III']
df3 =anscombe[anscombe['dataset']=='IV']
fig= plt.figure()
axes1 = fig.add_subplot(2,2,1)#figure 종이 한장 axes 축 axis 축들
axes2 = fig.add_subplot(2,2,2)
axes3 = fig.add_subplot(2,2,3)
axes4 = fig.add_subplot(2,2,4)
axes1.plot(d1['x'],d1['y'],'o')
axes2.plot(d2['x'],d2['y'],'o')
axes3.plot(d3['x'],d3['y'],'o')
axes4.plot(d4['x'],d4['y'],'o')
axes1.set_title('data1')
axes2.set_title('data2')
axes3.set_title('data3')
axes4.set_title('data4')
fig.tight_layout()
fig
#feature enginnering(특성공학)
#기존변수 ->새로운 변수 생성..
sns.load_dataset('titanic').columns
# y = f(x)
# 점수 = f(공부시간) 종속변수 = f(독립변수)
#survived=f(pclass)
# mean()
# 특이값 (outlieres) = (q3-q1)*1.5 범위를 벗어나는 수
# 특이값은 제거
tips=sns.load_dataset('tips')
sp=plt.figure()
axes1 = sp.add_subplot(1,1,1)
axes1.scatter(tips['total_bill'],tips['tip'])
#feature enginnering(특성공학)
#기존변수 ->새로운 변수 생성..
sns.load_dataset('titanic')
df1=pd.read_csv('Data/concat_1.csv')
df2=pd.read_csv('Data/concat_2.csv')
df3=pd.read_csv('Data/concat_3.csv')
df3
pd.concat([df1,df2,df3],ignore_index=True,axis=1)
#axis=0 default(행방향 연결)
#axis=1 default(열방향 연결)
person = pd.read_csv('Data/survey_person.csv')
print(person)
print("="*50)
site = pd.read_csv('Data/survey_site.csv')
print(site)
print("="*50)
survey = pd.read_csv('Data/survey_survey.csv')
print(survey)
print("="*50)
visited = pd.read_csv('Data/survey_visited.csv')
print(visited)
print("="*50)
visited
visitedSubset=visited.loc[[0,2,6],]
visitedSubset
o2oMerge = site.merge(visitedSubset,left_on='name',right_on='site')
o2oMerge
#site 의 name과 visited의 site를 기준으로 머지
o2oMerge = site.merge(visited,left_on='name',right_on='site')
o2oMerge
# person의 ident와 survey의 person을 기준으로 병합
ps = person.merge(survey,left_on='ident',right_on='person')
ps
vs = visited.merge(survey,left_on='ident',right_on='taken')
vs
print(ps)
print('='*50)
print(vs)
psvs=ps.merge(vs,left_on=['ident','taken','quant','reading'],right_on=['person','ident','quant','reading'])
psvs