文章目录
- 1.导入Pandas库
- 2.创建Series对象
- 3.获取Series中的所有索引和值
- 4.判断Series是否包含某一个索引
- 5.对齐两个Series
- 6.为Series及其索引列命名
- 7.创建DataFrame对象
- 8.DataFrame对象的常用属性
- 9.获取DataFrame对象中的某一行
- 10.对Series对象或DataFrame对象重新索引
- 11.索引类型Index的常用方法
- 12.删除对象指定的索引所对应的行或列
- 13.Pandas库中数据的算术运算
- 14.数据排序
- 15.基本统计分析函数
- 16.对每一列进行基本统计分析
- 17.累计统计分析函数
- 18.相关分析函数
- 19.读取csv格式文件
- 20.对DataFrame进行索引和切片
- 21.填充DataFrame中的缺失值
- 22.生成哑变量(虚拟变量)
- 23.在DataFrame中随机抽取对象
- 24.读取Excel文件
- 25.DataFrame的索引和切片
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模块中的一个函数,用于检测DataFram
e中的缺失值(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