簡體   English   中英

Python 不會從 a.csv 文件中取值

[英]Python wont take a value from a .csv file

我有這個作業問題,我為此編寫了以下代碼。 但是 Python 一直告訴我“水庫”不在 dataframe 中,盡管它是。 我該如何解決? 如果需要,這里是 .CVS 文件的鏈接。 https://drive.google.com/file/d/1SZ639cUA3DdrlI_lG2Hq0vs6HiT8OAU3/view?usp=sharing

  1. 創建並顯示一個條形圖,按縣顯示井數:
  • 類別:縣
  • Y 軸:Total Clearfork Wells(在文件中命名為“Reservoir”)

我的代碼如下:

df = pd.read_csv('CF Around Lubbock Production Table.CSV')

By_County = df.groupby(['County/Parish']).sum().Reservoir

x = By_County.index
y = By_County.values

plt.figure(figsize=(10, 8))

plt.bar(x,y)


for i, j in zip(x,y):
    plt.text(i, j+10, int(j), ha = 'center')


plt.xlabel('County', fontsize = 20)
plt.ylabel('Total Clearfork Wells', fontsize = 20)

plt.xticks(fontsize = 12)
plt.yticks(fontsize = 15)

plt.show()

Column Reservoir似乎是object類型(在您的情況下,值是字符串)。 因此,如果您對整個 dataframe 進行聚合,則 pandas 不會將列與字符串值相加,因此該列被忽略。

你可以嘗試什么:

By_County = df.groupby(['County/Parish'])['Reservoir'].sum()

它適用於系列。 但是你真的想要連接字符串嗎?

County/Parish
CROSBY (TX)     CLEAR FORKCLEAR FORKCLEAR FORKCLEAR FORKCLEAR ...
GARZA (TX)      CLEARFORKCLEARFORKCLEARFORKCLEARFORKCLEARFORKC...
HALE (TX)       CLEARFORKCLEARFORKCLEARFORKCLEARFORKCLEARFORKC...
HOCKLEY (TX)    CLEARFORKCLEAR FORKCLEARFORKCLEAR FORKCLEAR FO...
LAMB (TX)       CLEARFORKCLEARFORKCLEARFORKCLEARFORKCLEARFORKC...
Name: Reservoir, dtype: object

你在尋找這樣的東西嗎?

df_grouped=data.groupby(['County/Parish','Reservoir'])['Reservoir'].count()

Output:

County/Parish  Reservoir      
CROSBY (TX)    CLEAR FORK         1837
               CLEARFORK             2
GARZA (TX)     CLEAR FORK           22
               CLEARFORK            32
HALE (TX)      CLEAR FORK            2
               CLEARFORK           441
HOCKLEY (TX)   CLEAR FORK          485
               CLEARFORK           218
               CLEARFORK, LO         1
               L. CLEARFORK          1
               LOWER CLEARFORK      26
               UPPER CLEARFORK      13
LAMB (TX)      CLEAR FORK            3
               CLEARFORK           108
               L. CLEARFORK          1
               LOWER CLEARFORK      12
LUBBOCK (TX)   CLEAR FORK          726
               CLEARFORK           300
               CLEARFORK, LO        60
               CLEARFORK, LO.        4
               L. CLEARFORK          2
               LOWER CLEARFORK       1
               UPPER CLEARFORK       9
LYNN (TX)      CLEARFORK             1
TERRY (TX)     CLEAR FORK            3
               CLEARFORK             1
               CLEARFORK, LO         2
               CLEARFORK, LO.        2
               LOWER CLEARFORK       1
Name: Reservoir, dtype: int64

下面的代碼將允許您獲取特定組的計數:

df_grouped=data.groupby(['County/Parish','Reservoir'])
    CROSBY_TX_CLEAR_FORK_count= df_grouped.get_group(('CROSBY (TX)', 'CLEAR FORK'))['Reservoir'].count()

CROSBY_TX_CLEAR_FORK_count

您可以更改 get_group 中的參數以獲取所需組的計數。

這將為所有縣/教區類型的水庫“CLEAR FORK”提供 plot 條形圖。

CLEAR_FORK_Count={}

count=0

for cat in data['County/Parish'].unique():
    try:
        count = df_grouped.get_group((cat, 'CLEAR FORK'))['Reservoir'].count()  
    except:
        count=0
    
    CLEAR_FORK_Count[cat]=count

plt.bar(CLEAR_FORK_Count.keys(), CLEAR_FORK_Count.values())
plt.xticks(rotation=30)

解決方案:

def getUniqueReservoirs(x):
    return x.nunique()

rs=data.groupby(['County/Parish','Reservoir']).agg({'Entity ID':'count',
                                                    'Reservoir':getUniqueReservoirs
                                     })
rs

繪制圖表:

import matplotlib.pyplot as plt

rs.plot()
plt.xticks(rotation=90)
plt.show()

暫無
暫無

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

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