pandas库提供了高性能、易于使用的数据结构和数据分析工具。其主要数据结构是DataFrame,可以将DataFrame看做内存中的二维表格,如带有列名和行标签的电子表格。许多在Excel中可用的功能都可以通过编程实现,例如创建数据透视表、基于其他列计算新列的值、绘制图形等。还可以按照列的值对行进行分组,或者像SQL中那样连接表格。pandas也擅长处理时间序列。
但是介绍pandas之前,需要有numpy的基础,如果还不熟悉numpy,可以查看numpy快速入门教程。
导入pandas
import pandas as pd
一个DataFrame对象表示一个电子表格,带有单元格值、列名和行索引标签。可以定义表达式基于其他列计算列的值、创建数据透视表、按行分组、绘制图形等。可以将DataFrame视为Series的字典。
pandas可以将DataFrame保存到不同的后端,包括CSV、Excel、json、HTML和HDF5文件,或者SQL数据库中。
现在创建一个DataFrame来演示。
my_df = pd.DataFrame(
[['Biking', 68.5, 195, np.nan], ['Dancing', 83.1, 1984, 3]],
columns=['hobby', 'weight', 'birthyear', 'children'],
index=['alice', 'bob']
)
my_df
输出:
将DataFrame保存到CSV、html和json文件中。
my_df.to_csv('my_df.csv')
my_df.to_html('my_df.html')
my_df.to_json('my_df.json')
现在看一下保存的文件内容。
for filename in ('my_df.csv', 'my_df.html', 'my_df.json'):
print('#', filename)
with open(filename, 'rt') as f:
print(f.read())
print()
输出:
# my_df.csv
,hobby,weight,birthyear,children
alice,Biking,68.5,195,
bob,Dancing,83.1,1984,3.0
# my_df.html
hobby
weight
birthyear
children
alice
Biking
68.5
195
NaN
bob
Dancing
83.1
1984
3.0
# my_df.json
{"hobby":{"alice":"Biking","bob":"Dancing"},"weight":{"alice":68.5,"bob":83.1},"birthyear":{"alice":195,"bob":1984},"children":{"alice":null,"bob":3.0}}
请注意,保存为CSV文件时,列索引被保存为第一行,行索引被保存为第一列。在HTML文件中都保存为标签。在json文件中保存为键。
保存为其他格式时工作原理也相似,但是有些格式需要安装额外的库。例如,保存到Excel需要openpyxl库。
try:
my_df.to_excel('my_df.xlsx', sheet_name='People')
except ImportError as e:
print(e)
从CSV文件中加载DataFrame。
my_df_loaded = pd.read_csv('my_df.csv', index_col=0) # index_col=0 指定行索引的位置
my_df_loaded
输出:
还有read_json、read_html和read_excel等函数,加载对应格式的文件。