Pandas DataFrame操作数据增删查改

1. Pandas简介

Pandas是一个基于NumPy的Python库,用来进行数据分析和处理。它主要针对的是操作表格型数据(如SQL表或Excel表)。DataFrame是Pandas最常用的数据结构,它提供了一种灵活而高效的方式来存储,操作和分析数据。

本篇文章将主要介绍Pandas DataFrame的增删查改。

2. Pandas DataFrame创建

2.1 从字典创建

通过字典创建DataFrame是一种常见的方式,其中字典的key为列名,value为值:

import pandas as pd

data = {'name': ['Jack', 'Tom', 'Lucy'], 'age': [18, 20, 19]}

df = pd.DataFrame(data)

print(df)

输出结果如下:

name age

0 Jack 18

1 Tom 20

2 Lucy 19

可以看到,Pandas自动给每一行数据增加了索引。

2.2 从列表创建

从列表创建DataFrame是另一种常见的方式,其中列表中的每个元素为一行数据:

data = [['Jack', 18], ['Tom', 20], ['Lucy', 19]]

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

print(df)

输出结果如下:

name age

0 Jack 18

1 Tom 20

2 Lucy 19

2.3 从文件读取

Pandas还支持从文件读取数据创建DataFrame。这里以读取csv文件为例:

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

print(df)

其中,data.csv为一个csv文件。

3. Pandas DataFrame查询

查询是对DataFrame进行数据筛选的过程。Pandas提供了多种方式对数据进行查询。

3.1 筛选指定行

使用loc实现指定行的筛选。loc[ ]通过行标签索引行数据。以下代码实现可以筛选出前两行数据:

df = pd.DataFrame({'name':['Jack', 'Tom', 'Lucy'],

'age':[18, 20, 19],

'country': ['USA', 'Canada', 'China']})

df2 = df.loc[:1]

print(df2)

输出结果如下:

name age country

0 Jack 18 USA

1 Tom 20 Canada

3.2 筛选指定列

使用[ ]通过列名索引列数据。以下代码实现可以筛选出name和age两列数据:

df2 = df[['name', 'age']]

print(df2)

输出结果如下:

name age

0 Jack 18

1 Tom 20

2 Lucy 19

3.3 筛选指定行和列

在loc 和 [ ]操作中结合使用,在loc中指定行标签,在[ ]中指定列名实现同时筛选指定行和列。

以下代码实现可以筛选前两行和name列和age列:

df2 = df.loc[:1, ['name', 'age']]

print(df2)

输出结果如下:

name age

0 Jack 18

1 Tom 20

3.4 筛选指定条件

在DataFrame中,可以使用逻辑(比较)运算符筛选满足条件的数据。以下代码实现可以筛选年龄大于等于19岁的数据:

df2 = df[df['age'] >= 19]

print(df2)

输出结果如下:

name age country

1 Tom 20 Canada

2 Lucy 19 China

4. Pandas DataFrame修改与增加

4.1 修改数据

使用loc[ ]和列名操作实现,以下代码实现将name为Jack的年龄修改为20:

df.loc[df['name'] == 'Jack', 'age'] = 20

print(df)

输出结果如下:

name age country

0 Jack 20 USA

1 Tom 20 Canada

2 Lucy 19 China

4.2 新增数据

对于一个DataFrame而言,最简单的添加新数据的方法就是使用append()方法。以下代码实现向DataFrame中添加一行数据:

new_data = pd.DataFrame({'name': ['Bob'], 'age': [21], 'country': ['UK']})

df2 = df.append(new_data, ignore_index=True)

print(df2)

其中ignore_index=True是重置索引。输出结果如下:

name age country

0 Jack 20 USA

1 Tom 20 Canada

2 Lucy 19 China

3 Bob 21 UK

5. Pandas DataFrame删除

5.1 根据行、列标签删除

使用drop()方法可以删除指定行、列。以下代码实现删除索引为2的行:

df2 = df.drop(2)

print(df2)

输出结果如下:

name age country

0 Jack 20 USA

1 Tom 20 Canada

以下代码实现删除country列:

df2 = df.drop('country', axis=1)

print(df2)

输出结果如下:

name age

0 Jack 20

1 Tom 20

2 Lucy 19

5.2 根据条件删除

与3.4类似,使用筛选符号得到满足条件的行号,再使用drop()方法删除行,以下代码实现删除年龄大于等于19岁的数据:

indexs = df[df['age'] >= 19].index

df2 = df.drop(indexs)

print(df2)

输出结果如下:

name age country

0 Jack 18 USA

到此,Pandas DataFrame常用的增、删、查、改过程就介绍完了。Pandas DataFrame在数据分析和处理中极为常用,它提供了很多便于操作的API,可以使得我们的工作变得更加高效和方便。

后端开发标签