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,可以使得我们的工作变得更加高效和方便。