一、什么是Pandas?
一个开源的Python类库:用于数据分析、数据处理、数据可视化
●高性能
●容易使用的数据结构
●容易使用的数据分析工具
很方便和其它类库一起使用:
●numpy: 用于数学计算
●scikit-learn: 用于机器学习
二、Pandas数据读取
Pandas需要先读取表格类型的数据,然后进行分析
1.读取csv文件
import pandas as pd
file = "./xxx.csv" # 文件路径
rat = pd.read_csv(file) # 读取数据
rat.head() #查看前几行数据
rat.shape #查看数据形状(行数,列数)
rat.columns #查看列名
rat.index #查看索引列
rat.dtypes #查看每列的数据类型
2.读取txt文件,自己指定分隔符,列名
import pandas as pd
file = "./xxx.txt"
data = pd.read_csv(
file,
sep = " ",
header = None,
names = ['a','b','c']
)
3.读取excel文件
import pandas as pd
file = "./xxx.xlsx"
data = pd.read_excel(file)
4.读取MySQL数据库
import pandas as pd
import pymysql
conn = pymysql.connect(
host = '127.0.0.1',
user = 'root',
password = '123'
database = 'test'
charset = 'utf8'
)
mysql_page = pd.read_sql("select * from data", con = conn)
mysql_page
三、Pandas数据结构
DataFrame:二维数据,整个表格,多行多列
DataFrame是一个表格型的数据结构
●每列可以是不同的值类型(数值、 字符串、布尔值等)
●既有行索引index,也有列索引columns
●可以被看做由Series组成的字典
根据多个字典序列创建dataframe
Series: 一维数据,一行或一列
1.创建一个Series
import pandas as pd
s = pd.Series([1,'a',5.2,7]) # 得到的s最左侧是索引,右侧是数据
s.index # 获取索引
s.values # 获取数据
2.创建一个带有标签索引的Series
s = pd.Series([1,'a',5.2,7],index = ['a','b','c','d'])
3.使用Python字典创建Series
sdata = {'A':3500,'B':7200,'C':1600,'D':5000}
s = pd.Series(sdata)
4.根据索引标签查询数据
从DataFrame中查询出Series
●如果只查询一行、一列,返回的是pd.Series
●如果查询多行、多列,返回的是pd.DataFrame
1.查询列
2.查询行
四、Pandas数据查询的五种方法
Pandas查询数据的几种方法
df.loc方法,根据行、列的标签值查询
df.iloc方法,根据行、列的数字位置查询
df.where方法
df.query方法
.loc既能查询,又能覆盖写入,强烈推荐!
Pandas使用df.Iloc查询数据的方法
使用单个label值查询数据
使用值列表批量查询
使用数值区间进行范围查询
使用条件表达式查询
调用函数查询
注意
●以上查询方法,既适用于行,也适用于列
●注意观察降维dataFrame>Series>值
数据导入
数据处理
数据查询
1.使用单个label值查询数据
行或者列,都可以只传入单个值,实现精确匹配
2.使用值列表批量查询
3.使用数值区间进行范围查询
4.使用条件表达式查询
5.调用函数查询
五、Pandas新增数据列
1.直接赋值法
2.df.apply方法
沿DataFrame的轴应用函数
传递给函数的对象是序列对象,其索引是DataFrame的索引(axis=0)或DataFrame的列(axis=1)。
3.df.assign方法
4.按条件选择分组分别赋值
六、Pandas数据统计函数
1.汇总类统计
2.唯一去重
3.相关系数和协方差
协方差:衡量同向反向程度,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X, Y反向运动,协方差越小说明反向程度越高。
相关系数:衡量相似度程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大
七、Pandas缺失值处理
Pandas使用这些函数处理缺失值:
●isnull和notnull:检测是否是空值,可用于df和Series
●dropna:丢弃、删除缺失值■axis:删除行还是列,{0 or 'index', 1 or 'columns'}, default 0
■how:如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
■inplace:如果为True则修改当前df, 否则返回新的df
●fillna:填充空值
■value:用于填充的值,可以是单个值,或者字典(key是列名, value是值)
■method:等于fill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
■axis:按行还是列填充,{0 or 'index', 1 or 'columns'}
■inplace:如果为True则修改当前df,否则返回新的df
源数据:
步骤1
步骤2
步骤3
步骤4
步骤5
步骤6
八、Pandas数据排序
Series的排序:
Series.sort_values(ascending=True, inplace=False)
参数说明: .
●ascending: 默认为True升序排序,为False降序排序
●inplace: 是否修改原始Series
DataFrame的排序:
DataFrame.sort_ values(by, ascending=True, inplace=False)
参数说明:
●by:字符串或者List<字符串>,单列排序或者多列排序
●ascending: bool或者List, 升序还是降序,如果是list对应by的多列
●inplace: 是否修改原始DataFrame
九、Pandas字符串处理
Pandas的字符串处理:
使用方法:先获取Series的str属性,然后在属性上调用函数;
只能在字符串列上使用,不能数字列上使用; .
Dataframe.上没有str属性和处理方法
Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似;
十、Pandas索引
1.设置索引
2.使用index会提升查询性能
●如果index是唯一的,Pandas会使用哈希表优化,查询性能为O(1);
●如果index不是唯一的,但是有序,Pandas会使用二分查找算法,查询性能为O(logN);
●如果index是完全随机的,那么每次查询都要扫描全表,查询性能为O(N);
●Categoricallndex,基于分类数据的Index,提升性能;
●Multilndex, 多维索引,用于groupby多维聚合后结果等;
●Datetimelndex, 时间类型索引,强大的日期和时间的方法支持;