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
我是 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