Pandas学习

Pandas

  1. 掌握外部数据的读取
  2. 如何快速地认识数据的概览信息
  3. 数据子集的筛选与清洗
  4. 数据的汇总处理
  5. 数据的合并与连接

1.外部数据的读取

  • 文本文件的读取
#文本文件的读取
pd.read_csv(filepath or buffer,sep = ',',header = 'infer',names = None,usecols = None,skiprows = None,skipfooter = None,converters = None,encoding = None)

filepath or buffer: 指定txt文件或者csv文件所在的具体路径
sep: 指定原数据集中各字段之间的分隔符,默认为逗号“,”
header: 是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称
names: 如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头
usecols: 指定需要读取原数据集中的哪些变量名
skiprows: 数据读取时,指定需要跳过原数据集开头的行数
skipfooter: 数据读取时,指定需要跳过原数据集末尾的行数
converters: 用于数据类型的转换(以字典的形式指定)
encoding: 如果文件中含有中文,有时需要指定字符编码
  • 电子表格的读取
pd.read_excel(io,sheetname = 0,header = 0,skiprows = None,skip_footer = 0.index_col = None,names = None,na_values = None,thousands = None,convert_float = True)

io: 指定电子表格的具体路径
sheetname: 指定需要读取电子表格中的第几个Sheet,既可以传递整数也可以传递具体的Sheet名称
header: 是否需要将数据集的第一行用作表头,默认是需要的
skip_footer: 读取数据时,指定跳过的末尾行数
index_col: 指定哪些列用作数据框的行索引(标签)
  • 数据库数据的读取
bridge = pymysql.conneect(host = None,user = None,password = '',database = None,port = 0,charset = '')
pd.read_sql("sql查询语句",con = bridge)

host: 指定需要访问的MySQL服务器
user: 指定访问MySQL数据库的用户名
password: 指定访问MySQL数据库的密码
database: 指定访问MySQL数据库的具体库名
port: 指定访问MySQL数据库的端口号
charset: 指定读取MySQL数据库的字符集,如果数据库表中含有中文,一般可以尝试将该参数设置为“utf-8”或“gdk”

2.数据的概览

  1. 数据规模

data.shape #展示数据的总记录条数和总列数,以逗号隔开

  1. 列名称

data.columns #展示数据的所有列的名称

  1. 数据类型

data.dtypes #展示每一列的数据类型

  1. 统计描述

data.describe() #describe默认对数值型数据做统计描述(count,mean,std,min,25%,50%,75%,max)

data.describe(include = ‘object’) #describe默认对非数值型数据做统计描述(count,unique,top,freq)

  1. 提取某一列

dada.name #name为列的名称
data[‘xxxx’] #'xxx’为具体表名,通过索引法找打具体某一列(可以为多个索引,data[[‘xxxx’,‘yyyy’,‘zzzz’]],中间用逗号隔开,注意为双括号)

  1. 查找关键信息

data.loc [ data.列名称 = ‘关键字’ , : ]

data.loc [ ( data.列名称 = ‘关键字’ ) & ( 筛选条件 ) , : ]

data.loc [ ( data.列名称 = ‘关键字’ ) & ( 筛选条件 ) ,[ 标注想要查看的列 ]]

3.数据的清洗

  1. 数据类型的修改

pd.to_datetime

#将object类型的时间串转换为日期格式
sec_car = pd.read_csv(r'D:\Anaconda3练习\数据\第5章 Python数据处理工具--Pandas\sec_cars.csv')
sec_car.Boarding_time = pd.to_datetime(sec_car.Boarding_time,format='%Y年%m月')

df.column.astype

#将某一object类型转换为指定类型
sec_car.New_price = sec_car.New_price.str[:-1].astype(float)
  1. 冗余数据的识别与处理
    在这里插入图片描述

df.duplicated

在这里插入图片描述

df.drop_duplicates

在这里插入图片描述
值得注意的是,虽然修改了数据,但是并不会修改原始数据,我们需要给该方法提供相应的参数。df.drop_duplicates(inplace = False)

  1. 异常值的识别与处理
  • Z得分法
  • 分位数法
  • 距离法

Z得分法
要求数据近似服从正态分布,落在以平均值为中心轴,左右偏移确定数量个标准差的外围数据,我们统称为异常值。
在这里插入图片描述

分位数法
对于并不服从正态分布的数据,将数据用五条线划分为六部分,分别为Q1-nIQR、Q1(25%)、Q2(50%)、Q3(75%)、Q3+nIQR(IQR=Q3-Q1)
在这里插入图片描述

4. 缺失值的识别与处理

在这里插入图片描述

df.isnull

如果不加以限制,会返回同等规模大小的表,来展示每一个单元格是否缺失
在这里插入图片描述
添加any()限制则会仅对该列是否存在缺值进行展示。
在这里插入图片描述

df.fillna

在这里插入图片描述

df.dropna

表示对缺失记录整条删除

5.数据的汇总

  1. 透视表功能

在这里插入图片描述

pd.pivot_table(data,values = None,index = None,columns = None,aggfunc = 'mean',fill_value = None,margins = False,dropna = True,margins_name = 'All')

data: 指定需要构造透视表的数据集
values: 指定需要拉入“数值”框的字段列表
index: 指定需要拉入“行标签”框的字段列表
columns: 指定需要拉入“列标签”框的字段列表
aggfunc: 指定数值的统计函数,默认为统计均值,也可以指定numpy模块中的其他统计函数
fill_value: 指定一个标量,用于填充缺失值
margins: bool类型参数,是否需要显示行或列的缺失值,默认为False
dropna: bool类型参数,是否需要删除整列为缺失的字段,默认为False
margins_name: 指定行或列的总计名称,默认为All

在这里插入图片描述

6.数据的合并与连接

pd.concat(objs, axis=0, join='outer', join_ axes= None,ignore_index= False, keys= None)

objs:指定需要合并的对象,可以是序列、数据框或面板数据构成的列表

axis:指定数据合并的轴,默认为0,表示合并多个数据的行,如果为1,就表示合并多个数据的列join:指定合并的方式,默认为outer,表示合并所有数据,如果改为inner,表示合并公共部分的数据 join_ axes:合并数据后,指定保留的数据轴

ignore_ index: bool类型的参数,表示是否忽略原数据集的索引,默认为False,如果设为True,就表示忽略原索引并生成新索引

keys:为合并后的数据添加新索引,用于区分各个数据部分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值