使用在校生数据集, 利用 seaborn 包分别作: 1. 该校男生,女生分别有多少人,并画出饼图 2. 该校各个省分别有多少人,并画出柱型图 3. 该校各个省男女生分别有多少人,并画出堆积条形图和分组条形图
时间: 2024-10-14 10:16:12 浏览: 20
在Python中,我们可以使用Seaborn库结合pandas来进行数据可视化。假设我们有一个名为`student_data.csv`的校生数据集,其中包含学生性别和省份信息。以下是步骤:
1. 统计并绘制饼图:
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
data = pd.read_csv('student_data.csv')
# 分别计算男生和女生的人数
gender_counts = data.groupby('gender')['gender'].count()
plt.figure(figsize=(8,6))
sns.countplot(x='gender', data=data, labels=gender_counts.index, autopct='%1.1f%%')
plt.title('该校男生和女生人数比例')
plt.show()
```
2. 绘制柱状图显示各省份人数:
```python
province_counts = data.groupby('province')['gender'].count()
plt.figure(figsize=(10,6))
sns.barplot(x=province_counts.index, y=province_counts.values)
plt.title('该校各省份人数')
plt.xlabel('省份')
plt.ylabel('人数')
plt.show()
```
3. 绘制堆积条形图和分组条形图(展示各省份男女学生分布):
```python
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(15,6))
stacked_bar = data.groupby(['province', 'gender']).size().unstack(fill_value=0)
sns.barplot(ax=ax1, data=stacked_bar, stacked=True)
ax1.set_title('该校各省份男女学生堆积条形图')
grouped_bar = stacked_bar.plot(kind='bar', stacked=False, ax=ax2)
ax2.set_title('该校各省份男女学生分组条形图')
ax2.yaxis.tick_left() # 移除右边y轴标签以避免重叠
plt.tight_layout()
plt.show()
```
这里,第一个图表展示了每个省份男女人数的累积情况,而第二个图表则分开显示男女人数。
阅读全文