[英]MultiLevel index to columns : getting value_counts as columns in pandas
[英]Not getting 0 index from pandas value_counts()
total_val_count = dataset[attr].value_counts()
for i in range(len(total_val_count.index)):
print total_val_count[i]
我編寫了這段代碼,它計算數據幀中某個屬性的所有不同值的出現次數。 我面臨的問題是我無法通過使用索引0訪問第一個值。我在第一個循環運行本身中遇到KeyError:0錯誤。
total_val_count包含正確的值,如下所示:
34 2887
4 2708
13 2523
35 2507
33 2407
3 2404
36 2382
26 2378
16 2282
22 2187
21 2141
12 2104
25 2073
5 2052
15 2044
17 2040
14 2027
1984年2月28日
1980年27日
1979年23日
1960年2月24日
1953年30日
1936年2月29日
1884年3月31日
18 1877年
7 1858
37 1767
20 1762年
11 1740
8 1722
6 1693
32 1692
10 1662年
9 1576
19 1308
2 1266
1175
38 63
dtype:int64
total_val_count
是一個系列。 系列的索引是dataset[attr]
的值,而系列中的值是dataset[attr]
中相關值出現的次數。
當您使用total_val_count[i]
為Series編制索引時,Pandas將在索引中查找i
並返回關聯的值。 換句話說, total_val_count[i]
是按索引值而不是total_val_count[i]
索引。 將系列視為從索引到值的映射。 當使用普通索引時,例如total_val_count[i]
,它的行為更像是dict
不是list
。
您收到一個KeyError,因為0
不是索引中的值。 要total_val_count.iloc[i]
索引,請使用total_val_count.iloc[i]
。
話雖這么說,不建議for i in range(len(total_val_count.index))
使用for i in range(len(total_val_count.index))
或者不建議for i in range(len(total_val_count))
相同的處理。 代替
for i in range(len(total_val_count)):
print(total_val_count.iloc[i])
你可以用
for value in total_val_count.values:
print(value)
這更具可讀性,並且允許您將所需的值作為變量value
來訪問,而不是麻煩的total_val_count.iloc[i]
。
這是一個示例,顯示了如何遍歷值,鍵,鍵和值兩者:
import pandas as pd
s = pd.Series([1, 2, 3, 2, 2])
total_val_count = s.value_counts()
print(total_val_count)
# 2 3
# 3 1
# 1 1
# dtype: int64
for value in total_val_count.values:
print(value)
# 3
# 1
# 1
for key in total_val_count.keys():
print(key)
# 2
# 3
# 1
for key, value in total_val_count.iteritems():
print(key, value)
# (2, 3)
# (3, 1)
# (1, 1)
for i in range(len(total_val_count)):
print(total_val_count.iloc[i])
# 3
# 1
# 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.