繁体   English   中英

如何在x轴上使用日期并在y轴上使用降雨量来使用matplotlib过滤CSV?

[英]How to filter csv with matplotlib using dates on the x-axis and rainfall on the y-axis?

我有一个csv文件,其中所有两列都显示为“日期”,另一列的降雨量为英寸(称为“降雨”)。 我不确定该怎么做,到目前为止,我的方法一直没有奏效。 在进入“日期”和“降雨”列之前,我还需要跳过前5行。

这是我到目前为止的代码:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('1541553208_et.csv','r') as csvfile:
    plots = csv.reader(csvfile, delimiter=',')
    for row in plots:
        for i in row:
            x.append(row[0])
            y.append(row[1])


plt.plot(x,y, label='Loaded from file!')
plt.xlabel('Dates')
plt.ylabel('Evaporation (inches)')
plt.title('Eden_7')
plt.legend()
plt.show()

当我运行代码时,得到以下错误结果:

在此处输入图片说明

我想拥有它,以便每个月的降雨数据都可以汇总为一个

这是我正在进行的事情的一个例子: 在此处输入图片说明

我试图获得与顶部相同的效果。 怎么办呢?

谢谢

使用pandas库而不是csv库可能会更简单。

例如,pandas允许您将csv文件直接存储到称为dataframe的数据结构中。 这将使您可以对日期或降雨量进行分组并绘制数据。

import pandas as pd
# rain will be an dataframe instance
rain = pd.read_csv(csvfile)
rain = rain.groupby(rain['rainfall'])
rain.plot(kind='bar')
plt.show()

玩弄它,熊猫非常强大。

您可以在此处找到pandas文档: https : //pandas.pydata.org/pandas-docs/stable/

尽管这可能不是立即解决方案,但从长远来看可能会有所帮助。

如前所述,使用pandas库将更加容易。 在您的csv库之后,您可以尝试运行此程序吗,

import matplotlib.pyplot as plt
import csv

x = []
y = []
f = open('1541553208_et.csv')
csv_f = csv.reader(f,delimiter=',')
for row in csv_f:
    x.append(row[0])
for row in csv_f:
    y.append(row[1])

plt.plot(x,y, label='Loaded from file!')
plt.xlabel('Dates')
plt.ylabel('Evaporation (inches)')
plt.title('Eden_7')
plt.legend()
plt.show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM