[英]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.