Bootstrap

Python Pandas库 最快入门教程(最简单最详细)

1.导入Pandas库

import pandas as pd

2.创建Series对象

# 使用Series函数创建一个Series对象
# 语法:pd.Series(列表/ndarray数组,index=自定义索引列表)
# 语法解释:自定义索引参数可以省略,此时使用Series的默认索引。也可以直接用一个字典类型创建Series,此时可以不用index参数
pd.Series([9,8,7,6,5],index=["a","b","c","d","e"])

3.获取Series中的所有索引和值

# 通过index属性和values属性获取Series中的所有索引和值
temp=pd.Series([9,8,7,6,5].index=["a","b","c","d","e"])
Indexs=temp.index
Values=temp.values

4.判断Series是否包含某一个索引

# 使用关键字in即可判断Series中是否包含某个索引(只针对用户自定义的索引)
temp=pd.Series([9,8,7,6,5].index=["a","b","c","d","e"])
print('c' in temp)

5.对齐两个Series

# 使用加号可以将两个Series进行对齐,生成一个新的Series对象。新对象的索引是相加的两个Series的并集
temp1=pd.Series([1,2,3,4,5],index=["a","b","c","d","e"])
temp2=pd.Series([5,4,3,2,1],index=["b","c","d","e","f"])
temp3=temp1+temp2

6.为Series及其索引列命名

# 使用Series对象和其索引值index的属性name即可命名。
temp=pd.Series([1,2,3,4,5])
temp.name="NewSeries“
temp.index.name="索引列"

7.创建DataFrame对象

# DataFrame数据是多列共用同一列的索引,也就是一张二维表格
# 纵轴的axis=0;横轴的axis=1
# 创建语法:pd.DataFrame(ndarray数组/字典,index=行标序列)
# 上述参数中的行标序列可以省略
# 可选参数:columns是可选参数,表示每一列的列名,用一个列表表示
a=np.array([1,2,3,4,5;6,7,8,9,10])
test=pd.DataFrame(a)

8.DataFrame对象的常用属性

  • shape:返回一个元组,其中包含DataFrame中的行数和列数。
  • columns:返回一个列表,其中包含DataFrame中的列名。
  • index:返回一个表示DataFrame中行索引的对象。
  • values:返回一个包含DataFrame中所有数据的二维数组。
  • dtypes:返回一个Series对象,其中包含每个列的数据类型。
  • info():以类似于Python中的print函数的方式打印有关DataFrame的详细信息,包括每个列的名称、非空值的数量和数据类型等。
  • describe():提供有关DataFrame中数值列的统计信息,包括计数、均值、标准差、最小值、25%、50%、75%和最大值等。
  • head(n):返回一个包含DataFrame前n行的新DataFrame对象。
  • tail(n):返回一个包含DataFrame后n行的新DataFrame对象。

9.获取DataFrame对象中的某一行

# 使用.ix函数获取DataFrame对象中的某一行
# 语法:DataFrame对象名.ix[行标]
a=np.array([1,2,3,4,5;6,7,8,9,10])
test=pd.DataFrame(a)
result=test.ix[1]

10.对Series对象或DataFrame对象重新索引

# 使用reindex函数对对象进行索引重排,也就是交换表格中行或列的顺序,返回一个重排后的对象
# 语法:对象名.reindex(index/columns=重排后的列表)
a=np.array[1,2,3,4,5;6,7,8,9,10]
test=pd.DataFrame(a,["a","b","c","d","e"])
a1=a.reindex(index=["e","d","c","b","a"])
a2=a.reindex(columns=[4,3,2,1,0])

11.索引类型Index的常用方法

# 1.使用append方法进行两个索引的连接,生成一个新的索引对象
语法:index3=index1.append(index2)

# 2.使用diff方法求两个索引的差集,生成一个新的索引对象
语法:index3=index1.diff(index2)

# 3.使用intersection方法求两个索引的交集,生成一个新的索引对象
语法:index3=index1.intersection(index2)

# 4.使用union方法求两个索引的并集,生成一个新的索引对象
语法:index3=index1.union(index2)

# 5.使用delect方法删除指定位置的元素
语法:index.delete(location)

# 6.使用insert方法在指定的位置插入一个指定元素
语法:index.insert(location,element)

12.删除对象指定的索引所对应的行或列

# 使用drop函数删除对象指定索引处的行列
# 语法:对象名.drop(待删除索引列表,axis=0/1)
# 说明:axis=0表示删除行,axis=1表示删除列
a=pd.DataFrame(np.array([1,2,3,4,5]),index=["a","b","c","d","e"])
a.drop(["a","b"])

13.Pandas库中数据的算术运算

算术运算按照行列索引进行补齐后运算,运算结果默认为浮点数形式。如果补齐时发生空缺则自动填充空值NaN。高维数据和低维数据之间发生的运算为广播运算。
算术运算可以直接使用运算符进行,也可以使用相应的方法。使用方法相比于直接使用运算符,其优点在于可以使用一些可选参数。

14.数据排序

在排序中,所有NaN值都默认放到排序的末尾。

# 1.使用sort_index方法在指定轴上根据索引值进行排序
# 语法:对象名.sort_index(axis=轴,ascending=是否升序排序)
# 说明:axis可以取0或1(默认为0),表示排序的索引轴;ascending为True表示升序排序,为False表示降序排序。
b=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b.sort_index(axis=0,ascending=True)

# 2.使用sort_values方法在指定索引值上按照数值进行排序
# 语法:对象名.sort_values(索引名,axis=轴,ascending=是否升序排列)
# 说明:axis参数和ascending参数的作用与sort_index中类似
b=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b.sort_values('a',axis=1,ascending=False)

15.基本统计分析函数

# 1.使用sum函数计算数据的总和
# 2.使用count函数计算非NaN值的数量
# 3.使用mean函数计算数据的算术平均值
# 4.使用median函数计算数据的算术中位数
# 5.使用var函数计算数据的方差
# 6.使用std函数计算数据的标准差
# 7.使用min和max函数计算数据的最小值和最大值
# 8.使用argmin和argmax函数计算数据最小值和最大值处的自动索引
# 9.使用idxmin和idxmax函数计算数据最小值和最大值处的自定义索引

16.对每一列进行基本统计分析

# 使用describe函数对对象中的每一列进行基本统计分析
# 语法:对象名.describe()
a=pd.Series([9,8,7,6],index=['a','b','c','d'])
a.describe()

17.累计统计分析函数

# 1.使用cumsum函数获取前n个数的和
# 语法:对象名.cumsum()
b1=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b1.cumsum()

# 2.使用cumprod函数获取前n个数的积
# 语法:对象名.cumpord()
b2=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b2.cumprod()

# 3.使用cummax函数获取前n个数的最大值
# 语法:对象名.cummax()
b3=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b3.cummax()

# 4.使用cummin函数获取前n个数的最小值
# 语法:对象名.cummin()
b4=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b4.cummin()

## 以下是滚动计算部分,使用较少,因此不给出具体使用
# 5.使用rolling(w).sum函数计算相邻w个元素的和
# 6.使用rolling(w).mean函数计算相邻w个元素的算术平均值
# 7.使用rolling(w).var函数计算相邻w个元素的方差
# 8.使用rolling(w).std函数计算相邻w个元素的标准差
# 9.使用rolling(w).max/min函数计算相邻w个元素的最大/最小值

18.相关分析函数

# 1.使用cov函数计算协方差矩阵
# 语法:对象名.cov()

# 2.使用corr函数计算相关系数矩阵
# 语法:Series对象1.corr(Series对象2)
a=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
b=pd.Series([9,8,7,6,5],index=['a','b','c','d','e'])
a.corr(b)

19.读取csv格式文件

Pandas库中,可以使用read_csv()函数来读取csv文件,其使用语法如下:

import pandas as pd
df = pd.read_csv('filename.csv', header=0, delimiter=',', encoding='utf-8')

参数介绍

  • filename.csv: 要读取的CSV文件名或文件路径。
  • header=0: 表示将第一行作为列名。如果没有列名,则可以设置为header=None。
  • delimiter=',': 表示分隔符,默认为逗号,也可以设置为其他符号。
  • encoding='utf-8': 表示编码方式,默认为UTF-8,也可以设置为其他编码。

该函数在读取csv文件后会将其转换为Pandas中的DataFrame对象。

20.对DataFrame进行索引和切片

iloc是Pandas中DataFrame对象的属性,它是一种基于整数位置的索引方式,用于选取DataFrame对象中的行和列。下面是一些常见的用法:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})

# 选取第一行数据
row1 = df.iloc[0]
# 选取第二列数据
col2 = df.iloc[:, 1]
# 选取第1行,第2列的数据
val = df.iloc[0, 1]
# 选取前两行和前两列的数据
sub_df = df.iloc[:2, :2]

iloc属性的第一个参数表示行索引,第二个参数表示列索引。如果只传入一个参数,则默认选取整行或整列。同时,还可以使用切片和布尔索引等高级方式选取数据。

需要注意的是,iloc属性与loc属性的区别在于,iloc属性是基于整数位置的索引方式,而loc属性是基于标签的索引方式。因此,在使用iloc属性时,需要根据数据的位置进行选取,而不是根据标签进行选取。

21.填充DataFrame中的缺失值

填充缺失值之前首先需要判断DataFrame中有哪些地方是缺失值。

DataFrame.isnull()是Pandas模块中的一个函数,用于检测DataFrame中的缺失值(NaN)并返回一个布尔值的DataFrame,其中缺失值为True,否则为False。它的一般语法如下:

DataFrame.isnull()

该函数不需要任何参数。isnull()函数会遍历DataFrame中的每个元素,并将缺失值(NaN)视为True,否则视为False。它会返回一个与原始DataFrame相同大小的新DataFrame,其中每个元素被替换为一个布尔值。

fillna是Pandas中DataFrame对象的函数之一,用于填充DataFrame对象中的缺失值。下面是一些常见的用法:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6], 'C': [7, 8, 9]})

# 使用0填充缺失值
df.fillna(0, inplace=True)
# 使用前一个非缺失值填充缺失值
df.fillna(method='ffill', inplace=True)
# 使用后一个非缺失值填充缺失值
df.fillna(method='bfill', inplace=True)
# 使用每列的平均值填充缺失值
df.fillna(df.mean(), inplace=True)
# 使用每列的中位数填充缺失值
df.fillna(df.median(), inplace=True)

fillna函数的第一个参数表示要用什么值填充缺失值。除此之外,还可以使用method参数来指定填充方式,例如使用前一个非缺失值或后一个非缺失值填充缺失值。同时,还可以使用一些高级的填充方式,例如使用每列的平均值或中位数填充缺失值。

需要注意的是,fillna函数默认返回一个新的DataFrame对象,如果想在原DataFrame对象上直接修改,则需要设置inplace=True参数。另外,填充缺失值的方式应该根据具体的数据情况来选择,以保证数据的准确性。

如果只需要对某一列或某一行填充缺失值,可以使用fillna()方法对指定列填充缺失值。fillna()方法有多种用法,其中最常见的用法是指定一个值,用该值填充DataFrame中的缺失值。示例如下:

import pandas as pd
import numpy as np

# 创建一个带有缺失值的DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'Dave', 'Emily'],
    'age': [25, np.nan, 35, 40, np.nan],
    'gender': ['F', 'M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 对'age'列中的缺失值用0填充
df['age'].fillna(0, inplace=True)
print(df)

另外,在 Pandas 中,可以使用 dropna() 方法来删除 DataFrame 中包含缺失值的行或列。如果要删除某一列为空缺值的一行,可以先选择该列,然后使用 dropna() 方法进行删除。

具体来说,可以使用以下代码实现删除某一列为空缺值的一行:

import pandas as pd
import numpy as np

# 创建一个包含缺失值的 DataFrame
data = {
    'name': ['Alice', 'Bob', np.nan, 'Dave', 'Emily'],
    'age': [25, 30, 35, np.nan, 45],
    'gender': ['F', 'M', 'M', 'M', np.nan]
}
df = pd.DataFrame(data)

# 删除'gender'列为空缺值的行
df = df[df['gender'].notna()]
print(df)

22.生成哑变量(虚拟变量)

pd.get_dummies是Pandas中的一个函数,用于将分类变量转换成哑变量(dummy variables),也称为指示变量(indicator variables)。其基本语法如下:

import pandas as pd
dummies = pd.get_dummies(data, columns=None, prefix=None, prefix_sep='_', drop_first=False)

参数介绍

  • data:表示要进行转换的数据,可以是一个Series、DataFrame或者一个类似列表的数据结构;
  • columns:表示要进行转换的列名,可以是一个字符串、一个列表或者一个数组,如果不指定则会自动转换所有的分类变量;
  • prefix:表示生成哑变量的前缀名,可以是一个字符串或者一个字典,如果不指定则默认使用原始变量的名字;
  • prefix_sep:表示前缀名和原始变量名之间的分隔符,默认为下划线;
  • drop_first:表示是否丢弃每个类别的第一个水平(或者说第一个分类变量),以避免多重共线性,默认为False。

23.在DataFrame中随机抽取对象

DataFrame.sample()是Pandas模块中的一个函数,用于从一个DataFrame对象中随机抽样一部分数据。它的一般语法如下:

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

其中,参数的含义如下:

  • n:要抽取的样本数量,可以是整数,如果省略,则默认为frac参数。
  • frac:要抽取的样本比例,必须在0到1之间,如果省略,则默认为1。
  • replace:是否有放回地抽取,如果为True,则可以重复抽取相同的样本,默认为False。
  • weights:抽样权重,可以为每个样本指定一个权重值,默认为None,即所有样本具有相等的权重。
  • random_state:用于设置随机数生成器的种子值,以便每次执行相同的随机抽样操作。
  • axis:指定要随机抽样的轴,可以是0(默认)表示沿行随机抽样,或者是1表示沿列随机抽样。

sample()函数会返回一个新的DataFrame对象,包含随机抽样得到的数据。

24.读取Excel文件

# 使用read_excel函数读取excel文件
# 语法:pd.read_excel(excel文件路径)
pd.read_excel("root")

25.DataFrame的索引和切片

# 使用iloc属性对DataFrame进行索引和切片
# 语法:DataFrame对象.iloc[行索引,列索引]
import pandas as pd

data = pd.DataFrame({'A': [1, 2, 3],
                     'B': [4, 5, 6],
                     'C': [7, 8, 9]})

# 选择第二行第三列的元素
element = data.iloc[1, 2]
print(element)  # 输出: 8
;