簡體   English   中英

如何從 Python 中的 CSV 文件制作圖形/圖表?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM