Pandas详细总结(20000字 完结)

文章内容是我自己学习pandas所做的一些笔记,知识点搭配案例,内容全面而详细。

目录

Series对象

●创建Series对象

●Series的索引

DataFrame对象

●创建DataFrame对象

DataFrame对象的一些重要属性

DataFrame对象的一些重要方法

导入外部数据

导入.xIs或.xIsx文件

导入csv文件

导入html网页数据

数据提取loc和iloc的使用

数据提取按行

数据提取按列

提取区域数据

筛选指定条件数据

数据的增加修改和删除

数据增加

数据修改(内容和索引的修改)

删除数据drop()

数据清洗(缺失值和重复值的处理)

查看缺失值以及判断缺失值

缺失值的处理方式

重复值处理

索引设置

​编辑重新设置索引

设置某列为行索引

●数据清洗后重新设置连续索引

数据的排序和排名

数据的排序sort_values()方法

数据的排名 rank()

数据的计算(求和方差等)

数据格式化

​编辑设置小数位数

设置千位分隔符

设置百分比

apply() applymap() map() 区别

数据分组统计分析groupby()

分组数据的迭代

对分组的某列或多列使用聚合函数

通过字典和Series对象进行分组统计

数据移位 .shift()

数据转换

一列数据转换为多列数据

行列转换

DataFrame转换为字典、列表和元组

数据合并

merge()

merge方法一对一合并

左连接

右连接

内连接 外连接

多对多或者多对一合并

concat()

纵向合并

横向合并

交叉合并

数据导出

导出数据为Excel文件

导出数据为CSV文件

日期数据处理

日期数据转换

dt对象的使用

获取日期区间数据

按时期统计并显示数据

按时期统计数据 df.resample()

按时期显示数据 df.to_period()

先统计后显示

时间序列 pandas.date_range()

时间序列重采样

时间序列数据汇总 resample().ohlc()

移动窗口数据计算 df.rolling()

Series对象

●Pandas库中的一种数据结构,类似于一维数组
●由一组数据以及与这组数据有关的标签(索引)组成
●Series对象可以存储整数、浮点数、字符串、Python对象等多种数据类型的数据

●创建Series对象

pd.Series(data,index=index)

import pandas as pd
data=[‘语文’,’数学’,’英语’]
s=pd.Series(data=data,index=[‘张三’,’李四’,’王五’])
print(s)

张三    语文
李四    数学
王五    英语
dtype: object

●Series的索引

●位置索引
●索引范围[0,N-1]
●标签索引
●索引名称
●获取多个标签索引值使用[标签索引1,标签索…]
●切片索引
●[start:stop:step]
●获取Series的索弓|和值
●获取索引s.index
●获取值s.values

这是一个Series对象s
张三 语文
李四 数学
王五 英语
dtype: object

●位置索引
print(s[1]) >>>数学
●标签索引
print(s[‘李四’]) >>>数学
print(s[[‘张三’,’王五’]])
张三 语文
王五 英语
dtype: object
●切片索引

位置索引切片 含头不含尾

print(s[0:2])
张三 语文
李四 数学
dtype: object

标签索引切片 含头含尾

print(s[‘张三’:’王五’])
张三 语文
李四 数学
王五 英语
dtype: object
●Series的索弓|和值
s.values
[‘语文’ ‘数学’ ‘英语’]
s.index
Index([‘张三’, ‘李四’, ‘王五’], dtype=’object’)

DataFrame对象

●DataFrame对象是Pandas库中的一种数据结构,类似于二维数组,由行列构成

●与Series一样支持多种数据类型

●创建DataFrame对象

●pd.DataFrame(data,index,columns,dtype)

import pandas as pd
data=[[‘小太阳’,150,99],[‘剪刀’,15,999],[‘电脑’,999,888]]
columns=[‘名称’,’价格’,’数量’]
s=pd.DataFrame(data=data,columns=columns)
s

Pandas详细总结(20000字 完结)
data={
‘名称’:[‘小太阳’,’剪刀’,’电脑’],
‘价格’:[150,15,999],
‘数量’:[99,999,888],
‘供应商’:’英雄联盟’
}
s=pd.DataFrame(data=data)
s
Pandas详细总结(20000字 完结)

DataFrame对象的一些重要属性

1 values 查看所有元素的值
2 dtypes 查看所有元素的类型
3 index 查看所有行名、重命名行名
4 columns 查看所有列名、重命名列名
5 T 行列数据转换
6 head 查看前N条数据,默认5条
7 tail 查看后N条数据,默认5条
8 shape 查看行数和列数shape[0]表示行,shape[1]表示列

data={
    '名称':['小太阳','剪刀','电脑'],
    '价格':[150,15,999],
    '数量':[99,999,888],
    '供应商':'英雄联盟'
}
s=pd.DataFrame(data=data)

1 s.values

Pandas详细总结(20000字 完结)
2 s.dtypes
Pandas详细总结(20000字 完结)
3 s.index
Pandas详细总结(20000字 完结)
4 s.columns
Pandas详细总结(20000字 完结)
5 s.T
Pandas详细总结(20000字 完结)
8 s.shape s.shape[0] s.shape[1]
(3,4) 3 4

DataFrame对象的一些重要方法

1 describe() 查看每列的统计汇总信息,DataFrame类型

Pandas详细总结(20000字 完结)
2 count() 返回每一列的非空值的个数
Pandas详细总结(20000字 完结)
3 sum() 返回每一列的和,无法计算返回空值
Pandas详细总结(20000字 完结)
4 max() 返回每一列的最大值
Pandas详细总结(20000字 完结)
5 min() 返回每一列的最小值
6 info() 查看索引、数据类型和内存信息
Pandas详细总结(20000字 完结)

导入外部数据

导入.xIs或.xIsx文件

●导入.xIs或.xIsx文件
●pd.read excel(io,sheet name,header)
●常用参数说明
●io:表示.xIs或.xIsx文件路径或类文件对象
●sheet_name:表示工作表,用法如下
●header:默认值为0,取第一行的值为列名,数据为除列名以外的数据,如果数据不包含列名,则设置header=None

sheet_ name=0 第一个Sheet页中的数据作为DataFrame对象
sheet_ name=1 第二个Sheet页中的数据作为DataFrame对象
sheet_ name= ‘Sheet1’ 名称为’Sheet1 ‘的Sheet页中的数据作为DataFrame对象
sheet name=[0,1,’Sheet3’] 第一 个第二个和名称为Sheet3的Sheet页中的数据作为DataFrame象
sheet_ name=None 读取所有工作表

fp=pd.read_excel(‘美团商家数据.xlsx’,sheet_name=0,usecols=[‘店铺名’,’饮食类型’])
或fp=pd.read_excel(‘美团商家数据.xlsx’,sheet_name=0,usecols=[0,1])

Pandas详细总结(20000字 完结)
Pandas详细总结(20000字 完结)

导入csv文件

● pd.read_ csv(filepath or_ buffer ,sep=’,’,header,encoding= None)
● 常用参数说明
● filepath_ or _buffer:字符串、文件路径,也可以是URL链接
● sep:字符串、分隔符
● header:指定作为列名的行,默认值为0,即取第一行的值为列名。数据为除列名以外的数据,若数据不包含列表,则设置header= None
● encoding:字符串, 默认值为None,文件的编码格式

fp=pd.read_csv(r'C:\Users\xiaoxin15\Desktop\美食商家数据.csv',sep=',',encoding='gbk')
gbk对应ANSI
print(fp.head(5))

导入html网页数据

Pandas详细总结(20000字 完结)

只可以读取含有table标签的网页

import pandas as pd
url=’http://www.espn.com/nba/salaries’
df=pd.concat(pd.read_html(url,header=0))
print(df)

Pandas详细总结(20000字 完结)

数据提取loc和iloc的使用

Pandas详细总结(20000字 完结)

import pandas as pd
data=[[45,65,200],[89,69,42],[58,74,39]]
index=[‘张三’,’李四’,’王五’]
col=[‘语文’,’数学’,’英语’]
s=pd.DataFrame(data=data,index=index,columns=col)
s

Pandas详细总结(20000字 完结)

数据提取按行

(‘—————————————————————-数据提取 根据标签’)
s.loc[‘张三’]
(‘—————————————————————-数据提取 根据序列’)
s.iloc[0]

Pandas详细总结(20000字 完结)
(‘—————————————————————-数据提取 提取多行’)
s.loc[[‘张三’,’王五’]]

s.iloc[[0,2]]
Pandas详细总结(20000字 完结)
(‘—————————————————————-切片’)
s.loc[‘张三’:’王五’]
Pandas详细总结(20000字 完结)
s.iloc[0:2]含头不含尾
Pandas详细总结(20000字 完结)
s.iloc[::]#start:stop:step
Pandas详细总结(20000字 完结)

数据提取按列

Pandas详细总结(20000字 完结)

print(‘———————————————-直接使用列名’)
s[[‘数学’,’英语’]]
print(‘———————————————使用loc iloc’) :逗号左边表示行 逗号右边表示列
s.loc[:,[‘数学’,’英语’]]
s.iloc[:,[1,2]]

Pandas详细总结(20000字 完结)
print(‘—————-提取连续数据’)
s.loc[:,’语文’:]

s.iloc[:,0:]

s.iloc[:,[0,1,2]]
Pandas详细总结(20000字 完结)

提取区域数据

s.loc[‘张三’,’语文’]
s.iloc[0,0]
45

s.loc[[‘张三’,’王五’],[‘语文’,’数学’]]
s.iloc[[0,2],[0,1]]

Pandas详细总结(20000字 完结)

s.iloc[0:2,0:2] #,左边行切片,右边列切片
s.loc[‘张三’:’王五’,’语文’:’英语’]

Pandas详细总结(20000字 完结)

筛选指定条件数据

单个条件
s[‘语文’]>=50

Pandas详细总结(20000字 完结)
s.loc[s[‘语文’]>=50]
Pandas详细总结(20000字 完结)
多个条件
s.loc[(s[‘语文’]>=50) & (s[‘数学’]>=70)]
Pandas详细总结(20000字 完结)

数据的增加修改和删除

Pandas详细总结(20000字 完结)

数据增加

按行

Pandas详细总结(20000字 完结)
print(‘————————————–直接赋值’)
s[‘化学’]=[90,88,67]
s
Pandas详细总结(20000字 完结)
print(‘————————————–采用loc属性在最后一列增加’)
s.loc[:,’物理’]=[77,88,99]
s
Pandas详细总结(20000字 完结)
print(‘————————————–在指定索引位置添加一列’)
lst=[22,33,32]
s.insert(0,’心理’,lst)
s
Pandas详细总结(20000字 完结)

按列

Pandas详细总结(20000字 完结)
print(‘————————————–采用loc属性’)
s.loc[‘沙比’]=[77,88,99]
Pandas详细总结(20000字 完结)
print(‘————————————–添加多行’)
d=pd.DataFrame( data={‘语文’:[78,79],’数学’:[74,71],’英语’:[45,46]}, index=[‘小虎’,’小红’] ) s=pd.concat([s,d])
Pandas详细总结(20000字 完结)

数据修改(内容和索引的修改)

Pandas详细总结(20000字 完结)
print(‘———————————————————修改列索引’)
print(‘—————1 直接使用 columns属性’)
s.columns=[‘chinese’,’math’,’english’]
Pandas详细总结(20000字 完结)
print(‘—————2 使用 rename方法’)
s.rename({‘chinese’:’语文’,’math’:’数学’,’english’:’英语’},inplace=True,axis=1)
Pandas详细总结(20000字 完结)
print(‘———————————————————修改行索引’)
print(‘—————1 直接使用 index属性’)
s.index=[‘小明’,’小虎’,’小狗’]
Pandas详细总结(20000字 完结)
print(‘—————2 使用 rename方法’)
s.rename({‘小明’:’张三’,’小虎’:’李四’,’小狗’:’王五’},inplace=True,axis=0)
Pandas详细总结(20000字 完结)

数据内容的修改

print(‘———————————————————-修改数据内容’)
print(‘————————-修改一整行’)
s.loc[‘张三’]=[10,10,10] / s.iloc[0,:]=[10,10,10]

Pandas详细总结(20000字 完结)
print(‘————————-修改一整列’)
s[‘数学’]=[100,100,100] s.loc[:,’数学’]=[100,100,100]
Pandas详细总结(20000字 完结)
print(‘————————-修改某一处’)
s.loc[‘李四’,’语文’]=80或s.iloc[1,0]=80
Pandas详细总结(20000字 完结)

删除数据drop()

print(‘——————————————————————删除列数据’)
s.drop([‘语文’],axis=1,inplace=True)

Pandas详细总结(20000字 完结)
s.drop(columns=’英语’,inplace=True)
Pandas详细总结(20000字 完结)
s.drop(labels=’数学’,axis=1,inplace=True)
Pandas详细总结(20000字 完结)

print(‘————————————————————删除行数据’)
s.drop([‘张三’],axis=0,inplace=True)
s.drop(index=’李四’,inplace=True)
s.drop(labels=’王五’,axis=0,inplace=True)

条件删除print(‘————————————————————条件删除’)

s.drop(s[s[‘语文’]

Original: https://blog.csdn.net/weixin_54824895/article/details/126089167
Author: 一事无成~
Title: Pandas详细总结(20000字 完结)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678789/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球