python - 如何使用标准迭代数据框并绘制结果?
问题描述
我有一个 df,其中包含过去 6 个月的数据。我想将其拆分为 7 个独特的数据框,每个数据框都包含给定日期的数据。星期一、星期二等。我已经有一个名为“工作日”的专栏来帮助解决这个问题。
这是我正在使用的数据:
+---+------------+----------+-----------+------------+
| | Date | Activity | Weekday | Hours |
+---+------------+----------+-----------+------------+
| 0 | 2020-06-01 | Gen Ab | Monday | 347.250000 |
| 1 | 2020-06-02 | Gen Ab | Tuesday | 286.266667 |
| 2 | 2020-06-03 | Gen Ab | Wednesday | 169.583333 |
| 3 | 2020-06-04 | Gen Ab | Thursday | 312.633333 |
| 4 | 2020-06-05 | Gen Ab | Friday | 317.566667 |
| 5 | 2020-06-08 | Gen Ab | Monday | 285.800000 |
| 6 | 2020-06-09 | Gen Ab | Tuesday | 213.166667 |
+---+------------+----------+-----------+------------+
这段代码不起作用,但这是我想要完成的:
day = grouped['Weekday'].unique()
for day in day:
f"df_{str(day)}" = grouped.loc[(grouped['Activity'] == 'Gen Ab')
& (grouped['Weekday'].isin([f'{day}']))].reset_index(drop=True)
格式化的字符串将是新 df 的名称。所以“df_Monday”、“df_Tuesday”等。
.isin 也使用格式化字符串,因为我每天都在过滤。
最后,我想将每个数据帧绘制成折线图,这样我们就可以看到每天的数据。
我确信有更好的方法来绘制数据(我的最终目标),但我也想知道如何在这里执行这个循环,以防我将来想使用类似的东西。
任何人都可以帮助解决这两个问题吗?
解决方案
如果您的最终目标只是情节,也许是这样的(结果情节绝对可以美化):
import matplotlib.pyplot as plt
...
fig, ax = plt.subplots()
for day in df['Weekday'].unique():
temp_df = df[(df['Weekday'] == day) & (df['Activity'] == 'Gen Ab')]
ax.plot('Date', 'Hours', data=temp_df, label=day)
ax.legend(loc='upper right')
fig.autofmt_xdate()
样本输出:
推荐阅读
- ruby - 如何修复未初始化的常量 Fluent::TailInput (NameError)?
- android - 如何在颤动中禁用来自其他应用程序的通知
- c# - 当使用 CancellationTokenSource 作为 while 循环的一部分时,我是否总是需要使用 Token?
- opengl - 在OpenGL中,当我使用VAO绘制对象时,如何通过名称堆栈选择对象?
- python - 有没有办法只使用特定的键值对来遍历 python 字典?
- php - 类 Company\Module\Console\ImageImportConsole\Interceptor 不存在
- node.js - 如何用nodejs覆盖ngnix ssl?
- java - 为什么石英无法创建/删除作业?
- python - ValueError 预期的单例 many2many 字段
- python - 组件图与每月季节性的 df_pred 不一致