欢迎访问宙启技术站
智能推送

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

以上是一些常用的数据重塑和透视技巧,它们能够帮助我们更好地理解和分析数据,并能够快速进行数据透视的计算和转换。在实际的数据分析工作中,根据具体的需求和数据特点,可以选择合适的技巧来处理数据。