Pandas 从Series创建DataFrame

Pandas 从Series创建DataFrame

在本文中,我们将介绍如何通过Pandas将Series对象转换为DataFrame对象。

阅读更多:Pandas 教程

什么是Series和DataFrame?

在介绍如何将Series转换为DataFrame之前,让我们先了解一下Series和DataFrame是什么。

Series是一种一维数组对象,它可以保存任何类型的数据(整数,浮点数,字符串,Python对象等),并附有一个索引标签。例如,下面是一个包含4个整数的Series:

import pandas as pd

s = pd.Series([10, 20, 30, 40])
print(s)

输出:
0    10
1    20
2    30
3    40
dtype: int64

DataFrame是一个二维表格数据结构,可以存储不同类型的数据,并且每列可以有不同的数据类型。你可以将它看作是一个电子表格或者SQL表。DataFrame通常由行和列组成。下面是一个包含4行和2列的DataFrame:

df = pd.DataFrame({
   'name': ['Alice', 'Bob', 'Charlie', 'David'],
   'age': [25, 32, 18, 47],
})
print(df)

输出:
       name  age
0     Alice   25
1       Bob   32
2   Charlie   18
3     David   47

在上面的DataFrame中,’name’和’age’是列标签,每一列的类型可以是整数、浮点数、字符串和Python对象等。

从Series创建DataFrame

有时候我们需要把一个包含多个Series的数据集合并到一个DataFrame中,可以通过以下方式进行操作。

首先,让我们创建两个包含不同类型数据的Series:

s1 = pd.Series(['a', 'b', 'c'])
s2 = pd.Series([1, 2, 3])

接下来,我们可以使用pd.DataFrame函数将这两个Series对象转换为一个DataFrame对象。我们可以把两个Series对象作为字典传递给pd.DataFrame函数。键将成为DataFrame的列标签,而值将成为DataFrame的列数据。

df = pd.DataFrame({'A': s1, 'B': s2})
print(df)

输出:
   A  B
0  a  1
1  b  2
2  c  3

在上面的示例中,我们创建了一个包含两个Series对象的DataFrame。Series s1被分配给列’A’,Series s2被分配给列’B’。

从多个Series创建DataFrame

当你想要将多个Series组合成一个DataFrame时,你可以将所有的Series对象以列表形式传递给pd.DataFrame函数。假设我们有三个Series,分别是’s1’、’s2’和’s3’,下面的代码将它们转换为一个DataFrame:

s1 = pd.Series(['a', 'b', 'c'])
s2 = pd.Series([1, 2, 3])
s3 = pd.Series([4, 5, 6])

df = pd.DataFrame([s1, s2, s3])
print(df)

输出:
   0  1  2
0  a  b  c
1  1  2  3
2  4  5  6

在上面的示例中,我们创建了一个包含三个Series对象的DataFrame。每个Series对象是DataFrame的一行,第一行包含s1的值,第二行包含s2的值,第三行包含s3的值。这种用法不太常见,因为它假设每个Series对象都有相同的长度和列标签。

将Series转换为列

我们可以使用以下方式来创建一个新的DataFrame,将s1和s2存储为带有列标签’A’和’B’的两列数据:

df = pd.DataFrame({'A': s1, 'B': s2})
print(df)

输出:
   A  B
0  a  1
1  b 2
2  c  3

在上面的示例中,我们使用了与前面相同的方法将s1和s2转换为DataFrame。每个Series对象成为一个DataFrame的列,并使用所选的列标签作为列名。注意到在新的DataFrame中,索引仍然是0、1、2。

列数据类型的转换

我们可以使用dtype参数来指定每一列的数据类型。例如,下面的代码将s1、s2和s3转换为一个DataFrame,并将第1列指定为字符串类型,第2列和第3列指定为浮点数类型:

s1 = pd.Series(['a', 'b', 'c'])
s2 = pd.Series([1.0, 2.0, 3.0])
s3 = pd.Series([4.0, 5.0, 6.0])

df = pd.DataFrame({'A': s1, 'B': s2, 'C': s3}, dtype=str)

df[['B', 'C']] = df[['B', 'C']].astype(float)

print(df.dtypes)

输出:
A     object
B    float64
C    float64
dtype: object

在上面的示例中,我们使用dtype参数将’A’列指定为字符串类型。然后,我们使用astype函数将’B’和’C’列转换为浮点数类型。最后,我们使用dtypes属性打印每个列的数据类型。

修改列标签

我们可以使用columns属性修改列标签。例如,下面的代码将DataFrame中的列标签从’A’、’B’、’C’更改为’one’、’two’、’three’:

s1 = pd.Series(['a', 'b', 'c'])
s2 = pd.Series([1.0, 2.0, 3.0])
s3 = pd.Series([4.0, 5.0, 6.0])

df = pd.DataFrame({'A': s1, 'B': s2, 'C': s3})

df.columns = ['one', 'two', 'three']
print(df)

输出:
  one  two  three
0   a  1.0    4.0
1   b  2.0    5.0
2   c  3.0    6.0

在上面的示例中,我们使用columns属性将列标签从’A’、’B’、’C’更改为’one’、’two’、’three’。

总结

在本文中,我们介绍了如何通过将一个或多个Series对象转换为DataFrame对象。我们也讨论了如何修改DataFrame的列标签和列数据类型等。通过掌握这些技巧,你能够更好地处理Pandas中的数据集。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程