Pandas

Pandas

Pandas(Python Data Analysis Library)是基于numpy的一种工具,为了解决数据分析任务而创建。

1 Series

结构: 索引 + 一维数组数值

1.1 创建Series

通过三种方式创建: pd.Series ( list /array / dict)

  1. 列表list
    Pandas
  2. 数组array
    Pandas
  3. 字典dict(键——索引,值——值)
    Pandas

; 1.2 指定Series索引

pd.Series (list , index=[ ])

Series默认索引为0 1 2 3…

指定index ,索引长度要与值长度一致

Pandas

1.3 获取Series数据

获取索引 .index

Pandas
获取值 .values
Pandas

; 1.4 Series运算

  1. 加减乘除
    直接对Series进行操作
    Pandas
  2. 筛选

筛选出大于3的数值

Pandas
  1. Series之间的操作

**两个series进行操作,相同索引的值进行运算;若无相同索引,最终相加结果赋值为NaN。

Pandas
Pandas

2 DataFrame

表格型数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等);
既有行索引也有列索引,可以被看作由series组成的字典(共用同一个索引)。

2.1 创建Dataframe

pd. DataFrame (array / dict)

  1. 通过 array

未指定行索引和列索引,默认0 1 2…

Pandas

指定行列索引:pd. DataFrame (arr , columns =[ ] , index=[ ])

Pandas
  1. 通过dict
    Pandas

; 2.2 dataframe常见操作

  1. 查看数据

  2. head()查看头数据 tail()查看尾数据

    Pandas
  3. info() 查看数据结构及储存信息
    Pandas
  4. describe() 查看数据按列的统计信息
    Pandas

std代表标准差

  • mean()均值 median()中位数

Pandas
  • index 行索引 columns 列索引
    Pandas
  • T转置

    Pandas
  • 排序

sort_index(axis=0/1,ascending=True/False)

axis=0按行索引进行排序 axis=1按列索引进行排序
ascending=True(索引按从小到大排序)/False(索引按从大到小排序)

Pandas

3 对比Series与Dataframe

DataFrame是由多个共用相同索引的Series组成,
Series没有列索引,DataFrame有列索引
可拆分、合并互相转化

3.1 Dataframe可拆分成多个Sereis

通过相应列名

Pandas

; 3.2 多个Sereis可组成Dataframe

Pandas

其中name,age,sex列为不同的Series.

3.3 其他:逐行读取数据

for index.value in df.iterrows():

Pandas
读出具体数值
Pandas

; 4 Pandas IO 操作(input/output文件的读与写)

url: ‘https://pandas.pydata.org/pandas- docs/ version/1.0.1 /users_guide /io.html’

4.1 读取数据

  1. 读取外部数据
import pandas as pd
data=pd.read_csv(r'C:\Users\lenovo\python数据分析\df.csv',sep=',')
  1. 设置工作目录

查看当前目录下文件
!dir #Windows操作系统

Pandas
!ls #Linux

调用os包

import os
os.chdir(r'C:\Users\lenovo\python数据分析')
data1=pd.read_table('df.txt')
  1. read_csv 读取csv、txt数据
    Pandas
  2. read_excel 读取excel数据
    Pandas

4.2 输出数据

  1. to_excel

输出一个excel文件

Pandas
df.to_excel(‘ ‘,header=T/F,index=T/F)

header=True/False 输出/不输出标题

index=True/False 输出/不输出索引

Pandas
Pandas
  1. to_dict

输出一个字典

Pandas
  1. to_csv (‘ 文件名’)

输出一个csv文件

  1. to_html

输出一个网页文件

Pandas
Pandas

; 5 loc与iloc数据选择

选择指定行列 loc/iloc

5.1 loc

  1. 选择列/行

loc [row,column]

df.loc[ : , : ] 返回所有数据

row 选择指定行数索引

df.loc[ : 3, : ] 返回前4行(0,1,2,3)

column 选择指定的列名

df.loc[ : ,’列名’] 返回Series (1列)
df.loc[ : , [‘列名’,’列名’]] 返回DataFrame (可多列)

加中括号可返回多列DataFrame

Pandas
  1. 筛选特定条件的DataFrame

选择出所有stockcode为71053的数据

Pandas
选择出所有索引为偶数的数据 df .index%2==0
Pandas

; 5.2 iloc

loc前面输入数字后面需要输入列名
iloc前后返回行列都需要输入数字,不能输入相应列名

df.iloc[ :3 , : 3] 返回前3行前3列 (0,1,2) 与loc不同

Pandas

6 pivot_table 数据透视表

Pandas

df.pivot_table( ) 内部参数默认

Pandas
aggfunc 默认计算均值 ,可进行修改用于求和等

aggfunc=[np.sum,len,np.mean]

可传入字典,指定列进行相关计算

Pandas
fill_value 空值填充
margins 统计,求和由aggfunc决定

; 7 merge连接

内部参数

Pandas
how:
‘inner’内连接(默认内连接) 根据on条件,列出左右两表共有数据
‘left’ 左连接 表1的完全集,而表2中匹配的则有值,没有匹配的则以null值取代
‘right’右连接 表2从完全集,而表1中匹配的则有值,没有匹配的则以null值取代
‘outer’全连接 所有值

on =两个dataframe相同的列名
left_on=第一个dataframe列名
right_on=第二个dataframe列名
Suffixes=(‘_x’,’_y’) 可传入指定后缀名 ,如果两个dataframe有相同列名,则第一个dataframe列名默认后缀+’_x’,第二个列名默认后缀+’_y’

Pandas

Pandas
Pandas
Pandas
Pandas

8 groupby分组

g=data.groupby(‘分组字段’)

过程是将一个DataFrame按照groupby字段,化分成若干个分组DataFrame,分组会返回一个DataFrameGroupby对象

Pandas
Pandas
  • list() 查看DataFrameGroupby对象内部情况
    Pandas
  • get_group() 查看一个组的数据情况 g.get_group()
    Pandas
  • agg函数聚合 data.groupby( ).agg( )

相关函数:
min 、max、 sum、 mean、 median、
count 计数,不包含NaN值、
size 计数,包含NaN值、
nunique 计算去重后的个数。

Pandas
groupby分组后直接.agg()进行聚合操作
Pandas
Pandas
**可通过传入字典的形式不同列进行不同操作,也可对一个列进行多个操作

; 9 map、replace操作

9.1 map

内部参数

Pandas
  1. arg

字典键值对替换,若字典中没有找到series中对应的值,则赋值为 NaN

Pandas
Pandas
  1. na_action

如果传入’ignore’,则跳过对空值的操作

Pandas

; 9.2 Replace

字典键值对替换,其他值保持不变

  1. 指定列替换
    Pandas
    Pandas
  2. 不指定列替换
    Pandas

10 分箱操作

pd.cut 常用来把一组数据分割成离散的区间

内部参数

Pandas
x:被切分的类数组数据,一维,arrary/series
bins:被切割后的区间个数
  1. int:当bins为一个ins型标量时,如bins=3,代表将x分为三个区间
    Pandas
    Pandas
  2. sequence:指定区间如[0,59,70,80,100],控制区间范围
    Pandas
    right:bool型参数,默认为True。right=True,区间左开右闭;right=False,区间左闭右开
    labels:给分割后的bins区间设置标签,labels的长度和划分后的区间长度相同,例如分割后有2个区间,则labels长度必须为2.

Pandas

可将其转化为dataframe形式

Pandas
Pandas
Pandas

; 11 apply自定义函数

可直接用于Series和DataFrame对象,进行数据聚合运算

apply( np.sqrt ) 开根号

Pandas
Pandas
apply ( pd.to_datetime ) 计算时间间隔
Pandas
Pandas

对多列进行操作 采用自定义函数,axis=1
例:score>=600且interval

lambda

Pandas

12 其他常用函数

  1. rename 修改列名/索引
    Pandas
    Pandas
    令inplce=True,才会将其真正改变,否则只是改变了副本
  2. set_index 将DataFrame中的某一(多)个字段设置为索引
    Pandas
    若将多个字段同时设置为索引需加中括号
    Pandas
  3. reset_index 重置索引

参数:drop
drop=False 保留原索引 ,并作为DataFrame新字段 默认
drop=True 删除原索引

Pandas
Pandas
Pandas
  1. drop_duplicates 去重

参数:
subset 指定列作为主键,即在去重过程只针对指定列进行去重,保留指定列不同的字段;不指定列时去重完全重复的数据。
keep first/last 即在去重过程中保留第一行还是最后一行,默认first.

Pandas
Pandas
  1. drop 删除DataFrame指定列与索引
    Pandas
  2. isin 常用于构建布尔索引,对DataFrame的数据条件筛选
    Pandas
  3. value_counts 统计分类变量中每个类的数量

参数:normalize=True返回各类的占比,否则返回具体数量

Pandas
Pandas
  1. isna 判断DataFrame/Series是否为缺失值,是的话返回True。
    Pandas
    返回出有缺失值的一行
    Pandas
    any df.isna( ).any( ) 可判断某一列是否有缺失值,方便
    Pandas
  2. dropna 删除含有缺失值的数据
    Pandas
  3. fillna 填充缺失值

参数:
value
method
=pad/ffill 用上一个值填充;
=backfill/bfill 用下一个值填充。

Pandas
  1. sort_values

按照某列(通过参数by实现)进行排序,对Series按数据列进行排序

Pandas

默认ascending=True,即由小到大排序;令ascending=False由大到小排序

Original: https://blog.csdn.net/mylnn/article/details/119857546
Author: Luminita_myl
Title: Pandas

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

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

(0)

大家都在看

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