第三章 分组(续)
……
第四章 变形
import pandas as pd
import numpy as np
df=pd.read_csv('C:/Users/优岚/Desktop/data/Drugs.csv').sort_index()
df
#(a) 现在请你将数据表转化成如下形态,每行需要显示每种药物在每个地区的10年至17年的变化情况,且前三列需要排序
df_p=pd.pivot_table(df,index=['State','COUNTY','SubstanceName'],columns='YYYY',values='DrugReports',fill_value='-')\
.reset_index().sort_values(by=['State','COUNTY','SubstanceName'])
df_p
#(b) 现在请将(a)中的结果恢复到原数据表,并通过equal函数检验初始表与新的结果是否一致(返回True)
df_new= df_p.reset_index().melt(id_vars=['State','COUNTY','SubstanceName'],value_vars=df_p.columns[-8:],value_name='DrugReports').dropna().sort_index().set_index(['State','COUNTY','SubstanceName']).reset_index()
order = ['YYYY', 'State', 'COUNTY', 'SubstanceName', 'DrugReports'] #整理列的顺序
df_new= df[order]
df_new.equals(df)
改了好多遍,终于true了(!)
import pandas as pd
import numpy as np
df=pd.read_csv('C:/Users/优岚/Desktop/data/Earthquake.csv').sort_values('日期').sort_index().reset_index()
df.head()
#(a) 现在请你将数据表转化成如下形态,每行需要显示每种药物在每个地区的10年至17年的变化情况,且前三列需要排序
df_p=pd.pivot_table(df,index=['State','COUNTY','SubstanceName'],columns='YYYY',values='DrugReports',fill_value='-')\
.reset_index().sort_values(by=['State','COUNTY','SubstanceName']).rename_axis(columns={'YYYY':''})
df_p.head()
#(b) 现在请将(a)中的结果恢复到原数据表,并通过equal函数检验初始表与新的结果是否一致(返回True)
df_new= df_p.reset_index().melt(id_vars=['State','COUNTY','SubstanceName'],value_vars=df_p.columns[-8:],value_name='DrugReports').dropna().sort_index().set_index(['State','COUNTY','SubstanceName']).reset_index()
order = ['YYYY', 'State', 'COUNTY', 'SubstanceName', 'DrugReports']
df_new= df[order]
df_new.equals(df)
第五章 合并
import pandas as pd
import numpy as np
df1=pd.read_csv('C:/Users/优岚/Desktop/data/Employee1.csv')
df2=pd.read_csv('C:/Users/优岚/Desktop/data/Employee2.csv')
#(a) 每个公司有多少员工满足如下条件:既出现第一张表,又出现在第二张表。
df1_namelist=df1['Name'].values.tolist()
df2_namelist=df2['Name'].values.tolist()
re=[x for x in df1_namelist if x in df2_namelist]
re
#(b) 将所有不符合(a)中条件的行筛选出来,合并为一张新表,列名与原表一致。
df = pd.concat([df1,df2])
df_pick = df[~df['Name'].isin(re)].reset_index()
df_pick.head()
(c)看不懂在问什么……百度了一下(噢 我不会写循环
……
还有两题没写,有缘再写吧
[ 该会的会了,不会的就不会了→百度真是个好东西 ]