簡體   English   中英

前導或尾隨空格和熊貓value_counts與布爾選擇

[英]Leading or trailing whitespace and pandas value_counts vs boolean selection

我正在使用從縣治安官部門下載的csv文件創建的數據框。 數據位於此處 ,可以使用read_csv()讀取。 數據框包含有關向警長報告並采取行動的事件的信息。 其中一列是發生事件的城市,我試圖創建一個表格和圖表來顯示我所在地區(黑田)的事件數隨時間的變化。

當我使用以“ city”作為輸入的熊貓的value_counts函數時,我得到

In [86]: compcounts = soco['city'].value_counts()
In [96]: compcounts[0:10]
Out[96]:
SANTA ROSA              55291
WINDSOR                 31711
SONOMA                  28840
GUERNEVILLE              9309
BOYES HOT SPRINGS        8006
PETALUMA                 6103
EL VERANO                5969
GEYSERVILLE              5822
LARKFIELD                5398
FORESTVILLE              5312
dtype: int64`

我所在地區('Larkfield')共有5398個報告。 但是當我嘗試獲取我所在區域的數據框的子集時,使用

larkfieldcomps = soco[soco['city'] == "LARKFIELD"]

它僅返回115個值,而不返回5398:

In [94]: larkcounts = larkfieldcomps['year'].value_counts()
In [95]: larkcounts
Out[95]:
2015    114
2013      1
dtype: int64

我認為問題可能出在某些條目中,事件描述中“ LARKFIELD”之前或之后存在一個或多個空格,因此我進行了搜索/替換以嘗試去除任何空格,但是當即使我知道該地區還有更多事件,也可以通過“ LARKFIELD”進行搜索。

這是我關於Stackoverflow的第一個問題...我已經對此進行了研究,但是還沒有得出答案。 任何建議,將不勝感激。

我可以在下載數據(並使用默認設置使用read_csv讀入數據read_csv )后對此進行一些解釋。 似乎那里有前導或尾隨空格。 顯然, value_counts足夠聰明,可以在加總時忽略它,但是布爾選擇更真實。

>>> soco[soco['city'] == "LARKFIELD"].city.count()
122

>>> soco['city2'] = soco.city.str.strip()

>>> soco[soco['city2'] == "LARKFIELD"].city.count()
5520

當我仔細觀察時,似乎5398有11個尾隨空格,而122沒有空格。 這就是區別。 (我不確定為什么您會找到115個而不是122個值,但這很可能是因為缺少一些年份值,但是您還是創建了它。)

但是后來我這樣做是為了再次檢查value_counts的行為,因為我一直認為前導和尾隨空格很重要。

>>> pd.Series( [' foo','foo','foo '] ).value_counts() 
foo     1
foo     1
 foo    1

是的,在這個簡單的示例中,前導空格和尾隨空格確實很重要。 但是它們不在您的“ soco”數據框中???

因此,這里仍然有一些松散的結局,但希望這是弄清這里正在發生的事情的一個好的開始。

暫無
暫無

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

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