![](/img/trans.png)
[英]How to take inputs from a CSV file and write a specific output with Python?
[英]Python wont take a value from a .csv file
我有這個作業問題,我為此編寫了以下代碼。 但是 Python 一直告訴我“水庫”不在 dataframe 中,盡管它是。 我該如何解決? 如果需要,這里是 .CVS 文件的鏈接。 https://drive.google.com/file/d/1SZ639cUA3DdrlI_lG2Hq0vs6HiT8OAU3/view?usp=sharing
我的代碼如下:
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.