pandas创建DataFrame的7种方法小结

1. 前言

在数据分析过程中,我们通常需要对数据进行清洗、转换、分析等操作。而pandas是一个优秀的Python库,提供了许多方便的数据操作API,其中DataFrame就是一个很常用的数据结构。在pandas中,我们可以通过多种方式来创建一个DataFrame对象,本篇文章将会对这七种方法进行总结。

2. 使用Python字典创建

使用Python字典创建DataFrame可以通过将字典的key作为列名,value作为列值,最后将字典传递给pd.DataFrame()实现。下面是一个例子:

import pandas as pd

data = {'name': ['张三', '李四', '王五'], 'age': [18, 20, 19], 'gender': ['男', '女', '男']}

df = pd.DataFrame(data)

print(df)

执行结果:

name age gender

0 张三 18 男

1 李四 20 女

2 王五 19 男

可以看到,我们通过字典创建了一个包含name、age、gender三列的DataFrame对象。

3. 使用嵌套列表创建

除了使用字典创建DataFrame,我们还可以使用嵌套列表创建。嵌套列表可以理解为将多个列表“嵌套”在一起,最终得到一个二维列表。对于嵌套列表,我们可以直接使用pd.DataFrame()创建DataFrame对象。

import pandas as pd

data = [['张三', 18, '男'],

['李四', 20, '女'],

['王五', 19, '男']]

df = pd.DataFrame(data, columns=['name', 'age', 'gender'])

print(df)

执行结果:

name age gender

0 张三 18 男

1 李四 20 女

2 王五 19 男

可以看到,我们同样创建了一个包含name、age、gender三列的DataFrame对象。

4. 使用CSV文件创建

除了使用Python代码创建,我们还可以通过读取CSV文件的方式来创建DataFrame对象。CSV文件通常是以逗号分隔的文本文件,每行表示一条记录,每个字段之间用逗号隔开。

读取CSV文件可以使用pd.read_csv()方法。在本例中,我们使用了一个名为example.csv的文件,它包含了name、age、gender三列数据。这个文件应当和代码文件放在同一个目录下,这样才能够正确读取。

import pandas as pd

df = pd.read_csv('example.csv')

print(df)

执行结果:

name age gender

0 张三 18 男

1 李四 20 女

2 王五 19 男

可以看到,我们同样创建了一个包含name、age、gender三列的DataFrame对象。

5. 使用Excel文件创建

类似于读取CSV文件,我们也可以通过读取Excel文件的方式来创建DataFrame对象。不过要注意的是,需要我们额外安装一个名为xlrd的库。xlrd是一个Python的Excel文件处理库,可以让我们轻松读取Excel文件。

需要注意的是,读取Excel文件需要我们指定Excel文件中对应的Sheet页名称。我们可以通过传递参数sheet_name指定Sheet页名称,如果不指定,则默认读取第一个Sheet页。

import pandas as pd

df = pd.read_excel('example.xlsx', sheet_name='Sheet1')

print(df)

执行结果:

name age gender

0 张三 18 男

1 李四 20 女

2 王五 19 男

可以看到,我们同样创建了一个包含name、age、gender三列的DataFrame对象。

6. 使用numpy数组创建

在pandas中,我们也可以使用numpy数组来创建DataFrame。numpy是一个Python的科学计算库,提供了很多数值计算相关的API。numpy数组是一种专门用于数值计算的数据结构,它类似于Python内置的list,但是提供了更加方便的计算方式。

创建numpy数组的方式也很简单,我们只需要导入numpy库,使用np.array()方法创建一个numpy数组,最后调用pd.DataFrame()将其转换为DataFrame对象即可。

import pandas as pd

import numpy as np

data = np.array([['张三', 18, '男'],

['李四', 20, '女'],

['王五', 19, '男']])

df = pd.DataFrame(data, columns=['name', 'age', 'gender'])

print(df)

执行结果:

name age gender

0 张三 18 男

1 李四 20 女

2 王五 19 男

可以看到,我们同样创建了一个包含name、age、gender三列的DataFrame对象。

7. 使用字典列表创建

在实际场景中,我们有时候可能需要从多个源中读取数据,这时候我们往往需要将数据进行合并。使用字典列表创建DataFrame可以方便地实现数据合并操作。具体做法是:对于每个源数据,我们将其转换为一个字典,并将其添加到列表中,最后将这个列表传递给pd.DataFrame()实现合并。

import pandas as pd

data1 = {'name': ['张三', '李四', '王五'], 'age': [18, 20, 19], 'gender': ['男', '女', '男']}

data2 = {'name': ['狗蛋', '大黄', '二哈'], 'age': [1, 2, 3], 'gender': ['男', '男', '女']}

data_list = [data1, data2]

df = pd.DataFrame(data_list)

print(df)

执行结果:

name age gender

0 [张三, 李四, 王五] [18, 20, 19] [男, 女, 男]

1 [狗蛋, 大黄, 二哈] [1, 2, 3] [男, 男, 女]

可以看到,我们成功地将两个字典中的数据合并成为了一个DataFrame对象。

8. 总结

通过以上七种方式,我们可以方便快捷地创建DataFrame对象,并在数据分析过程中进行方便的操作和计算。不同的创建方式各有优缺点,具体应该根据实际需求选择合适的方式。

后端开发标签