pandas——变形

pandas——变形

  • 问题
    • 问题一
    • 问题二
  • 练习
    • 练习一
    • 练习二

问题

问题一

【问题一】 上面提到了许多变形函数,如melt/crosstab/pivot/pivot_table/stack/unstack函数,请总结它们各自的使用特点。

  1. **melt:**是pivot()逆转操作函数。
    pandas——变形_第1张图片

  2. **crosstab:**用于分组统计。但比groupby()函数显示更加直观。

  3. **pivot:**将长数据集转换为宽数据集(对数据进行分类,能够更加直观的看到一些分类下的信息。)

  4. **pivot_table:**通过设置不同的index,能够直观的通过生成的表去获得想要的数据。

  5. **stack:**便于对分类数据的每个类别进行统计。将列旋转到行
    pandas——变形_第2张图片

  6. **unstack:**行旋转到列
    pandas——变形_第3张图片

问题二

【问题二】 变形函数和多级索引是什么关系?哪些变形函数会使得索引维数变化?具体如何变化?
变形函数也是多级索引的一种。都是通过建立多个索引去展示数据。

练习

练习一

继续使用上一篇的药物数据集:
(a)现在请你将数据表转化成如下形态,每行需要显示每种药物在每个地区的10年至17年的变化情况,且前三列需要排序

df=pd.read_csv('data/Drugs.csv')
result = pd.pivot_table(df,index=['State','COUNTY','SubstanceName']
                 ,columns='YYYY'
                 ,values='DrugReports',fill_value='-').reset_index()
result.head()

pandas——变形_第4张图片
(b)现在请将(a)中的结果恢复到原数据表,并通过equal函数检验初始表与新的结果是否一致(返回True)

练习二

现有一份关于某地区地震情况的数据集,请解决如下问题:

pd.read_csv('data/Earthquake.csv').head()

pandas——变形_第5张图片
(a)现在请你将数据表转化成如下形态,将方向列展开,并将距离、深度和烈度三个属性压缩:

df1=pd.read_csv('data/Earthquake.csv')
result1 = pd.pivot_table(df1,index=['日期','时间','维度','经度']
                 ,columns='方向'
                 ,values=['深度','烈度','距离'],fill_value='-').stack(level=0).rename_axis(index={
     None:'地震参数'})
result1.head()
# rename_axis是针对多级索引的方法,作用是修改某一层的索引名,而不是索引标签
# rename方法用于修改列或者行索引标签,而不是索引名:

pandas——变形_第6张图片

(b) 现在请将(a)中的结果恢复到原数据表,并通过equal函数检验初始表与新的结果是否一致(返回True)

你可能感兴趣的:(pandas,python)