簡體   English   中英

我正在嘗試使用 CSV 文件中的數據對餅圖進行 plot 餅圖,但出現錯誤,我不明白

[英]I'm trying to plot a pie chart using data from a CSV file but I'm getting an error I don't understand

這是我嘗試過的代碼。 CSV文件的SS和錯誤附在下面。

def displayGraph():
    with open('seats.csv', newline='') as csvfile:
        s = pd.read_csv(csvfile)
    
        x=0
        y=0
    
        for p in range(48):
            if s[p]==0:
                x+=1
    
        for g in range(48):
            if s[g]==1:
                y+=1
            
    a=x/(x+y)  *100
    b=y/(x+y)  *100
    
    graph=[a,b]
    plt.pie(graph, labels=['Empty Seats', 'Booked Seats'])

https://imgur.com/XCMJMal錯誤(第 1 部分)

https://imgur.com/UsJmrVb錯誤(第 2 部分)

https://imgur.com/a/6WbeRGV CSV 文件

編輯

CSV 文件以文本格式提供如下:

0,0,1,1,0,1,1,1  

0,1,1,0,0,1,0,1  

1,0,0,1,0,1,1,0  

0,1,1,1,0,0,0,1  

0,0,1,1,0,1,0,0  

1,1,1,1,0,0,1,1  

csv 模塊和 Pandas 是處理 CSV 文件的兩種方式,但除此之外它們是不相關的並且使用方式不同。 在這里,您已使用 pandas 加載文件並按原樣使用csv.reader 你應該選擇一個。

csv模塊方式

with open('seats.csv', newline='') as csvfile:
    s = csv.reader(csvfile)
    x = 0
    y = 0
    for row in s:
        for val in row:
            if val == '1':        # csv module sets values as strings...
                y += 1
            else:
                x += 1

a=x/(x+y)  *100
b=y/(x+y)  *100

graph=[a,b]
plt.pie(graph, labels=['Empty Seats', 'Booked Seats'])

Pandas 方式(這里更神奇......)

df = pd.read_csv('seats.csv', header = None)
y = df.sum().sum()
x = len(df) * len(df.columns) - y

a=x/(x+y)  *100
b=y/(x+y)  *100

graph=[a,b]
plt.pie(graph, labels=['Empty Seats', 'Booked Seats'])

您是否嘗試過實際查看 DataFrame 的內容?

在 Python 中像這樣訪問 DataFrame:

表.csv:

  A  |  B  |  C 
-----------------
 0.1 | 0.2 | 0.3
------------------
 0.4 | 0.5 | 0.6
------------------

腳本:

pd.read_csv("table.csv")

print(list(pd["A"]))

OUTPUT

[0.1,0.4]

您的 csv 沒有任何列名,因此您不能只執行 s[p],這就是它拋出 KeyError: 0 的原因(您的 csv 中不存在名為“0”的列)

您需要使用 iloc:(如果 p 指的是列索引)

s.iloc[:,p]

或者如果 p 指的是行索引

s.iloc[p,:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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