设立独立的函数读取文件soi_dropnan.txt,利用第三步统计结果最大值maxValue、最小值minValue,利用category=[min Value, 0, maxValue]和 labels=[NinoRelate',LaNinaRelate,]将SOI进行离散化;并将离散化结果作为一个新的列Label 添加到原始数据集,并保存为soi dropnan_result.csv,从左到右三个列名分别为Date、SOI、Label;根据离散化结果画出饼状图,保存为soi_pie.png,要求分辨率不低于300pi。
时间: 2024-01-24 19:17:13 浏览: 69
以下是实现该功能的Python代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取文件
data = pd.read_csv('soi_dropnan.txt', delim_whitespace=True, header=None, names=['Date', 'SOI'])
# 统计最大值和最小值
maxValue = data['SOI'].max()
minValue = data['SOI'].min()
# 离散化
category = [minValue, 0, maxValue]
labels = ['NinoRelate', 'LaNinaRelate']
data['Label'] = pd.cut(data['SOI'], bins=category, labels=labels)
# 保存结果
data.to_csv('soi_dropnan_result.csv', index=False, columns=['Date', 'SOI', 'Label'])
# 画饼状图
pie_data = data.groupby('Label').size()
pie_data.plot(kind='pie', autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.legend()
plt.savefig('soi_pie.png', dpi=300)
```
在这段代码中,我们首先使用pandas库读取了原始数据集。然后,我们使用`max()`和`min()`方法统计了SOI列的最大值和最小值,并将结果保存在`maxValue`和`minValue`变量中。接下来,我们使用`pd.cut()`方法对SOI列进行离散化,并根据离散化结果添加了一个新的列Label。最后,我们将结果保存为CSV文件,并使用matplotlib库画了一个饼状图,并将其保存为PNG图像文件。
阅读全文