假设有一个包含学生姓名、年级和上网时长段的 DataFrame,要求对不同的年纪做上网时长段的统计,并绘制成一张条形图
时间: 2024-02-12 12:03:53 浏览: 68
可以使用 Pandas 库和 Matplotlib 库来完成这个任务。下面是一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'Grade': [1, 2, 2, 3, 3],
'Internet Time': ['<1 hour', '1-2 hours', '2-3 hours', '3-4 hours', '>4 hours']}
df = pd.DataFrame(data)
# 按年级和上网时间段分组,并统计人数
grouped = df.groupby(['Grade', 'Internet Time'])['Name'].count()
# 重塑数据,以年级为行,上网时间段为列,人数为值
grouped = grouped.unstack()
# 绘制条形图
grouped.plot(kind='bar', stacked=True)
# 设置坐标轴标签和图例
plt.xlabel('Grade')
plt.ylabel('Count')
plt.legend(title='Internet Time', loc='upper right')
# 显示图形
plt.show()
```
这段代码首先创建了一个包含学生姓名、年级和上网时长段的 DataFrame。然后使用 `groupby()` 函数按年级和上网时间段分组,并统计人数。接着使用 `unstack()` 函数将数据重塑为以年级为行,上网时间段为列,人数为值的形式。最后使用 `plot()` 函数绘制条形图,并设置坐标轴标签和图例。最后调用 `show()` 函数显示图形。
阅读全文