[英]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.