Pandas入门 (一)

一、什么是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 = "\t",
      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, 时间类型索引,强大的日期和时间的方法支持;

posted @ 2020-10-14 15:17  旭东东  阅读(351)  评论(0编辑  收藏  举报