xlsx表读取三个区(A,B,C)整年数据任选进出水——COD,氨氮,总磷,总氮中的一项数据, 按日期将其划分为四个季节,最终绘制四季三水厂的趋势对比图(使用四种不同的表)
时间: 2024-03-24 13:36:50 浏览: 15
好的,我可以帮你解决这个问题。首先,你需要安装 pandas、openpyxl、matplotlib 等库。然后,你可以按照以下步骤进行操作:
1. 使用 pandas 库读取 xlsx 文件,将三个区的数据读取到 DataFrame 中。
```python
import pandas as pd
df = pd.read_excel('data.xlsx', sheet_name='Sheet1', header=0)
```
2. 从 DataFrame 中选择需要的数据列,例如 COD。
```python
df_cod = df[['日期', 'A厂COD', 'B厂COD', 'C厂COD']]
```
3. 将日期转换为季节,并将数据按季节分组。
```python
df_cod['季节'] = pd.cut(df_cod['日期'].dt.month, [0, 3, 6, 9, 12], right=False, labels=['春季', '夏季', '秋季', '冬季'])
grouped = df_cod.groupby('季节')
```
4. 创建四个 DataFrame,分别存储每个季节的数据。
```python
df_cod_spring = grouped.get_group('春季')
df_cod_summer = grouped.get_group('夏季')
df_cod_autumn = grouped.get_group('秋季')
df_cod_winter = grouped.get_group('冬季')
```
5. 将每个季节的数据保存到四个不同的表格中。
```python
with pd.ExcelWriter('output.xlsx') as writer:
df_cod_spring.to_excel(writer, sheet_name='春季', index=False)
df_cod_summer.to_excel(writer, sheet_name='夏季', index=False)
df_cod_autumn.to_excel(writer, sheet_name='秋季', index=False)
df_cod_winter.to_excel(writer, sheet_name='冬季', index=False)
```
6. 使用 matplotlib 库绘制四季三水厂的趋势对比图。
```python
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(df_cod_spring['日期'], df_cod_spring['A厂COD'], label='A厂春季')
ax.plot(df_cod_spring['日期'], df_cod_spring['B厂COD'], label='B厂春季')
ax.plot(df_cod_spring['日期'], df_cod_spring['C厂COD'], label='C厂春季')
ax.plot(df_cod_summer['日期'], df_cod_summer['A厂COD'], label='A厂夏季')
ax.plot(df_cod_summer['日期'], df_cod_summer['B厂COD'], label='B厂夏季')
ax.plot(df_cod_summer['日期'], df_cod_summer['C厂COD'], label='C厂夏季')
ax.plot(df_cod_autumn['日期'], df_cod_autumn['A厂COD'], label='A厂秋季')
ax.plot(df_cod_autumn['日期'], df_cod_autumn['B厂COD'], label='B厂秋季')
ax.plot(df_cod_autumn['日期'], df_cod_autumn['C厂COD'], label='C厂秋季')
ax.plot(df_cod_winter['日期'], df_cod_winter['A厂COD'], label='A厂冬季')
ax.plot(df_cod_winter['日期'], df_cod_winter['B厂COD'], label='B厂冬季')
ax.plot(df_cod_winter['日期'], df_cod_winter['C厂COD'], label='C厂冬季')
ax.legend()
plt.show()
```
这样,你就可以得到四个不同的表格和一个趋势对比图了。你可以按照这个思路,将氨氮、总磷、总氮中的一项数据也进行处理。