![](/img/trans.png)
[英]How do I make a dictionary with keys from a other dictionary and values from a csv file in Python?
[英]How do i make a graph/diagram from a CSV file in Python?
这是我第一次在这个论坛上提问,希望我不会自欺欺人。 我是一名 IT 教育专业的学生,今天我简要介绍了 CSV 和 Matplotlib 库。 我的老师给了我一个 CSV 文件,以及一些作业。 其中一项任务是制作 CSV 文件中的最高和最低温度以及相应日期的图表。 我需要行号,我需要程序来理解单元格的正确格式/语法,但我真的不知道该怎么做。 CSV 文件的片段在这里这是我得到的:
import csv
import matplotlib.pyplot as plt
filename = 'death_valley_2018_simple.csv'
with open(filename) as f:
csv_reader = csv.reader(f, delimiter=',')
line_count = 0
for row in f:
x=(row[4], row[5])
y=(row[2])
print(row[2])
print(row[4])
print(row[5])
plt.bar(x,y)
plt.xticks(y)
plt.ylabel('Dates')
plt.title('Plot')
plt.show()
结果是这个“条形图” ,我从这里阅读了其他论坛帖子,在 Discord 上四处询问,并阅读了 CSV 的文档。 也许答案就在那里,但我当时不明白。 文件中有 365 行,因此最好将程序限制为前 10 行,而不是整个文件,但我也不知道该怎么做。 我希望有人能像我 5 岁一样向我解释这一点。
不用担心; 我接到你了。 但首先是一些建议。 我记得当我在这个论坛上发布我的第一个问题时,我不知道提出问题的正确方法(当时我的英语不是那么好)。 问一个完美问题的关键是先搜索(你已经这样做了),然后如果你没有找到答案,你应该尽可能清楚和简短地问你的问题。 我并不是说不要提供足够的信息,但是如果您可以用更少的词提出问题并且您的问题仍然尽可能清楚,那么您应该这样做。 为什么? 因为事实是,如果问题很长,很多人会跳过这个问题。 刚才打开你的问题,看到台词,有点害怕,想跳过:D,不过几分钟就解决了,一点都不吓人。 我不太关心写长答案,因为有问题的人会在必要时阅读您的答案。 请注意,所有这些都只是我的个人经历。 您还应该寻找更好的初学者指南来在此论坛和类似平台上提问。 我的建议: http://www.catb.org/~esr/faqs/smart-questions.html
而不是csv
库,它是一个 Python 标准库(意味着它是编程语言的一部分,当你安装它时不需要单独安装),我更喜欢使用pandas
pandas
将使您的生活更轻松。 但是你必须先安装它:
pip install pandas
现在很简单,让我们导入所有内容并加载csv
文件。
import pandas as pd
import matplotlib.pyplot as plt
filename = 'death_valley_2018_simple.csv'
dataframe = pd.read_csv(filename)
dataframe
包含您的csv
文件的行和列。 您可以简单地 plot 每个日期对应的最低和最高温度:
plt.plot(dataframe["DATE"], dataframe["TMAX"])
plt.plot(dataframe["DATE"], dataframe["TMIN"])
但它看起来并不漂亮,因为DATE
列被识别为字符串,因此matplotlib
将显示每个日期。 它无法识别该字段是时间序列。 我们需要将此列更改为datetime
。
dataframe["DATE"] = pd.to_datetime(dataframe['DATE'], format="%Y-%m-%d")
所以我们只是告诉 pandas 将DATE
列更改为datetime
,我们通过指定格式字段来告诉年月日的数字在哪里。 %Y 代表年份,然后有一个破折号,%m 代表月份,并且...,我们使用大写 Y,因为 %y 代表年份,而我们只有右边的两位数。 在这种情况下,由于它非常简单,即使我们没有指定格式, pandas
也会理解如何将此列转换为datetime
时间。
现在我们只需要像以前一样 plot 我们的图表/图表:
plt.plot(dataframe["DATE"], dataframe["TMAX"])
plt.plot(dataframe["DATE"], dataframe["TMIN"])
因此,在完成所有操作后,您的代码应如下所示:
import pandas as pd
import matplotlib.pyplot as plt
filename = 'death_valley_2018_simple.csv'
dataframe = pd.read_csv(filename)
dataframe["DATE"] = pd.to_datetime(dataframe['DATE'], format="%Y-%m-%d")
plt.plot(dataframe["DATE"], dataframe["TMAX"])
plt.plot(dataframe["DATE"], dataframe["TMIN"])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.