文章目录

  • 【python】列表元素统计
    • 一、列表元素统计
      • 1.1 原始数据长的样子
      • 1.2 方法一:使用标准 Python库
      • 2.3 方法二:使用pandas
      • 2.4 图像展示
    • 二、数据清洗

【python】列表元素统计

一、列表元素统计

1.1 原始数据长的样子


目标: 对list中的数据进行统计(其实就是对相同元素的数据进行一个统计)
方法:

方法一: 使用标准 Python库
方法二: 使用 pandas

1.2 方法一:使用标准 Python库

def get_counts(sequence):counts = {}for x in sequence:if x in counts:counts[x] += 1else:counts[x] = 1return counts

# 如果非常了解 Python标准库,那么你可能会将代码写得更简洁一些:
from collections import defaultdict
def get_counts2(sequence):counts = defaultdict(int) # 所有的值均会被初始化为0for x in sequence:counts[x] += 1return counts

对于获取的结果,我们还可以进一步实现一个统计

def top_counts(count_dict, n=10):value_key_pairs = [(count, tz) for tz, count in count_dict.items()]value_key_pairs.sort() # 排序return value_key_pairs[-n:] # 倒数10个

同样,可以采用python标准库,进行一个结果统计

from collections import Counter
counts = Counter(time_zones)
counts.most_common(10)

2.3 方法二:使用pandas

首先,我们先回顾一下,我们的原始数据:一个列表,元素为字典形式,实则就是列表套的字典。

现在,我们使用pandas库文件进行读取:

import pandas as pd
import numpy as np
frame = pd.DataFrame(recodes)


现在再来看我们的统计结果:

2.4 图像展示

我们再来绘制一个图像查看一下:

# 首先我们先处理一下位置或者缺失值
clean_tz = frame['tz'].fillna('missing')
clean_tz[clean_tz==''] = 'unknown'
tz_counts = clean_tz.value_counts()
tz_counts[:10]

二、数据清洗

先来看一下原始数据长什么样子:

我们的目标是对a列进行一个是否是windowns用户一个分析。
我们先来简单处理一下数据:

recodes = Series([x.split()[0] for x in frame.a.dropna()])


现在,为了简单方便起见。我们假定只要字符串中含有"Windows"就认为该用户为Windows用户,由于有的字符串缺失,所以首先将它们从数据中移除:

cframe = frame[frame.a.notnull()]
cframe


现在根据a值计算出各行是否是windows:

"""
#如果A%2==0成立,则执行A+1,否则执行A-1>>> Aarray([1, 7, 4, 9, 2, 3, 6, 0, 8, 5])>>> B = np.where(A%2 == 0, A+1, A-1)   # 偶+1,奇-1"""
operating_system = np.where(cframe['a'].str.contains('Windows'), 'Windows', 'Not Windows')

现在来看看结果:

operating_system[:5]

# 接下来就可以根据时区和新得到的操作系统列表对数据进行分组了:
by_tz_os = cframe.groupby(['tz',  operating_system])
agg_counts = by_tz_os.size().unstack().fillna(0)

这里是通过size对分组进行计数,并且利用unstack对计数结果实现重塑:

关于unstack函数可查看:

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
data=DataFrame(np.arange(6).reshape((2,3)),index=pd.Index(['street1','street2']),columns=pd.Index(['one','two','three']))
print(f'data={data}')
print('-----------------------------------------\n')
data2=data.stack()
data3=data2.unstack()
print(data2)
print('-----------------------------------------\n')
print(f'data3={data3}')

【python】列表元素统计相关推荐

  1. python列表元素统计ls_给定列表ls = [1, 2, 3, 1, 2, 3],其元素包含2种数据类型,哪个选项是列表ls的数据组织维度?...

    [单选题]列表ls,哪个选项对ls.append(x)的描述是正确的? [单选题]哪个选项是下面代码的输出结果? d= {'a': 1, 'b': 2, 'b': '3'} print(d['b']) ...

  2. python列表元素都加倍_关于python列表增加元素的三种操作方法

    关于python列表增加元素的三种操作方法 1.insert方法,该方法包含两个参数,第一个参数为插入的位置参数,第二个参数为插入内容 a = [0,0,0] b = [1,2,3] a.insert ...

  3. python列表元素如何求和

    python实现列表对应元素求和的两种方法. 方法一:采用zip()方法: 1 2 3 4 5 6 7 8 9 10 11 12 # -*- coding: utf-8 -*- import math ...

  4. python列表元素零的移动_python列表多行

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这个列表推导式共有145列: memberdef_list = and std: ...

  5. python列表元素交换位置_python删除列表元素5种方法,你会的是错误法还是最优解?...

    删除列表元素很多同学想当然的认为不就是循环遍历加上if判断再del吗?真的有这么简单吗? 还是直接上代码看案例吧: import time# 删除下面列表中所有张姓元素,输出的结果应该是['李老大', ...

  6. python列表元素之和_python实现计算列表元素之和

    目标:定义一个数字列表,并计算列表元素之和. 例如: 输入 : [12, 15, 3, 10] 输出 : 40 方法一:total = 0 list1 = [11, 5, 17, 18, 23] fo ...

  7. python列表元素下标是什么_python列表中元素插入位置总结

    python列表中元素插入位置总结 , python中列表去掉最后一个元素 ist.insert(index,obj) 列表与方法之间用点号相隔,括号内需要添入的参数分别是索引和要插入的元素. 要完成 ...

  8. python列表元素0的移动_【Python】列表元素零的移动

    [Python]列表元素"零"的移动 描述 对于一个列表,在保持非零元素相对顺序的同时,将元素中所有的数字0移动到末尾.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬ ...

  9. python列表元素替换的数据结构_列表是Python中的一种数据结构。列表元素无序。...

    [综合练习]It has made the headlines that the president's wife threatened her husbands with public exposu ...

  10. python列表元素为中文_python入门基础教程之Python list列表修改元素

    python提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个). 修改单个元素 修改单个元素非常简单,直接对元素赋值即可.请看下面的例子: nums = ...

最新文章

  1. NAT穿透工具pwnat
  2. 正确、安全地停止springboot应用
  3. JS原生---鼠标拖拽
  4. 读配置文件能够保持顺序的 Java Properties 类
  5. EV3 直接命令 - 第 5 课 从 EV3 的传感器读取数据
  6. python xpath定位元素方法_Python爬虫杂记 - Xpath高级用法
  7. java查询数据库的方式_Java连接各种数据库方式速查表
  8. SpringCloud 从菜鸟到大牛之九 服务跟踪 spring CLoud sleuth + Zikpin
  9. Shiro(二)通过shiro实现登录 连接数据库+集成Springboot
  10. lucene域的各种类型
  11. 全向轮移动机器人构型分析
  12. firewalld--centos7.x的防火墙--使用流程步骤:
  13. docker搭建sftp服务器
  14. discuz论坛引入iframe
  15. nRF24L01无线模块笔记
  16. Linux命令:grep -v grep的作用 使用场景
  17. Linux系统学习环境搭建 - 跟小智一起学网络(3)
  18. 50道C/C++编程练习题 复习必备(1-10)
  19. 苹果原壁纸高清_ios14.2壁纸原图高清分享:苹果ios14.2壁纸高清无水印[多图]
  20. 查看linux设备Ran的大小,linux – 来自/ dev / zero和/ dev / urandom的不同文件大小

热门文章

  1. 应届毕业生的户口、档案、三方协议、报到证、见习期、工龄计算、转正定级等重要知识普及!
  2. Word表格中文字如何居中?
  3. 花瓣图片采集工具研究
  4. 动态代理的两种方式以及区别
  5. 无偏估计的数学证明和分析
  6. matplotlib柱状图给指定的柱换颜色_matplotlib绘图基本操作amp;美化教程
  7. 线性代数让我想想:两步得到二阶矩阵的逆
  8. 打印机显示rpc服务器,win10打印机出现RPC服务器不可用的处理办法
  9. 电子传真在金融业务的应用
  10. 2021-06-02使用Digispark(ATTINY85)制作一个Badusb