引言
Pandas是数据分析中一个至关重要的库,它是大多数据项目的支柱。如果你想从事数据分析相关的职业,那么你要做的第一件事情就是学习Pandas。
通过这一课,您将会:
1、学会用pandas将数据导入文件中
2、学会用pandas从文件中读取数据
pandas写入文件
对于将数据写入文件,panda提供了直观的命令来保存数据:
代码语言:javascript复制df.to_csv('new_purchases.csv')
df.to_json('new_purchases.json')
df.to_sql('new_purchases', con)
这三行代码分别是写入csv,json,以及SQL文件。
当我们保存JSON和CSV文件时,我们需要向这些函数输入的只是我们需要的文件名和适当的文件扩展名。使用SQL,我们不创建新文件,而是使用之前的con变量将新表插入数据库。让我们继续导入一些实际数据,并详细介绍一些您将经常使用的操作:
代码语言:javascript复制import pandas as pd
import sqlite3
data = {
'apples': [3, 2, 0, 1],
'oranges': [0, 3, 7, 2]
}
purchases = pd.DataFrame(data, index=['June', 'Robert', 'Lily', 'David'])
print (purchases)
purchases.to_csv('purchases.csv')
purchases.to_json('purchases.json')
con = sqlite3.connect("database.db")
purchases.to_sql('purchases', con)
我们使用之前学过的purchases数据,将它导入三种文件格式中。请记得保留这个结果,因为我们会在读取文件中使用到它们。
pandas读取文件
1
读取CSV文件
使用CSV文件,你只需要一行命令来加载数据:
代码语言:javascript复制df = pd.read_csv('purchases.csv')
print(df)
输出结果:
Unnamed: 0 | apples | oranges | |
---|---|---|---|
0 | June | 3 | 0 |
1 | Robert | 2 | 3 |
2 | Lily | 0 | 7 |
3 | David | 1 | 2 |
csv没有DataFrames中第一列的索引,所以我们需要使用index_col来屏蔽第一列空索引:
代码语言:javascript复制df = pd.read_csv('purchases.csv', index_col=0)
print(df)
输出结果:
apples | oranges | |
---|---|---|
June | 3 | 0 |
Robert | 2 | 3 |
Lily | 0 | 7 |
David | 1 | 2 |
2
读取JSON文件
如果你有一个JSON文件-它本质上是一个被存储的Python字典文件。pandas可以很容易地读这个文件:
代码语言:javascript复制df = pd.read_json('purchases.json')
print(df)
输出结果:
apples | oranges | |
---|---|---|
David | 1 | 2 |
June | 3 | 0 |
Lily | 0 | 7 |
Robert | 2 | 3 |
注意,这次我们的索引是正确的。
3
读取SQL数据库
如果要处理来自SQL数据库的数据,首先需要使用适当的Python库建立连接,然后将查询传递给pandas。这里我们将使用SQLite进行演示。
首先,我们需要安装pysqlite3,所以在你的终端运行这个命令:
代码语言:javascript复制pip install pysqlite3
sqlite3用于创建到数据库的连接,然后我们可以使用该连接通过SELECT查询生成数据。
首先,我们将连接到一个SQLite数据库文件:
代码语言:javascript复制import sqlite3
con = sqlite3.connect("database.db")
在这个SQLite数据库中,我们有一个名为purchase的表,我们的索引在一个名为“index”的列中。
通过传递一个SELECT查询和我们的con,我们可以从purchase表中读取:
代码语言:javascript复制df = pd.read_sql_query("SELECT * FROM purchases", con)
print (df)
输出结果:
index | apples | oranges | |
---|---|---|---|
0 | June | 3 | 0 |
1 | Robert | 2 | 3 |
2 | Lily | 0 | 7 |
3 | David | 1 | 2 |
温馨提示
欢迎分享和转发~