Pandas是Python语言中非常常见的数据分析库,其中最常用的功能之一就是数据框架(DataFrame)。Pandas中提供了一些转换函数,可以帮助我们对数据进行转换和调整,本攻略将详细讲解这些函数的用法。
转换函数的类型
在Pandas中,转换函数可以分为以下几种类型:
- 改变数据类型的转换函数
- 形状变换的转换函数
- 数据排序的转换函数
- 重塑数据的转换函数
- 布尔型数据转换函数
现在我们分别来详细讲解这几种类型的转换函数。
1. 改变数据类型的转换函数
在数据处理过程中,有时需要将某一列的数据类型从一个类型转换为另一个类型,例如将字符串类型转换为数字类型。Pandas中提供了专门用于数据类型转换的函数astype(),例如:
import pandas as pd
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': ['4', '5', '6']})
print(df.dtypes)
df['A'] = df['A'].astype(int)
df['B'] = df['B'].astype(float)
print(df.dtypes)
输出:
A object
B object
dtype: object
A int32
B float64
dtype: object
2. 形状变换的转换函数
有时候我们需要将数据的形状进行转换,例如将多行数据转换为一行或者将一行数据转换为多行数据。Pandas中提供了一些形状变换的转换函数,例如:
- stack():将数据的列“压缩”成一列,形成多层索引
- unstack():将数据的多层索引还原,形成多列数据
- melt():将数据转换为“长格式”,即将多列数据变成一列,同时保留其他列
- pivot():将“长格式”数据还原为“宽格式”
这里我们只给出stack()和unstack()的示例,其他两个函数的用法可以参见Pandas的官方文档:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# stack操作
stacked_df = df.stack()
print(stacked_df)
# unstack操作
unstacked_df = stacked_df.unstack()
print(unstacked_df)
输出:
0 A 1
B 4
C 7
1 A 2
B 5
C 8
2 A 3
B 6
C 9
dtype: int64
A B C
0 1 4 7
1 2 5 8
2 3 6 9
3. 数据排序的转换函数
有时候我们需要根据某一列或某几列数据进行排序,Pandas中提供了一些数据排序的转换函数,例如sort_values()和sort_index(),示例:
import pandas as pd
data = {
'name': ['Tom', 'Jerry', 'John'],
'age': [20, 18, 22],
'score': [90, 78, 83]
}
df = pd.DataFrame(data)
# 按age列排序
df_sort = df.sort_values('age')
print(df_sort)
# 按照索引排序(默认升序)
df_index_sort = df.sort_index(ascending=False)
print(df_index_sort)
输出:
name age score
1 Jerry 18 78
0 Tom 20 90
2 John 22 83
name age score
2 John 22 83
1 Jerry 18 78
0 Tom 20 90
4. 重塑数据的转换函数
有时候我们需要将数据从长格式变成宽格式或相反,例如将一列数据拆分成多列表格,或将多列数据合并成一列。Pandas中提供了一些重塑数据的转换函数,例如pivot(),melt()等,示例:
import pandas as pd
data = {
'name': ['Tom', 'Jerry', 'Alice', 'John'],
'year': ['2020', '2020', '2019', '2019'],
'math': [90, 78, 85, 95],
'english': [80, 85, 90, 95]
}
df = pd.DataFrame(data)
# 将year列转换为列索引
pivoted_df = df.pivot(index='name', columns='year', values=['math', 'english'])
print(pivoted_df)
# 将math和english列合并为一列数据
melted_df = pd.melt(df, id_vars=['name'], value_vars=['math', 'english'])
print(melted_df)
输出:
math english
year 2019 2020 2019 2020
name
Alice 85 NaN 90 NaN
Jerry NaN 78 NaN 85
John 95 NaN 95 NaN
Tom NaN 90 NaN 80
name variable value
0 Tom math 90
1 Jerry math 78
2 Alice math 85
3 John math 95
4 Tom english 80
5 Jerry english 85
6 Alice english 90
7 John english 95
5. 布尔型数据转换函数
有时候我们需要根据某些条件对数据进行筛选,Pandas中提供了一些布尔型数据转换函数,例如isin()函数。示例:
import pandas as pd
data = {
'name': ['Tom', 'Jerry', 'Alice', 'John'],
'age': [20, 18, 22, 19]
}
df = pd.DataFrame(data)
# 找出'name'列中包含'Tom'和'Jerry'的行
condition = df['name'].isin(['Tom', 'Jerry'])
filtered_df = df[condition]
print(filtered_df)
输出:
name age
0 Tom 20
1 Jerry 18
至此,我们对Pandas数据框架中的转换函数的类型和例子作出了详细讲解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas数据框架中的转换函数 - Python技术站