import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mpimg def test(): data_url = "/data/workspace/myshixun/step1/train.csv" df = pd.read_csv(data_url) S=df[df.Survived==1] D=df[df.Survived==0] #绘制根据S、D的前9列数据绘制直方图 ########## Begin ########## ########## Begin ########## plt.savefig('/data/workspace/myshixun/step1/picture2/直方图.png') #sex = df.groupby('Sex')['Survived'].sum() #绘制柱状图 sexNew = df.groupby(['Sex','Survived'])['Survived'].count().unstack() ########## Begin ########## ########## End ########## plt.savefig('/data/workspace/myshixun/step1/picture2/柱状图.png') plt.show() img1=mpimg.imread('/data/workspace/myshixun/step1/picture2/直方图.png') img2=mpimg.imread('/data/workspace/myshixun/step1/picture2/柱状图.png') plt.subplot(121),plt.imshow(img1) plt.subplot(122),plt.imshow(img2) plt.savefig("/data/workspace/myshixun/step1/picture2/特征选择.png")
时间: 2025-06-24 10:39:37 浏览: 13
### 绘制直方图和柱状图并保存图片
以下是实现根据 `Survived` 列的数据绘制直方图和柱状图,并将图表保存为图片文件的具体方法:
#### 导入必要的库
为了完成此任务,需要导入以下 Python 库:
```python
import pandas as pd
import matplotlib.pyplot as plt
```
#### 加载数据
通过 Pandas 的 `read_csv` 方法加载 CSV 文件中的数据[^1]。
```python
data_url = "/data/workspace/myshixun/step1/train.csv"
df = pd.read_csv(data_url)
```
#### 数据分割
基于 `Survived` 列的值(0 或 1),将数据分为两部分:生存者 (`S`) 和未生存者 (`D`)。
```python
S = df[df.Survived == 1]
D = df[df.Survived == 0]
```
#### 绘制直方图
使用 Matplotlib 的 `hist` 函数分别绘制生存者和未生存者的某列数据分布情况。假设我们关注的是第 9 列数据,则可以按如下方式操作:
```python
plt.figure(figsize=(8, 6)) # 设置图形大小
plt.hist(S.iloc[:, 9], alpha=0.5, label='Survived', bins=20) # 生存者直方图
plt.hist(D.iloc[:, 9], alpha=0.5, label='Not Survived', bins=20) # 未生存者直方图
plt.legend(loc='upper right') # 添加图例
plt.title('Histogram of Column 9 by Survival Status')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 保存直方图为 PNG 文件
plt.savefig('/data/workspace/myshixun/step1/picture2/直方图.png', dpi=300)
plt.close()
```
#### 绘制柱状图
利用 Pandas 提供的分组功能计算性别与存活状态的关系,并将其绘制成柱状图:
```python
sexNew = df.groupby(['Sex', 'Survived'])['Survived'].count().unstack()
# 创建柱状图
sexNew.plot(kind='bar', figsize=(8, 6))
plt.title('Survival Count by Gender and Survival Status')
plt.xlabel('Gender')
plt.ylabel('Count')
# 保存柱状图为 PNG 文件
plt.savefig('/data/workspace/myshixun/step1/picture2/柱状图.png', dpi=300)
plt.close()
```
#### 显示图像
如果希望在同一窗口显示两张图像,可采用子图布局的方式:
```python
img1 = plt.imread('/data/workspace/myshixun/step1/picture2/直方图.png')
img2 = plt.imread('/data/workspace/myshixun/step1/picture2/柱状图.png')
plt.figure(figsize=(12, 6))
plt.subplot(121), plt.imshow(img1), plt.axis('off'), plt.title('Histogram')
plt.subplot(122), plt.imshow(img2), plt.axis('off'), plt.title('Bar Chart')
# 将组合后的图像保存到指定路径
plt.savefig("/data/workspace/myshixun/step1/picture2/特征选择.png", bbox_inches='tight', dpi=300)
plt.close()
```
以上代码实现了从数据处理到可视化再到图像保存的一系列流程。
---
阅读全文
相关推荐


















