Pandas 28种常用方法使用总结(下)

简介: Pandas 28种常用方法使用总结

Pandas 28种常用方法使用总结(上):https://developer.aliyun.com/article/1462370


15. 数据读写


可以使用to_csv()方法数据框写入CSV文件,使用to_excel()方法将数据框写入Excel文件,使用read_sql()方法从数据库中读取数据,例如:

# 将数据框写入CSV文件
df.to_csv('example.csv', index=False)
# 将数据框写入Excel文件
df.to_excel('example.xlsx', index=False)
# 从数据库中读取数据
import sqlite3
conn = sqlite3.connect('example.db')
df = pd.read_sql('select * from table1', conn)

16. 编码和解码数据


Pandas提供了多种方法来进行编码和解码数据,例如可以使用get_dummies()方法对某一列进行独热编码,使用factorize()方法将一个类别列编码为数值列,例如:

# 对gender列进行独热编
df = pd.get_dummies(df, columns=['gender'])
# 将gender列编码为数值列
df['gender_code'] = pd.factorize(df['gender'])[0]

17. 数据采样


当数据量很大时,可以对数据进行采样进行快速处理。Pandas中提供了sample()方法,可以从数据框中随机抽取指定数量的行或占总行数的百分比进行采样,例如:

# 从df中随机抽取10行进行采样
sample_df = df.sample(n=10)
# 从df中随机抽取10的行进行采样
sample_df = df.sample(frac=0.1)

18. 数据重塑


在进行数据分析和处理时,有时需要对数据进行重塑,以便于进行后续的操作。Pandas提供了一些方法来进行数据重塑,例如:

  • 将长格式数据重塑为宽格式数据:使用pivot()方法
  • 将宽格式数据重塑为长格式数据:使用melt()方法


例子:

# 将长格式数据重塑为宽格式数据
df.pivot(index='date', columns='gender', values='score')
# 将宽格式数据重塑为长格式数据
df.melt(id_vars='date', value_vars=['math_score', 'biology_score', 'english_score'])

19. 多级索引


多级索引可以帮助我们处理多维数据,常见的多级索引实现方式为层次化索引。Pandas中使用MultiIndex()方法创建多级索引,例如:

# 创建一个拥有两层索引的数据框
df = pd.DataFrame(np.random.randint(10, size=(6,2)), index=[['A', 'A', 'B', 'B', 'C', 'C'], ['X', 'Y', 'X', 'Y', 'X', 'Y']], columns=['col_1', 'col_2'])
# 将数据框按照第一层索引进行排序
df = df.sort_index(level=0)

20. 时间序列数据重采样


Pandas中提供了一些方法用来对时间序列数据进行重采样,例如:

  • 将高频率数据降采样到低频率:使用resample()方法
  • 将低频率数据升采样到高频率:使用asfreq()方法


例子:

# 将按月的数据框重采样到按季度
df.resample('Q').sum()
# 将按年的数据框升采样到按半年
df.asfreq('6M')
同时,Pandas中也提供了各种方便的时间序列函数,例如计算均值、最大值、最小值、求和等,例如:
# 计算按周采样的均值
df.resample('W').mean()
# 计算按季度采样的最大值
df.resample('Q').max()
# 计算按年采样的最小值
df.resample('Y').min()

21. 用apply函数实现对数据的自定义处理


Pandas中,我们可以使用apply()方法将一个函数作用于数据框中所有的行或者列上,实现对数据的自定义处理。例如,我们定义一个函数对每一行进行处理:

def process_data(row):
    # 处理数据的逻辑
    return processed_row
# 对每一行进行
df.apply(process_data, axis=1)

apply()方法中,axis参数可以设置为0表示对每一列进行处理,设置为1表示对每一行进行处理。同时,我们还可以用map()方法和applymap()方法对数据框中每一个元素进行处理:

# 对某一列进行映射处理
df['type'] = df['type'].map({'A': 0, 'B': 1, 'C': 2})
# 对整个数据框进行元素级别的处理
df.applymap(lambda x: x**2)

22. 用groupby和apply函数实现分组自定义处理


除了可以用groupby()方法按照某些列进行分组之外,apply()方法也可以和groupby()方法组合使用,实现对每个分组进行自定义处理。例如:

# 对每个分组进行自定义处理
def process_group(group):
    # 处理分组的逻辑
    return processed_group
df.groupby('gender').apply(process_group)

在这个例子中,我们定义了process_group()函数来处理每个分组,在groupby()方法中设置按gender列进行分组,然后将每个分组别传递到process_group()函数中进行处理。处理结果将组合在一起成为一个新的数据框。


23. 用pd.merge函数实现数据合并


在数据分析中,有时我们需要将多个数据源的数据合并到一个数据框中进行处理,Pandas中提供了pd.merge()函数来实现数据合并。例如,我们可以通过下列代码将两数据框按照一些列的共同特征进行合并:

merged_df = pd.merge(df1, df2, on='id')

在这个例子中,我们将df1df2通过共同列id进行合并,并将合并结果存储在merged_df数据框中。


24. 用pd.concat函数实现数据拼接


除了用pd.merge()函数合并数据框之外,Pandas中还提供了pd.concat()函数来实现数据拼接的功能。pd.concat()函数可以将多个数据框沿着某个轴进行连接,例如:

concatenated_df = pd.concat([df1, df2], axis=0)

在这个例子中,我们将df1df2沿着横轴连接,并将连接结果存储在concatenated_df中,其中axis的取值为0表示沿着纵轴进行连接,取值为1表示沿着横轴连接。


25. 获取唯一值


unique是Pandas中的一个方法,用于返回一个数组中唯一值的集合,并按照出现的顺序排序。该方法可用于Series和DataFram中的列。

例如,对于以下的Series:

使用unique方法可以返回Series中的唯一值:

s.unique()

输出结果为:

array([2, 1, 3, 4])

26. 对表中的所有数据执行相同函数运算


applymap是Pandas中DataFrame对象的方法之一,它类似于apply方法,都可以用于对数据进行函数映射操作,但是applymap方法是作用于DataFrame中的所有元素,而不是apply方法作用于一列或一行。

例如,我们有一个包含几个人的信息的DataFrame:

import pandas as pd
df =.DataFrame({'name': ['Alice', 'Bob', 'Charlie'],
                   'age': [25, 30, 35],
                   'height': [1.62, 1.78, 1.72]})

我们可以使用applymap方法将所有元素乘以2:

df.applymap(lambda x: x * 2)

输出结果为:

name  age  height
0  AliceAlice   50    3.24
1    BobBob    60    3.56
2  CharlieCharlie  70    3.44

注意到,因为name这一列的元素是字符串,所以applymap将函数应用到了每个字符上,而不是对整个字符串进行乘法操作。

applymap方法也可以传入自定义函数:

def format_age(age):
    return f"Age: {age}"
df.applymap(format_age)

输出结果为:

name           age          height
0  Age: Alice   Age: 25       Age: 1.621  Age: Bob     Age: 30       Age: 1.78
2  Age: Charlie Age: 35       Age: 1.72

在上面的例子中,我们将函数应用到了每一个单元格,将age的数值与字符串"Age: "连接成新的字符串。


27. 查看某列中是否包含某些值


isin是Pandas中的一个方法,用于检查DataFrame或Series对象中的值是否存在于给定的列表中。返回结果为一个布尔型Series或DataFrame,其中包含所查询元素是否在目标表中的信息。 例如,对于以下DataFrame:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': ['a', 'b', 'c', 'd']})

我们可以使用isin方法判断列B中的元素是否在指定的列表中:

df['B'].isin(['a', 'c', 'e'])

输出结果为:

0     True
1    False
2     True
3    False
Name: B, dtype: bool

我们也可以使用isin方法结合布尔索引技巧,过滤出符合条件的行:

df[df['B'].isin(['a', 'c', 'e'])]

输出结果为:

A  B
0  1  a
2  3  c

注意到,我们使用isin方法返回的布尔型Series作为筛选行的条件。


除了可以传入列表进行查询,isin方法还可以接受其他的类型作为参数,包括标量值,Series,以及同长度的布尔型Series,用来检查DataFrame或Series中是否包含相应的元素


28. 替换


replace是Pandas中的一个方法,用于将DataFrame或Series对象中的值替换为另外的值。replace方法支持多种不同形式的替换规则,可以通过字典、列表、标量等不同方式进行替换。 例如,对于以下Series:

import pandas as pd
s = pd.Series([1, 2, 3, -1, 5])

我们可以使用replace方法将所有-1的元素替换为NaN(缺失值):

s.replace(-1, pd.NaT)

输出结果为:

0     1.0
1     2.0
2     3.0
3     NaT
4     5.0
dtype: float64

注意到,我们使用了pd.NaT来表示缺失值。 replace方法还支持使用字典进行多种不同值的替换,例如:

s.replace({1: 'one', 2: 'two', 3: 'three', -1: pd.NaT, 5: 'five'})

输出结果为:

0      one
1      two
2    three
3      NaT
4     five
dtype: object

其中,我们通过传入一个字典,指定了不同值的替换规则。 除了Series,replace方法也可以用于DataFrame对象中的数值或字符串的替换。只需要指定要替换的列名,并使用字典或其他方式指定替换规则即可。


以上是对于Pandas的28种基本用法的概述,Pandas是数据分析领域一个很重要的工具,它提供了处理、分和可视化大型数据集的简单易用的方法和API,我们可以通过不断实践和探索来更好地掌握Pandas的使用。

相关文章
|
3月前
|
SQL 索引 Python
Pandas中DataFrame合并的几种方法
Pandas中DataFrame合并的几种方法
235 0
|
1月前
|
Python
通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法
在金融分析领域,"死叉"指的是短期移动平均线(如MA5)下穿长期移动平均线(如MA10),而"金叉"则相反。本文介绍了一种利用Python编程语言,通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法。该方法首先计算两种移动平均线,接着确定它们的交叉点,最后检查并输出最近一次死叉及其后是否形成了金叉。此技术广泛应用于股市趋势分析。
51 2
|
2月前
|
存储 数据采集 数据处理
Pandas中批量转换object至float的高效方法
在数据分析中,常需将Pandas DataFrame中的object类型列转换为float类型以进行数值计算。本文介绍如何使用`pd.to_numeric`函数高效转换,并处理非数字值,包括用0或平均值填充NaN值的方法。
88 1
|
3月前
|
数据处理 Python
Pandas中的drop_duplicates()方法详解
Pandas中的drop_duplicates()方法详解
248 2
|
3月前
|
数据处理 Python
Pandas快速统计重复值的2种方法
Pandas快速统计重复值的2种方法
175 1
|
3月前
|
数据挖掘 Python
掌握Pandas中的相关性分析:corr()方法详解
掌握Pandas中的相关性分析:corr()方法详解
263 0
|
3月前
|
数据处理 索引 Python
Pandas中resample方法:轻松处理时间序列数据
Pandas中resample方法:轻松处理时间序列数据
85 0
|
3月前
|
SQL 数据采集 索引
聚焦Pandas数据合并:掌握merge方法
聚焦Pandas数据合并:掌握merge方法
43 0
|
3月前
|
数据采集 机器学习/深度学习 数据挖掘
Pandas中的变形大师:transform方法
Pandas中的变形大师:transform方法
35 0
|
3月前
|
数据挖掘 数据处理 Python
Pandas中的数据聚合神器:agg 方法
Pandas中的数据聚合神器:agg 方法
105 0