Python 在分析这些数据时,我哪里出错了?

Python 在分析这些数据时,我哪里出错了?,python,pandas,dataframe,matplotlib,Python,Pandas,Dataframe,Matplotlib,试图找出出席人数的趋势。我将我现有的df过滤到这个,这样我可以一次查看1个活动 +---+-----------+-------+----------+-------+---------+ | | Date | Org | Activity | Hours | Weekday | +---+-----------+-------+----------+-------+---------+ | 0 | 8/3/2020 | Org 1 | Gen Ab | 10.5 |

试图找出出席人数的趋势。我将我现有的df过滤到这个,这样我可以一次查看1个活动

+---+-----------+-------+----------+-------+---------+
|   |   Date    |  Org  | Activity | Hours | Weekday |
+---+-----------+-------+----------+-------+---------+
| 0 | 8/3/2020  | Org 1 | Gen Ab   | 10.5  | Monday  |
| 1 | 8/25/2020 | Org 1 | Gen Ab   | 2     | Tuesday |
| 3 | 8/31/2020 | Org 1 | Gen Ab   | 8.5   | Monday  |
| 7 | 8/10/2020 | Org 2 | Gen Ab   | 1     | Monday  |
| 8 | 8/14/2020 | Org 3 | Gen Ab   | 3.5   | Friday  |
+---+-----------+-------+----------+-------+---------+
此代码:

gen_ab = att_df.loc[att_df['Activity'] == "Gen Ab"]
sum_gen_ab = gen_ab.groupby(['Date', 'Activity']).sum()
sum_gen_ab.head()
返回以下内容:

+------------+----------+------------+
|            |          |   Hours    |
+------------+----------+------------+
| Date       | Activity |            |
| 06/01/2020 | Gen Ab   | 347.250000 |
| 06/02/2020 | Gen Ab   | 286.266667 |
| 06/03/2020 | Gen Ab   | 169.583333 |
| 06/04/2020 | Gen Ab   | 312.633333 |
| 06/05/2020 | Gen Ab   | 317.566667 |
+------------+----------+------------+
如何使汇总列名为“小时”?当我这样做时,仍然会得到相同的结果:

sum_gen_ab['Hours'] = gen_ab.groupby(['Date', 'Activity']).sum()
我最终想做的是绘制一个折线图,显示活动在一段时间内的小时数总和。时间当然是我df中的日期

plt.plot(sum_gen_ab['Date'], sum_gen_ab['Hours'])
plt.show()

使用
groupby(['Date',Activity'])后返回KeyError:Date

日期和活动已转换为索引,不能用
sum\u gen\u ab['Date']引用


为了避免将它们转换为索引,您可以使用
groupby(['Date',Activity',as_index=False)


为了避免将它们转换为索引,您可以使用
groupby(['Date','Activity',as_index=False)

我通常使用pandasql库将数据帧操作到不同的数据集中。这允许您使用SQL代码操作数据帧。Pandasql可以与熊猫一起使用

例如:

import pandas as pd
import pandasql as psql

df = "will be your dataset"


new_dataset = psql.sqldf('''
SELECT DATE, ACTIVITY, SUM(HOURS) as SUM_OF_HOURS
FROM df
GROUP BY DATE, ACTIVITY''')

new_dataset.head() #Shows the first 5 rows of your dataset

我通常会使用pandasql库将数据帧操作到不同的数据集中。这允许您使用SQL代码操作数据帧。Pandasql可以与熊猫一起使用

例如:

import pandas as pd
import pandasql as psql

df = "will be your dataset"


new_dataset = psql.sqldf('''
SELECT DATE, ACTIVITY, SUM(HOURS) as SUM_OF_HOURS
FROM df
GROUP BY DATE, ACTIVITY''')

new_dataset.head() #Shows the first 5 rows of your dataset

谢谢你分享这个图书馆。我没有将其用于此解决方案,但我现在肯定可以在将来使用它。感谢您共享此库。我没有在这个解决方案中使用它,但我现在肯定可以在将来使用它,因为_index=False
起作用了。你能告诉我我最初的结果叫什么吗?我是说它的标题是“小时”之类的。我不知道你的意思。第一个结果按日期和活动分组,默认情况下,这会将分组依据的列转换为索引。我不知道它是否有一个特定的名称。使用
as_index=False
有效。你能告诉我我最初的结果叫什么吗?我是说它的标题是“小时”之类的。我不知道你的意思。第一个结果按日期和活动分组,默认情况下,这会将分组依据的列转换为索引。我不知道它是否有一个特定的名字。