我有以下代碼:
import pandas as pd
import matplotlib as mlp
import matplotlib.pyplot as plt
import csv
df = pd.read_csv (r'C:\Users\User\Desktop\Dataset2.csv', index_col=0)
print (df)
dataframe1 = df.sort_values('ums', ascending = False)
fig = plt.figure(figsize=(20,5))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
ax1.bar(dataframe1.index.dataframe1['ums'])
ax1.set_xticklabels(dataframe1.index, rotation=60, horizontalalignment = 'right', fontsize = '12')
ax1.set_title('Title', fontsize = '22')
ax1.set_ylabel('Text')
plt.show()
它應該讀取名為“Dataset2”的 .csv 檔案,但每次執行代碼時,我都會不斷收到“發生例外:KeyError 'ums' 檔案“C:\Users\User\Desktop\datafile2.py”,第 10 行,在dataframe1 = df.sort_values('ums', 升序 = False)"。
我在 .csv 檔案中的列具有完全相同的名稱。這是我檔案的第一行的樣子:
nr port country ums
1 Port1 Australia 47.03
2 Port2 USA 37.47
我能做些什么來解決這個問題?任何幫助表示贊賞。
uj5u.com熱心網友回復:
我無法重現您的問題
這是我的代碼,我只是簡化了你的 matplotlib 代碼
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('Dataset2.csv')
print(df)
dataframe1 = df.sort_values('ums', ascending=False)
names = dataframe1['port']
values = dataframe1['ums']
plt.figure(figsize=(20, 5))
plt.plot(names, values)
plt.show()
也許是因為您在定義資料集路徑時使用了原始字串?
嘗試洗掉r和 index_col,因為默認 pandasread_csv會將第一行視為標題
df = pd.read_csv('Dataset2.csv')
這是我的代碼的結果

uj5u.com熱心網友回復:
通常 csv 檔案,默認使用逗號來分隔名稱,因此檔案的內容應如下所示:
nr,port,country,ums
1,Port1,Australia,47.03
2,Port2,USA,37.47
或者像@wwii 評論的那樣明確指定分隔符:
pd.read_csv(r'C:\Users\User\Desktop\Dataset2.csv', index_col=0, sep='\s ')
uj5u.com熱心網友回復:
您是否嘗試過指定以下語法:
df.sort_values(by=['ums'], ascending=False)
此外,如果這不起作用,請嘗試洗掉index_col=0以查看是否有影響。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/493021.html
標籤:Python 熊猫 CSV matplotlib
上一篇:使用提交型別但IF陳述句不起作用
下一篇:如何向給定的行和列添加另一個值
