Pandas数据分析的一些常用小技巧


Posted in Python onFebruary 07, 2021

Pandas小技巧

import pandas as pd

pandas生成数据

d = {"sex": ["male", "female", "male", "female"],
 "color": ["red", "green", "blue", "yellow"],
 "age": [12, 56, 21, 31]}
df = pd.DataFrame(d)
df

sex color age
0 male red 12
1 female green 56
2 male blue 21
3 female yellow 31

数据替换?map映射

map() 会根据提供的函数对指定序列做映射。

map(function, iterable, …)

  • function ? 函数
  • iterable ? 一个或多个序列
d = {"male": 1, "female": 0}
df["gender"] = df["sex"].map(d)
df

sex color age gender
0 male red 12 1
1 female green 56 0
2 male blue 21 1
3 female yellow 31 0

数据清洗?replace和正则

分享pandas数据清洗技巧,在某列山使用replace和正则快速完成值的清洗

d = {"customer": ["A", "B", "C", "D"],
 "sales": [1000, "950.5RMB", "$400", "$1250.75"]}
df = pd.DataFrame(d)
df

customer sales
0 A 1000
1 B 950.5RMB
2 C $400
3 D $1250.75

sales列的数据类型不同意,为后续分析,所以需要将他的格式同统一

df["sales"] = df["sales"].replace("[$,RMB]", "", regex=True).astype("float")
df

customer sales
0 A 1000.00
1 B 950.50
2 C 400.00
3 D 1250.75

查看数据类型

df["sales"].apply(type)

0    <class 'float'>
1    <class 'float'>
2    <class 'float'>
3    <class 'float'>
Name: sales, dtype: object

数据透视表分析?melt函数

melt是逆转操作函数,可以将列名转换为列数据(columns name → column values),重构DataFrame,用法如下:

参数说明:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=‘value', col_level=None)

  • frame:要处理的数据集。
  • id_vars:不需要被转换的列名。
  • value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了。
  • var_name和value_name是自定义设置对应的列名。
  • col_level :如果列是MultiIndex,则使用此级别。

二维表格转成一维表格

d = {"district_code": [12345, 56789, 101112, 131415],
 "apple": [5.2, 2.4, 4.2, 3.6],
 "banana": [3.5, 1.9, 4.0, 2.3],
 "orange": [8.0, 7.5, 6.4, 3.9]
 }
df = pd.DataFrame(d)
df

district_code apple banana orange
0 12345 5.2 3.5 8.0
1 56789 2.4 1.9 7.5
2 101112 4.2 4.0 6.4
3 131415 3.6 2.3 3.9
df = df.melt(id_vars="district_code",
  var_name="fruit_name",
  value_name="price")
df

district_code fruit_name price
0 12345 apple 5.2
1 56789 apple 2.4
2 101112 apple 4.2
3 131415 apple 3.6
4 12345 banana 3.5
5 56789 banana 1.9
6 101112 banana 4.0
7 131415 banana 2.3
8 12345 orange 8.0
9 56789 orange 7.5
10 101112 orange 6.4
11 131415 orange 3.9

将分类中出现次数较少的值归为others

d = {"name": ['Jone', 'Alica', 'Emily', 'Robert', 'Tomas',
  'Zhang', 'Liu', 'Wang', 'Jack', 'Wsx', 'Guo'],
 "categories": ["A", "C", "A", "D", "A",
   "B", "B", "C", "A", "E", "F"]}
df = pd.DataFrame(d)
df

name categories
0 Jone A
1 Alica C
2 Emily A
3 Robert D
4 Tomas A
5 Zhang B
6 Liu B
7 Wang C
8 Jack A
9 Wsx E
10 Guo F

D、E、F 仅在分类中出现一次,A 出现次数较多。

统计出现次数,并标准化

frequencies = df["categories"].value_counts(normalize=True)
frequencies

A    0.363636
B    0.181818
C    0.181818
E    0.090909
D    0.090909
F    0.090909
Name: categories, dtype: float64

设定阈值

threshold = 0.1
small_categories = frequencies[frequencies < threshold].index
small_categories
Index(['E', 'D', 'F'], dtype='object')

替换

df["categories"] = df["categories"].replace(small_categories, "Others")
df

name categories
0 Jone A
1 Alica C
2 Emily A
3 Robert Others
4 Tomas A
5 Zhang B
6 Liu B
7 Wang C
8 Jack A
9 Wsx Others
10 Guo Others

Python小技巧

列表推导式

例如,假设我们想创建一个正方形列表,例如

squares = []
for x in range(10):
 squares.append(x**2)
squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

squares = list(map(lambda x: x**2, range(10)))
squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

squares = [x**2 for x in range(10)]
squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

同时还可以利用if来过滤列表

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

列表推导式可以包含复杂表达式和嵌套函数

from math import pi
[str(round(pi, i)) for i in range(1, 6)]

['3.1', '3.14', '3.142', '3.1416', '3.14159']

列表推导式中的初始表达式可以是任意表达式,包括另一个列表推导式。

下面的列表推导式将对行和列进行转置

matrix = [
 [1, 2, 3, 4],
 [5, 6, 7, 8],
 [9, 10, 11, 12],
]
[[row[i] for row in matrix] for i in range(4)]

[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

交换变量

a = 1
b = 2
a, b = b, a
print("a = ",a)
print("b = ",b)

a =  2
b =  1

检查对象使用内存情况

sys.getsizeof()

range()函数返回的是一个类,在使用内存方面,range远比实际的数字列表更加高效

import sys
mylist = range(1,10000)
print(sys.getsizeof(mylist))

48

合并字典

从Python3.5开始,合并字典的操作更加简单

如果key重复,那么第一个字典的key会被覆盖

d1 ={"a":1,"b":2}
d2 = {"b":2,"c":4}
m = {**d1,**d2}
print(m)

{'a': 1, 'b': 2, 'c': 4}

字符串分割成列表

string = "the author is beishanla"
s = string.split(" ")
s

['the', 'author', 'is', 'beishanla']

字符串列表创建字符串

l = ["the","author","is","beishanla"]
l = " ".join(l)
l

'the author is beishanla'

Python查看图片

pip install Pillow
from PIL import Image
im = Image.open("E:/Python/00网络爬虫/Project/词云图跳舞视频/aip-python-sdk-4.15.1/pictures/img_88.jpg")
im.show()
print(im.format,im.size,im.mode)

JPEG (1920, 1080) RGB

欢迎搜藏,持续更新

总结

到此这篇关于Pandas数据分析的一些常用小技巧的文章就介绍到这了,更多相关Pandas数据分析技巧内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
Python中List.count()方法的使用教程
May 20 Python
Python网络爬虫出现乱码问题的解决方法
Jan 05 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
python和php学习哪个更有发展
Jun 17 Python
python playwrigh框架入门安装使用
Jul 23 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 #Python
python实现经典排序算法的示例代码
Feb 07 #Python
Python自动化测试基础必备知识点总结
Feb 07 #Python
10张动图学会python循环与递归问题
Feb 06 #Python
PyCharm 光标变成黑块的解决方式
Feb 06 #Python
使用Python下载抖音各大V视频的思路详解
Feb 06 #Python
python wsgiref源码解析
Feb 06 #Python
You might like
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
Python中逗号的三种作用实例分析
2015/06/08 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python代码能做成软件吗
2020/07/24 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
文员的职业生涯规划发展方向
2014/02/08 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
合伙购房协议样本
2014/10/06 职场文书
车队安全员岗位职责
2015/02/15 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python