Python Pandas:计算系列中的元素出现次数

时间:2016-12-24 14:11:34

标签: python pandas

如何查找系列元素计数?使用此代码:

{% extends "heaven/base.html" %}
{% load staticfiles %}

    {% block content %}
    <h2>Location of Cemetery</h2>
        <div id="map" style="width:1000px;height:500px;background:yellow">
        <script>
            function myMap() {
              var mapCanvas = document.getElementById("map");
              var myLatLng=new google.maps.LatLng({{ cemetery.latitude }}, {{ cemetery.longitude }})
              var mapOptions = {center: myLatLng, zoom: 20};
              var map = new google.maps.Map(mapCanvas, mapOptions);
              var marker = new google.maps.Marker({position: myLatLng});
              marker.setMap(map);
            }
        </script>

        <script src="https://maps.googleapis.com/maps/api/js?callback=myMap"></script>
    {% endblock %}

没有多大帮助。有没有办法计算元素出现次数,所以结果将是一个带有'element,count'对的字典,如下所示:

import pandas as pd

d = { 'x' : [1,2,2,2,3,4,5,5,7] }
df = pd.DataFrame(d)
cnt1 = len(df[df.x == 1])
cnt2 = len(df[df.x == 2])
cnt3 = len(df[df.x == 3])
...

或在其他一些易于查找和迭代的结构中?

2 个答案:

答案 0 :(得分:2)

您可以使用value_counts。它返回一个可以像字典一样查找的系列,你可以迭代它:

df['x'].value_counts(sort=False)
Out: 
1    1
2    3
3    1
4    1
5    2
7    1
Name: x, dtype: int64

如果需要,您也可以将其转换为字典:

df['x'].value_counts().to_dict()
Out: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}

答案 1 :(得分:0)

以下是获取频率分布的两种方法

In [8]: df.groupby('x').size().to_dict()
Out[8]: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}

In [9]: df['x'].value_counts().to_dict()
Out[9]: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}