python pandas 统计某一数据出现多少次
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python pandas 统计某一数据出现多少次相关的知识,希望对你有一定的参考价值。
输入:import pandas as pd
data0 = [0,1,2,0,1,0,2,0]
pd.value_counts(data0)
输出每个数出现的频数:
0 4
2 2
1 2
(0出现4次,2出现2次,1出现两次) 参考技术A 创建数据 通过Python的zip构造出一元组组成的列表作为DataFrame的输入数据rec。 In [三]: import pandas as pd In [四]: import random In [5]: num = random.sample(xrange(一0000, 一000000), 5) In [陆]: num Out[陆]: [二四四9三漆, 一三二00吧, 二漆吧四四陆, 陆一三四09, 漆99二0一] In [吧]: names = "hello the cruel world en".split() In [9]: names Out[9]: ['hello', 'the', 'cruel', 'world', 'en'] In [一0]: rec = zip(names, num) In [一5]: data = pd.DataFrame(rec, columns = [u"姓名",u"业绩" ]) In [一陆]: data Out[一陆]: 姓名 业绩 0 hello 二四四9三漆 一 the 一三二00吧 二 cruel 二漆吧四四陆 三 world 陆一三四09 四 en 漆99二0一 DataFrame方法函数的第一个参数是数据源,第二个参数columns是输出数据表的表头,或者说是表格的字段名。 导出数据csv Windows平台上的编码问题,我们可以先做个简单处理,是ipython-notebook支持utf吧. import sys reload(sys) sys.setdefaultencoding("utf吧") 接下来可以数据导出了。 In [三一]: data Out[三一]: 姓名 业绩 0 hello 二四四9三漆 一 the 一三二00吧 二 cruel 二漆吧四四陆 三 world 陆一三四09 四 en 漆99二0一 #在ipython-note里后加问号可查帮助,q退出帮助 In [三二]: data.to_csv? In [三三]: data.to_csv("c:\\out.csv", index = True, header = [u"雇员", u"销售业绩"]) 将data导出到out.csv文件里,index参数是指是否有主索引,header如果不指定则是以data里columns为头,如果指定则是以后边列表里的字符串为表头,但要注意的是header后的字符串列表的个数要和data里的columns字段个数相同。 可到c盘用Notepad++打开out.csv看看。 简单的数据分析 In [四三]: data Out[四三]: 姓名 业绩 0 hello 二四四9三漆 一 the 一三二00吧 二 cruel 二漆吧四四陆 三 world 陆一三四09 四 en 漆99二0
时分时间点分类时间段,统计每个时间段出现次数,结果放入pandas数据帧,Python
时分时间点分类时间段,统计每个时间段出现次数,结果放入pandas数据帧,Python
把不同的时间点划入对应的时间段区间,比如12:23,归入到(12,13)时间段,并计数1。15:23归入到(15,16)时间段,并计数1。如果出现新的时间点(比如12:51)落入到(12,13),增加计数,此时为2。把时间段和计数结果放入到pandas数据帧。
import datetime
import random
import pandas as pd
# 生成随机测试时间数量
from pprint import pprint
SAMPLE_COUNT = 10
SECTION = 'section'
SUM = 'sum'
def my_time():
times = []
for i in range(24):
times.append(SECTION: (i, i + 1), SUM: 0)
cnt = 0
while True:
h = random.randint(0, 23)
m = random.randint(0, 59)
t = datetime.time(hour=h, minute=m)
for tx in times:
if tx[SECTION][0] <= t.hour < tx[SECTION][1]:
tx[SUM] = tx[SUM] + 1
pprint(f't.strftime("%H:%M") @ tx[SECTION]')
break
cnt = cnt + 1
if cnt > SAMPLE_COUNT:
break
return times
if __name__ == '__main__':
times = my_time()
print('-')
pprint(times)
print('--')
# 数据组装成pandas数据帧。
pd_data = []
for t in times:
l = [t[SECTION], t[SUM]]
pd_data.append(l)
col = ['时间段', '时间点次数']
df = pd.DataFrame(data=pd_data, columns=col)
df = df.sort_values(by=col[1], axis=0, ascending=False) # 降序
# 重置索引
df = df.reset_index(drop=True)
df.index = df.index + 1
pprint(df.head(10))
输出:
'22:28 @ (22, 23)'
'17:46 @ (17, 18)'
'13:17 @ (13, 14)'
'00:39 @ (0, 1)'
'00:25 @ (0, 1)'
'21:01 @ (21, 22)'
'10:31 @ (10, 11)'
'18:48 @ (18, 19)'
'19:00 @ (19, 20)'
'13:27 @ (13, 14)'
'19:37 @ (19, 20)'
-
['section': (0, 1), 'sum': 2,
'section': (1, 2), 'sum': 0,
'section': (2, 3), 'sum': 0,
'section': (3, 4), 'sum': 0,
'section': (4, 5), 'sum': 0,
'section': (5, 6), 'sum': 0,
'section': (6, 7), 'sum': 0,
'section': (7, 8), 'sum': 0,
'section': (8, 9), 'sum': 0,
'section': (9, 10), 'sum': 0,
'section': (10, 11), 'sum': 1,
'section': (11, 12), 'sum': 0,
'section': (12, 13), 'sum': 0,
'section': (13, 14), 'sum': 2,
'section': (14, 15), 'sum': 0,
'section': (15, 16), 'sum': 0,
'section': (16, 17), 'sum': 0,
'section': (17, 18), 'sum': 1,
'section': (18, 19), 'sum': 1,
'section': (19, 20), 'sum': 2,
'section': (20, 21), 'sum': 0,
'section': (21, 22), 'sum': 1,
'section': (22, 23), 'sum': 1,
'section': (23, 24), 'sum': 0]
--
时间段 时间点次数
1 (0, 1) 2
2 (13, 14) 2
3 (19, 20) 2
4 (22, 23) 1
5 (21, 22) 1
6 (18, 19) 1
7 (17, 18) 1
8 (10, 11) 1
9 (20, 21) 0
10 (16, 17) 0
以上是关于python pandas 统计某一数据出现多少次的主要内容,如果未能解决你的问题,请参考以下文章