一帧数据 svn docker安装 mAPI download jqgrid angular ui router Normalizecss vuejs 教程 vue绑定点击事件 vue请求 jquery绑定change事件 jquery清除子元素 linux环境变量生效 webform开发教程 车载u盘 python程序 python开发环境 python抛异常 python的re模块 python可视化编程 java访问数据库 安装java环境 java类型 java搭建 javarandom java基础代码 怎么安装java环境 java语言是什么 幽城幻剑录五内 圣骑士装备 删除数组中的某个元素 ezcad2 电子书制作软件 mac地址修改 天正建筑2007 透视网格工具怎么取消 只狼台词 backtrack4 欧洲卡车模拟2存档
当前位置: 首页 > 学习教程  > python

Python数据分析小技巧

2021/2/6 23:24:17 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Pandas数据分析常用小技巧 数据分析中pandas的小技巧,快速进行数据预处理,欢迎点赞收藏,持续更新,作者:北山啦 文章目录Pandas数据分析常用小技巧Pandas小技巧pandas生成数据数据替换--map映射数据清洗--replace和正则…

Pandas数据分析常用小技巧


数据分析中pandas的小技巧,快速进行数据预处理,欢迎点赞收藏,持续更新,作者:北山啦


在这里插入图片描述


文章目录

  • Pandas数据分析常用小技巧
  • Pandas小技巧
    • pandas生成数据
    • 数据替换--map映射
    • 数据清洗--replace和正则
    • 数据透视表分析--melt函数
    • 将分类中出现次数较少的值归为others
  • Python小技巧
    • 列表推导式
    • 交换变量
    • 检查对象使用内存情况
    • 合并字典
    • 字符串分割成列表
    • 字符串列表创建字符串
    • Python查看图片

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
sexcolorage
0malered12
1femalegreen56
2maleblue21
3femaleyellow31

数据替换–map映射

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

map(function, iterable, …)

  • function – 函数
  • iterable – 一个或多个序列
d = {"male": 1, "female": 0}
df["gender"] = df["sex"].map(d)
df
sexcoloragegender
0malered121
1femalegreen560
2maleblue211
3femaleyellow310

数据清洗–replace和正则

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

d = {"customer": ["A", "B", "C", "D"],
     "sales": [1000, "950.5RMB", "$400", "$1250.75"]}
df = pd.DataFrame(d)
df
customersales
0A1000
1B950.5RMB
2C$400
3D$1250.75

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

df["sales"] = df["sales"].replace("[$,RMB]", "", regex=True).astype("float")
df
customersales
0A1000.00
1B950.50
2C400.00
3D1250.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_codeapplebananaorange
0123455.23.58.0
1567892.41.97.5
21011124.24.06.4
31314153.62.33.9
df = df.melt(id_vars="district_code",
             var_name="fruit_name",
             value_name="price")
df
district_codefruit_nameprice
012345apple5.2
156789apple2.4
2101112apple4.2
3131415apple3.6
412345banana3.5
556789banana1.9
6101112banana4.0
7131415banana2.3
812345orange8.0
956789orange7.5
10101112orange6.4
11131415orange3.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
namecategories
0JoneA
1AlicaC
2EmilyA
3RobertD
4TomasA
5ZhangB
6LiuB
7WangC
8JackA
9WsxE
10GuoF

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

  1. 统计出现次数,并标准化
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
  1. 设定阈值
threshold = 0.1
small_categories = frequencies[frequencies < threshold].index
small_categories
Index(['E', 'D', 'F'], dtype='object')
  1. 替换
df["categories"] = df["categories"].replace(small_categories, "Others")
df
namecategories
0JoneA
1AlicaC
2EmilyA
3RobertOthers
4TomasA
5ZhangB
6LiuB
7WangC
8JackA
9WsxOthers
10GuoOthers

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

欢迎搜藏,持续更新


到这里就结束了,如果对你有帮助,欢迎点赞关注,你的点赞对我很重要。作者:北山啦


本文链接: http://www.dtmao.cc/news_show_2000169.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?