Lazy loaded image
🐍 Python教程
Python常用库之Pandas
Words 4173Read Time 11 min
2024-10-28
2025-4-16
type
date
slug
category
icon
password
💡
1. Reduced System Structure and Get a quick grasp of basic knowledge 权威的导航网站,快速掌握基本知识,对比找出特性和使用情况 2. 可修改,补充,强调和更迭的知识框架体系 3. Practice Make Perfect and modify the knowledge Structure 4. Refine your ideas in your mind and produce excellent post in the website
Tips:
导航网站是个重要的源库
要着重于应用与实践的模块
练习,练习
Pandas Information Source

A: CHEAT SHEET

English Version
 
中文翻译版
notion image

导入数据

  • pd.read_csv(filename):从CSV文件导入数据
  • pd.read_table(filename):从限定分隔符的文本文件导入数据
  • pd.read_excel(filename):从Excel文件导入数据
  • pd.read_sql(query, connection_object):从SQL表/库导入数据
  • pd.read_json(json_string):从JSON格式的字符串导入数据
  • pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格
  • pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()
  • pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据

导出数据

  • df.to_csv(filename):导出数据到CSV文件
  • df.to_excel(filename):导出数据到Excel文件
  • df.to_sql(table_name, connection_object):导出数据到SQL表
  • df.to_json(filename):以Json格式导出数据到文本文件

创建测试对象

  • pd.DataFrame(np.random.rand(20,5)):创建20行5列的随机数组成的DataFrame对象
  • pd.Series(my_list):从可迭代对象my_list创建一个Series对象
  • df.index = pd.date_range('1900/1/30', periods=df.shape[0]):增加一个日期索引

查看、检查数据

  • df.head(n):查看DataFrame对象的前n行
  • df.tail(n):查看DataFrame对象的最后n行
  • df.shape():查看行数和列数
  • df.info():查看索引、数据类型和内存信息
  • df.describe():查看数值型列的汇总统计
  • s.value_counts(dropna=False):查看Series对象的唯一值和计数
  • df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数

数据选取

  • df[col]:根据列名,并以Series的形式返回列
  • df[[col1, col2]]:以DataFrame形式返回多列
  • s.iloc[0]:按位置选取数据
  • s.loc['index_one']:按索引选取数据
  • df.iloc[0,:]:返回第一行
  • df.iloc[0,0]:返回第一列的第一个元素

数据清理

  • df.columns = ['a','b','c']:重命名列名
  • pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组
  • pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组
  • df.dropna():删除所有包含空值的行
  • df.dropna(axis=1):删除所有包含空值的列
  • df.dropna(axis=1,thresh=n):删除所有小于n个非空值的行
  • df.fillna(x):用x替换DataFrame对象中所有的空值
  • s.astype(float):将Series中的数据类型更改为float类型
  • s.replace(1,'one'):用‘one’代替所有等于1的值
  • s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3
  • df.rename(columns=lambda x: x + 1):批量更改列名
  • df.rename(columns={'old_name': 'new_ name'}):选择性更改列名
  • df.set_index('column_one'):更改索引列
  • df.rename(index=lambda x: x + 1):批量重命名索引

数据处理:Filter、Sort和GroupBy

  • df[df[col] > 0.5]:选择col列的值大于0.5的行
  • df.sort_values(col1):按照列col1排序数据,默认升序排列
  • df.sort_values(col2, ascending=False):按照列col1降序排列数据
  • df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据
  • df.groupby(col):返回一个按列col进行分组的Groupby对象
  • df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象
  • df.groupby(col1)[col2]:返回按列col1进行分组后,列col2的均值
  • df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表
  • df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值
  • data.apply(np.mean):对DataFrame中的每一列应用函数np.mean
  • data.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.max

数据合并

  • df1.append(df2):将df2中的行添加到df1的尾部
  • df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部
  • df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join

数据统计

  • df.describe():查看数据值列的汇总统计
  • df.mean():返回所有列的均值
  • df.corr():返回列与列之间的相关系数
  • df.count():返回每一列中的非空值的个数
  • df.max():返回每一列的最大值
  • df.min():返回每一列的最小值
  • df.median():返回每一列的中位数
  • df.std():返回每一列的标准差

B: APPENDIX

1. Pandas 提取两个索引的并集,不重叠的值用缺失值填充
2. Control Panel Display
df.info() - Look up information abstract
print(baseball.iloc[-20:, :12].to_string()) - return string
pd.set_option('display.width', 40) # 默认值为 80 - 宽度跨度
3. df.iloc, df.loc and df.ix
loc 在index的标签上进行索引,范围包括start和end.
iloc 在index的序号上进行索引,不包括.
ix 先在index的标签上索引,索引不到就在index的位置上索引(如果index非全整数),不包括end.
notion image
4.

Quick Introduction

Introduction
pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool,built on top of the Python programming language.
 
Comparison
with Other Modules or Progamming Language
Difference between ndarray and DataFrame
  1. ndarry save homogenous data and is good at mathmatical solution although it is also capable of solving heterous data through assigning "dtype" of each of columns.
  1. DataFrame , like data structure extracting from SQL database, is good at columns-based operation and manipulation
 

Data Structure

Series
notion image
one-dimension array containing a variety of data such as float, int string and python object
s = pd.Series(data, index=index)
Note: default index=[0,1,... len(data)-1]
Create Series
1.Convert multi-dimensiona matrix to series
2.Convert dictionary-formatted data to Series
3.Scalar Value — Repeat according to the length of index
 
Series Comparison with array and dictionary
Series类似于多维数组,支持切片,索引切片,逻辑切片,矢量操作 np.exp(s), s[[4, 3, 1]] , s[s>s.median()] s+s , s*2 1.s.dtype
2.s.array Extended array
3.s.toar 转化成真正的数组
4. matrix Operation based on aligned index
Series 类似于字典,可以类似字典样查看,添加值
 
DataFrame
notion image
two-dimensional index data structure consist of mulyiple formatted data, like Excel, SQL or Series

Creation

1.based on series dictionary
notion image
note: Series 字典加上指定索引时,会丢弃与传递的索引不匹配的所有数据。
 
2. based on (mutiple-dimension matrix or array) dictionary
notion image
 
 
3. Based on Structured multiple-dimension matrix
notion image
 
4. Base on list dictionary (actually. ditionary list)
notion image
 
5. Based on Tuple Dictionary
 
💡
Alternate builder DataFrame.from_dict DataFrame.from_records
6.DataFrame.from_dict (default orient = column)
7. DataFrame.from_records

Selection

 

Reformation

Data Manipulation

I /O and Creation

导入导出

创造

 
Selection, Add, Delete (resemble with dictionary )

特定行列

增删

DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

labels 就是要删除的行列的名字,用列表给定 axis 默认为0,指删除行,因此删除columns时要指定axis=1; index 直接指定要删除的行 columns 直接指定要删除的列 inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe; inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。

条件删除

 
df.assign() # adopt user-defined function to generate more complex function
Subset

Rows Operation

df.head(n)
df.tail(n)
df.sample(frac=0.5)
df.sampel(n=10)
df.nlargest(n,'value')
df.nsmallest(n,'value')
 
logic in pandas
  1. df.column.isin(values) - Group membership
  1. pd.isnull(obj) - is NaN
  1. pd.notnull(obj) - is not NaN
  1. df.any()
  1. df.all()

Columns Operation

df[['widdth','length','species']]
df['width'] = df.width
df.filter(regex='regex')
df.loc[:,'x2':'x4']
df.iloc[:,[1,2,5]]
df.loc[df['a']>10,['a','c']]
Summarize data
Index
1.重置索引 (.reset_index() 备份原索引在index列 .set_index() 无备份,指定索引列)
2.多级索引
生成多级索引 → 创建DataFrame → 获取数据
Sort(df.sort_values()), Filter(series.unique()) , Groupby(df.group())
Join, Combine
 
 
数据集成,清洗,变换和分析

Projects and Exercises

Project 01 : Pandas提取数据添加噪声

 
 

Project 02 : 数据清洗

解决数据质量问题
Name
含义
处理方式
关键特征齐全
1. 通过其他信息补全,例如使用身份证件号码推算性别、籍贯、出生日期、年龄等;2. 通过其他信息补全,例如使用身份证件号码推算性别、籍贯、出生日期、年龄等;3. 实在补不全的,虽然很可惜,但也必须要剔除。但是不要删掉,没准以后可以用得上
不同来源数据出现重复
1. 按主键去重,用sql或者excel“去除重复记录”即可,
设置优先级
与常识不符
1. 设定强制合法规则,凡是不在此规则范围内的,强制设为最大值,或者判为无效,剔除 2. 设定警告规则,凡是不在此规则范围内的,进行警告,然后人工处理 3. 离群值人工特殊处理,使用分箱、聚类、回归、等方式发现离群值
不同来源的指标,实际内涵一致性
健全指标体系,指标体系(度量) 维度(分组、统计口径),单位,频度,数据
数据适合挖掘展示
Name
解决方法
1. 主成分分析;2. 随机森林
1. 汇总,平均值,最值,加总 ;2. 各种离散化,聚类、自定义分组等
剔除无关信息和字段冗余
数据挖掘:数据清洗--数据噪声处理_AvenueCyy的博客-CSDN博客_python数据噪声处理
数据噪声(Noise):数据集中的 干扰数据(对场景描述不准确的数据),即测量变量中的 随机误差或方差 。 观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise) :而离群点(Outlier)属于观测量,既有可能是真实数据产生的,也有可能是噪声带来的,但是总的来说是和大部分观测量之间有明显不同的观测值。 数据噪声与离群点有很多相同的地方。之间没有太过明确的定义,主要看应用的场景。如在信用卡诈骗中,我们通常会关注那些少量的异常数据,此时数据是具有探索意义的。而在一般的场景下,离群点和噪声都需要剔除,一般使用的方法也有很多相似之处,如3标准差去噪,dbscan去噪,孤立森林等。 同异常值,也有机器因素和人为因素。这里不做过多说明。 对模型训练有影响很多算法,不仅会增加数据量,也会加大计算量,增加计算机内存和计算开销,也会增大计算误差。特别是 线性算法,都是通过迭代来获取最优解的,如果数据中含有大量的噪声数据,将会大大的 影响数据的收敛速度,甚至对于训练生成 模型的准确 也会有很大的副作用。 常见的噪声数据的处理方法: 根据业务和对数据本身的理解,人为的进行数据筛选。 对于正态数据,利用3个标准差原则进行去噪,或使用四分位差进行去噪。 对于偏态数据用分箱则效果更好 。 分箱方法是一种简单常用的预处理方法, 通过考察相邻数据来确定最终值。所谓"分箱",实际上就是按照属性值划分的子区间, 如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的"箱子"内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据, 采用某种方法分别对各个箱子中的数据进行处理。 在采用分箱技术时,需要确定的两个主要问题就是: 分箱的方法有4种:等深分箱法、等宽分箱法、用户自定义区间法和最小熵法。 5.3.1 分箱方法 例:客户收入属性income排序后的值(人民币元):800 1000 1200 1500 1500 1800 2000 2300 2500 2800 3000 3500 4000 4500 4800 5000。 5.3.1.1 统一权重
数据挖掘:数据清洗--数据噪声处理_AvenueCyy的博客-CSDN博客_python数据噪声处理

Project 03 : ##

p

Project 04 : ##

 
 

Stage 3 — Innovation/BreakThrough

 
 
 
 
Pandas-DataFrame基础知识点总结 - 简书
上一篇
Python常用库之Numpy
下一篇
Python常用库之SCipy

Comments
Loading...