四、练习

Ex1:美国非法药物数据集

现有一份关于美国非法药物的数据集,其中 SubstanceName, DrugReports 分别指药物名称和报告数量:

In [64]: df = pd.read_csv('data/drugs.csv').sort_values([
   ....:      'State','COUNTY','SubstanceName'],ignore_index=True)
   ....: 
In [65]: df.head(3)
Out[65]: 
   YYYY State COUNTY  SubstanceName  DrugReports
0  2011    KY  ADAIR  Buprenorphine            3
1  2012    KY  ADAIR  Buprenorphine            5
2  2013    KY  ADAIR  Buprenorphine            4
  1. 将数据转为如下的形式:
  2. 将第1问中的结果恢复为原表。
  3. State 分别统计每年的报告数量总和,其中 State, YYYY 分别为列索引和行索引,要求分别使用 pivot_table 函数与 groupby+unstack 两种不同的策略实现,并体会它们之间的联系。

Ex2:特殊的wide_to_long方法

从功能上看, melt 方法应当属于 wide_to_long 的一种特殊情况,即 stubnames 只有一类。请使用 wide_to_long 生成 melt 一节中的 df_melted 。(提示:对列名增加适当的前缀)

In [66]: df = pd.DataFrame({'Class':[1,2],
   ....:                   'Name':['San Zhang', 'Si Li'],
   ....:                   'Chinese':[80, 90],
   ....:                   'Math':[80, 75]})
   ....: 
In [67]: df
Out[67]: 
   Class       Name  Chinese  Math
0      1  San Zhang       80    80
1      2      Si Li       90    75