从CSV文件python中绘制3个不同的列

8yparm6h  于 11个月前  发布在  Python
关注(0)|答案(2)|浏览(112)

我的目标是使用排序后的结果数据在同一个窗口上绘制每年的“月与平均温度”图。
我已经分别对前两列的年份和月份进行了排序,然后将新的排序数据保存到一个名为NewFile的文件中,但我似乎无法在这里找到解决方案,我使用csv阅读器,现在我使用 numpy
代码:

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')

csv1 = open('Data_5.1.csv')
data = np.array(list(csv.reader(csv1,delimiter=',').astype("string")

year = data[:,0]
month = data[:,1]
temp= data[:,3]

fig, ax = plt.subplots(figsize=(10,10))
ax.plot(year, month, label='month/year')
ax.plot(year, temp, label='year/temp')

 plt.legend()

字符串
但它只是抛出一个错误说:

File "<ipython-input-282-282e91df631f>", line 9
year = data[:,0]
   ^
SyntaxError: invalid syntax


我将放置两个指向文件的链接,分别为 Data_5.1NewFile
Data_5.1NewFile

a11xaf1n

a11xaf1n1#

1 -您没有关闭第6行中的括号,因此您在第8行中得到错误。
2 -第6行中不需要astype(“string”)。
我修复了你的代码,但你必须完成子图。祝你好运!

import numpy as np
import matplotlib.pyplot as plt
import csv
plt.style.use('ggplot')

csv1 = open('Data_5.1.csv')
data = np.array(list(csv.reader(csv1,delimiter=',')))


year = data[:,0]
mounth = data[:,1]
temp= data[:,3]

fig, ax = plt.subplots(2,2) #This will create 4X4 subplots in one window

ax[0,0].plot(year, mounth, label='mounth/year') #This will plot in the 0,0 subplot
ax[0,1].plot(year, temp, label='year/temp') #This will plot in the 0,1 subplot
'''
For you to continue.
'''

plt.legend()
plt.show()

字符串

xt0899hw

xt0899hw2#

您的数据是在CSV文件中,并且它在类型上是非同质的。Pandas确实是更合适的工具。
由于编码错误,我不得不稍微调整你的CSV,这是它最终的样子:

year,Month,Other Month,temperature_C
2003,Jan.,Some val,17.7
2004,Jan.,Some val,19.5
2005,Jan.,Some val,17.3
2006,Jan.,Some val,17.8
...

字符串
下面是你分享的代码在重构后的大致样子:

import matplotlib.pyplot as plt
import pandas as pd

plt.style.use('ggplot')

# csv1 = open('Data_5.1.csv')
# data = np.array(list(csv.reader(csv1,delimiter=',').astype("string")

df_1 = pd.read_csv('../resources/Data_5.1.csv', header=0, names=['year', 'month', 'some_col', 'temp'],
                   dtype={'some_col': str, 'temp': float, 'month': str, 'year': str})

year = df_1['year']
month = df_1['month']
temp = df_1['temp']

fig, ax = plt.subplots(figsize=(10, 10))
ax.plot(year, month, label='month/year')
ax.plot(year, temp, label='year/temp')
plt.show()


让我知道如果你有任何问题:)

相关问题