Pandas 如何重塑Series

Pandas 如何重塑Series

我们可以使用转置、重塑方法和融合函数等方式来重塑Pandas系列。Pandas Series是一个一维的带标签的数组,可以保存任意类型的数据(整数、浮点数、字符串等)。它类似于NumPy数组,但每个元素都有一个与之关联的索引,可以用于访问单个值。重塑是指改变Pandas系列的形状或结构,以便以各种方式使用数据。

步骤

使用不同的方法重塑Pandas Series的一般算法如下:

  • 创建一个带有一些数据的Pandas Series。

  • 使用reshape()方法将Series的形状改为所需的形状。

  • 如果需要,使用stack()方法将Series从宽格式转置为长格式。

  • 如果需要,使用melt()方法将Series从宽格式转置为长格式。

  • 如果需要,使用unstack()方法将Series从长格式转置为宽格式。

  • 如果需要,使用pivot()方法将Series从长格式转置为宽格式。

  • 如果需要,使用T属性将Series转置。

方法1:使用转置属性

转置函数(T)可用于交换Series的行和列。当我们想以不同的方式可视化数据时,这很有用。

语法

在这里, T 是一个属性而不是方法,因此在使用时不需要使用括号。而且,因为它是一个属性而不是方法,所以它不能接受任何参数。T属性返回一个行列互换的新DataFrame。

示例

在下面的示例中,我们创建了一个Pandas系列,然后使用转置函数转置了Pandas系列,并最终将转置后的系列打印出来。

import pandas as pd

# Create a Series
s = pd.Series([1, 2, 3, 4])

# Transpose the Series
s_transposed = s.T

# Print the transposed Series
print(s_transposed)

输出

0    1
1    2
2    3
3    4
dtype: int64

方法2:使用 reshape 方法。

reshape 方法可以用来改变 Series 的形状。这个方法需要新的形状与原始形状兼容。

语法

DataFrame.reshape(shape[, order])

在这里, shape 参数指定了数组的新维度,而可选的order参数指定了数组元素的排列顺序。

示例

在下面的示例中,使用values.reshape()方法重新整形了pandas系列。首先创建一个包含1到9的系列,然后使用values.reshape(3,3)方法将系列重新整形为一个3×3大小的矩阵。

import pandas as pd
import numpy as np

# Create a Series
s = pd.Series(np.arange(1, 10))

# Reshape the Series
s_reshaped = s.values.reshape((3, 3))

# Print the reshaped Series
print(s_reshaped)

输出

[[1 2 3]
 [4 5 6]
 [7 8 9]]

方法3:使用Melt函数

Melt函数可用于将Series进行逆转。此函数创建一个新的数据框,其中包含原始Series中每个唯一值的列,以及每个唯一值组合的行。

语法

DataFrame.melt([id_vars, value_vars, ...], ...)

在这里, id_vars 参数指定用作标识变量的列, value_vars 参数指定要转换的列,还可以使用其他参数来自定义输出。

示例

在下面的示例中,我们首先使用reset_index方法将Series s转换为DataFrame,该方法会创建一个包含原始Series索引值的新列”index”。然后我们在这个DataFrame上使用melt函数,将”id_vars”参数指定为”index”,将”value_vars”参数指定为”0″(包含原始Series值的列的名称)。

import pandas as pd

# Create a Series
s = pd.Series({'A': 1, 'B': 2, 'C': 3})

# Convert the Series to a DataFrame using reset_index()
df = s.reset_index()

# Melt the DataFrame
df_melted = pd.melt(df, id_vars='index', value_vars='0')

# Print the melted DataFrame
print(df_melted)

输出

index variable  value
0     A        0      1
1     B        0      2
2     C        0      3

方法4:使用unstack()方法

Pandas中的unstack()方法用于将多级索引的Series或DataFrame重塑为宽格式。该方法实际上是将多级索引的最内层转换为新DataFrame的列。unstack()方法是stack()方法的逆过程。

语法

Series.unstack(level=-1, fill_value=None)

在这里, level 参数指定要取消堆叠的索引级别,而 fill_value 参数指定要填充缺失值的值。

示例

在下面的示例中,我们首先创建一个具有两个级别索引的多级索引DataFrame df,分别为’First’和’Second’。然后我们使用DataFrame的unstack()方法将最内层级别’Second’作为一个新DataFrame的列进行旋转。得到的DataFrame df_unstacked有列’A’和’B’,原始的索引级别’First’和’Second’作为行标签被保留。

import pandas as pd

# Create a multi-level index DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=pd.MultiIndex.from_tuples([('X', 'a'), ('X', 'b'), ('Y', 'c')], names=['First', 'Second']))

# Unstack the DataFrame
df_unstacked = df.unstack()

# Print the unstacked DataFrame
print(df_unstacked)

输出

A              B          
Second    a    b    c    a    b    c
First                               
X       1.0  2.0  NaN  4.0  5.0  NaN
Y       NaN  NaN  3.0  NaN  NaN  6.0

方法5:使用pivot()方法

在Pandas中,pivot()方法用于将长格式的DataFrame重塑为宽格式。该方法有三个参数:index、columns和values。index参数指定要作为结果DataFrame的行索引使用的列,columns参数指定要作为结果DataFrame的列索引使用的列,values参数指定要作为结果DataFrame的值使用的列。

语法

DataFrame.pivot([index, columns, values])

在这里, index 参数指定要用作行索引的列, columns 参数指定要用作列索引的列, values 参数指定要用作数据值的列。

示例

在下面的示例中,我们首先创建一个长格式的DataFrame df,包含三列:’Year’、’Quarter’和’Sales’。然后我们在DataFrame上使用 pivot() 方法,将’Year’指定为索引参数,’Quarter’指定为列参数,’Sales’指定为值参数。得到的DataFrame df_pivoted有两列’Q1’和’Q2’,并以’Year’作为行索引。

import pandas as pd

# Create a long format DataFrame
df = pd.DataFrame({'Year': [2019, 2019, 2020, 2020], 'Quarter': ['Q1', 'Q2', 'Q1', 'Q2'], 'Sales': [100, 200, 150, 250]})

# Pivot the DataFrame
df_pivoted = df.pivot(index='Year', columns='Quarter', values='Sales')

# Print the pivoted DataFrame
print(df_pivoted)

输出

Quarter   Q1   Q2
Year             
2019     100  200
2020     150  250

结论

在本文中,我们讨论了如何使用transpose、reshape和melt函数来重塑Pandas系列。我们可以对Pandas系列进行重塑,以将数据转换为不同的格式,以便进行可视化、聚合或数据分组,以及将多个数据系列合并和组合成一个数据框。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程