【问题标题】:Not getting 0 index from pandas value_counts()没有从 pandas value_counts() 获得 0 索引
【发布时间】:2014-11-17 19:38:45
【问题描述】:
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
28 1984
27 1980
23 1979
24 1960
30 1953
29 1936
31 1884
18 1877
7 1858
37 1767
20 1762
11 1740
8 1722
6 1693
32 1692
10 1662
9 1576
19 1308
2 1266
1 175
38 63
数据类型:int64

【问题讨论】:

    标签: python pandas count dataframe series


    【解决方案1】:

    total_val_count 是一个系列。系列的索引是dataset[attr] 中的值, Series 中的值是 dataset[attr] 中的关联值出现的次数。

    当您使用total_val_count[i] 索引系列时,Pandas 在索引中查找i 并返回关联的值。换句话说,total_val_count[i] 是按索引值索引,而不是按序号。 将系列视为从索引到值的映射。当使用普通索引时,例如total_val_count[i],它的行为更像dict,而不是list

    您收到 KeyError 是因为 0 不是索引中的值。 要按序数索引,请使用total_val_count.iloc[i]

    话虽如此,不推荐使用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
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2022-12-05
      • 2014-04-12
      • 2016-07-12
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2020-07-16
      相关资源
      最近更新 更多