我是 Python 的新手,我一直在嘗試從 csv 檔案中使用 PyCharm 中的 matplotlib 繪制圖形。x 軸是月數,y 軸是銷售額,但 y 軸上的數字順序不正確。我讀過我需要將它轉換為浮點數,但它說“ValueError:無法將字串轉換為浮點數:'sales'”。我認為這是因為在 csv 檔案中,帶有銷售資料的行的標題是“sales”,因此它無法將單詞“sales”轉換為浮動。如何讓它忽略標題并將其余值轉換為浮點數?或者,如果這不是問題,有人可以幫我解決嗎?:)
這是我的代碼(沒有嘗試轉換為浮點數):
import matplotlib.pyplot as plt
x = []
y = []
with open('sales.csv','r') as sales_csv:
plots = csv.reader(sales_csv, delimiter=',')
for row in plots:
x.append(row[1])
y.append(row[2])
plt.plot(x, y, color='r', label='Monthly Sales 2018', marker='o')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.title('Monthly Sales 2018')
plt.legend()
plt.show()
請在附件中找到圖表外觀的螢屏截圖。圖形
另外,僅供參考,這是csv檔案(只需要繪制月份和銷售額)
year, month,sales,expenditure
2018,jan,6226,3808
2018,feb,1521,3373
2018,mar,1842,3965
2018,apr,2051,1098
2018,may,1728,3046
2018,jun,2138,2258
2018,jul,7479,2084
2018,aug,4434,2799
2018,sep,3615,1649
2018,oct,5472,1116
2018,nov,7224,1431
2018,dec,1812,3532
任何幫助,將不勝感激!
uj5u.com熱心網友回復:
由于 CSV 具有標題,因此您可以使用它csv.DictReader(sales_csv)來讀取 CSV 檔案。默認情況下,它會將 CSV 中的第一行讀取為 CSV 的列名,而不是將其用作常規行。然后,當您遍歷行時,您可以使用row["month"]和row["sales"]訪問適當的列。
with open('sales.csv','r') as sales_csv:
plots = csv.DictReader(sales_csv, delimiter=',')
for row in plots:
x.append(row["month"])
y.append(float(row["sales"]))
uj5u.com熱心網友回復:
只需將您的資料粘貼到一個檔案中并將其另存為test.csv并運行它。請注意,您的第二列名稱是,' month'而不是'month'因為您現在粘貼的資料在第一列之后有一個空格。要么保留并運行此代碼,要么洗掉它并編輯此代碼以替換' month'為'month'.
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib.dates as mdates
# paste your data into a file and save it as test.csv
# Please note that read_csv assumes that row 0 is the header, so,
# we don't need to pass that argument for your case
data = pd.read_csv('test.csv')
data[' month'] = data[' month'].str.title()
data['Date'] = data[' month']
# converting type from str to pandas datetime stamps
data['Date'] = pd.to_datetime(data['Date'], format='%b')
# changing the year from 1900 (default) to 2018(desired)
data['Date'] = data['Date'].mask(data['Date'].dt.year == 1900,
data['Date'] pd.offsets.DateOffset(year=2018))
plt.plot(data['Date'], data['sales'], color='r', label='Monthly Sales 2018', marker='o')
# x-axis date representation formatting
myFmt = mdates.DateFormatter('%b')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.xlabel('Month')
plt.ylabel('Sales')
plt.title('Monthly Sales 2018')
plt.legend()
plt.show()
您可以在此鏈接中閱讀有關 python 中日期時間行為的更多資訊:https : //docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/368368.html
標籤:Python 文件 matplotlib 图形
上一篇:用美麗的湯只找到表中的某些元素
下一篇:讀取具有可變列數的CSV檔案
