用dataframe对不同年纪不同上网时长段进行统计并绘制饼状统计图,每个分类不同颜色
时间: 2024-01-16 09:04:39 浏览: 103
绘制直方图-pandas,matplotlib,numpy详解
假设你已经有了一个名为`df`的DataFrame,其中包含了不同年龄段和上网时长的数据,你可以按照如下方式进行统计和绘制饼状图:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 创建示例数据
data = {
'Age': [18, 18, 22, 22, 30, 30, 35, 35],
'Duration': [0, 1, 0, 1, 0, 1, 0, 1]
}
df = pd.DataFrame(data)
# 按照年龄和上网时长分组,并计算每组的计数
grouped = df.groupby(['Age', 'Duration']).size().reset_index(name='Counts')
# 将每个分类的颜色定义为一个列表
colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']
# 绘制饼状图
fig, ax = plt.subplots()
for i, age in enumerate(grouped['Age'].unique()):
sub_df = grouped[grouped['Age'] == age]
counts = sub_df['Counts'].tolist()
labels = sub_df['Duration'].tolist()
ax.pie(counts, labels=labels, colors=colors[i % len(colors)], startangle=90, autopct='%1.1f%%', radius=1-i*0.15, wedgeprops=dict(width=0.15, edgecolor='w'))
ax.set(aspect="equal", title=f"Statistics for Age {age}")
# 显示图形
plt.show()
```
这个例子中,我们首先创建了一个示例数据,它包含了年龄和上网时长两个变量。然后按照这两个变量进行分组,并计算每个组的计数。接下来,我们将每个分类的颜色定义为一个列表,并使用`ax.pie()`函数绘制饼状图。最后,我们使用`plt.show()`函数显示图形。
注意,我们使用了一个`for`循环来绘制每个年龄的饼状图,并根据半径和颜色来区分不同的年龄段。你可以根据自己的数据进行修改和调整。
阅读全文