Python Pandas 数据框年同比比较

Python Pandas Dataframe year over year comparison

我是 Pandas 的新手,但有非常强大的 SQL 背景。我实际上知道如何在 Excel 和 SQL 中执行此操作,但想在 Pandas 中查看如何执行此操作以帮助我学习。我尝试在 'Python for Data Analysis' 中提前阅读,我是 Pandas 的 Coursera 课程的 1/2,但这远远超出了我的技能范围。

我想在 Pandas 中看到如何做的是我们为客户制造某些零件所花费的时间的逐年变化。

输出将如下所示:

Year  Shipped_Part_No  Shipped_Part_Rev  Labor_Hours       Gross Margin
                                        Min Max Avg Sdev   Min Max Avg Sdev
2013  Widget1           AM              0   3   2.1  1.8  -.18  .1  .18  .18
2014  Widget1           AM              2   7   2.9  1.2  -.1   .2  .28  .11
2015  Widget1           AM              1   2   2.2  1.4  -.13  .3  .81  .12

据我所知,我需要将索引设置为 ['Shipped_Part_No'] 和 ['Shipped_Part_Rev'],然后进行一些分组和 运行 一些聚合函数。

我乐于接受任何关于如何思考或显示它以提高可读性的指示 - 我的思想是如此 SQL 专注我很难看到如何使用数据框完成它。

我有一个来自我编写的 SQL 查询的 CSV 输出文件,文件在这里:

https://drive.google.com/open?id=0B4xdnV0LFZI1czBUT19YanVPNFk

通常我会 post 一些我至少尝试过的代码,但它总是失败,所以我认为它没有帮助。

我在 Windows PC 上使用 Python 3.5 运行ning Anaconda。

试试这个:

In [168]: (df.groupby([df.Ship_Date.dt.year,'Shipped_Part_No', 'Shipped_Part_Rev'])
     ...:     [['Labor_Hours','Gross_Margin']]
     ...:    .agg(['min','max','mean','std']))
     ...:
Out[168]:
                                           Labor_Hours                      Gross_Margin
                                                   min max  mean        std          min   max  mean  std
Ship_Date Shipped_Part_No Shipped_Part_Rev
2013      Widget1         AM                         9  68  38.5  41.719300        -0.11 -0.11 -0.11  0.0
2014      Widget1         AM                         2   6   4.0   2.828427        -0.11 -0.11 -0.11  0.0
2015      Widget1         AM                         1  43  10.6  18.174157        -0.11 -0.11 -0.11  0.0

PS 上面的解决方案假设 Ship_Date 列是 datetime-like dtype