pandas.DataFrame中的数据重塑和透视技巧有哪些
发布时间:2023-12-17 14:55:10
在pandas中,数据重塑和透视是非常常用的技巧,它们能够帮助我们更好地理解和分析数据。下面是一些常用的数据重塑和透视技巧,每个技巧都附带有一个示例:
1. 数据透视表(Pivot Table)
数据透视表是一种对数据进行聚合和汇总的方式,可以将数据按照指定的行和列进行分组,并计算指定的统计指标。pandas提供了pivot_table函数实现数据透视表功能。
示例:
import pandas as pd
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
pivot_table = df.pivot_table(values='D', index='A', columns='B', aggfunc=sum)
print(pivot_table)
输出:
B one two A bar 11 4 foo 3 3
2. 数据透视表中的多级索引(MultiIndex)
数据透视表中,我们可以使用多个列作为索引,以实现更复杂的数据透视效果。这样可以在行或列上创建多级索引,从而更好地组织数据。
示例:
import pandas as pd
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
pivot_table = df.pivot_table(values='D', index=['A', 'B'], columns='C', aggfunc=sum)
print(pivot_table)
输出:
C x y
A B
bar one 5.0 NaN
two NaN 4.0
foo one NaN 2.0
two 3.0 NaN
3. 堆叠和展开(Stack and Unstack)
堆叠和展开是将数据从行转换为列,或者从列转换为行的操作。堆叠将数据从列转换为行,展开将数据从行转换为列。这两个操作可以通过stack和unstack函数实现。
示例:
import pandas as pd
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
stacked = df.set_index(['A', 'B', 'C']).stack()
unstacked = stacked.unstack()
print(unstacked)
输出:
C x y
A B
bar one 5.0 NaN
two NaN 4.0
foo one NaN 2.0
two 3.0 NaN
4. Melt函数
Melt函数用于将宽格式的数据转换为长格式的数据,通过指定要保留的列和要转换的值列,可以将数据从宽表转换为长表。
示例:
import pandas as pd
data = {'day': ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
'temperature': [20, 30, 25, 27, 22],
'humidity': [50, 60, 55, 58, 52]}
df = pd.DataFrame(data)
melted = df.melt(id_vars='day', value_vars=['temperature', 'humidity'])
print(melted)
输出:
day variable value 0 Mon temperature 20 1 Tue temperature 30 2 Wed temperature 25 3 Thu temperature 27 4 Fri temperature 22 5 Mon humidity 50 6 Tue humidity 60 7 Wed humidity 55 8 Thu humidity 58 9 Fri humidity 52
5. 数据透视表中的聚合函数
数据透视表中,我们可以使用不同的聚合函数对数据进行计算,以得到所需要的统计结果。pandas提供了多种聚合函数供选择,包括count、sum、mean、median等,可以根据数据的特点选择合适的聚合函数。
示例:
import pandas as pd
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
pivot_table = df.pivot_table(values='D', index='A', columns='B', aggfunc={'D': 'sum'})
print(pivot_table)
输出:
B one two A bar 11 4 foo 3 3
以上是一些常用的数据重塑和透视技巧,它们能够帮助我们更好地理解和分析数据,并能够快速进行数据透视的计算和转换。在实际的数据分析工作中,根据具体的需求和数据特点,可以选择合适的技巧来处理数据。
