Pandas秘籍【第九章】
来源:互联网 发布:淘宝详情页制作技巧 编辑:程序博客网 时间:2024/06/06 01:48
原文:Chapter 9
import pandas as pdimport sqlite3
到目前为止,我们只涉及从 CSV 文件中读取数据。 这是一个存储数据的常见方式,但有很多其它方式! Pandas 可以从 HTML,JSON,SQL,Excel(!!!),HDF5,Stata 和其他一些东西中读取数据。 在本章中,我们将讨论从 SQL 数据库读取数据。
您可以使用pd.read_sql
函数从 SQL 数据库读取数据。 read_sql
将自动将 SQL 列名转换为DataFrame
列名。
read_sql
需要 2 个参数:SELECT
语句和数据库连接对象。 这是极好的,因为它意味着你可以从任何种类的 SQL 数据库读取 - 无论是 MySQL,SQLite,PostgreSQL 或其他东西。
此示例从 SQLite 数据库读取,但任何其他数据库将以相同的方式工作。
con = sqlite3.connect("../data/weather_2012.sqlite")df = pd.read_sql("SELECT * from weather_2012 LIMIT 3", con)df
read_sql
不会自动将主键(id
)设置为DataFrame
的索引。 你可以通过向read_sql
添加一个index_col
参数来实现。
如果你大量使用read_csv
,你可能已经看到它有一个index_col
参数。 这个行为是一样的。
df = pd.read_sql("SELECT * from weather_2012 LIMIT 3", con, index_col='id')df
如果希望DataFrame
由多个列索引,可以将列的列表提供给index_col
:
df = pd.read_sql("SELECT * from weather_2012 LIMIT 3", con, index_col=['id', 'date_time'])df
9.2 写入 SQLite 数据库
Pandas 拥有write_frame
函数,它从DataFrame
创建一个数据库表。 现在这只适用于 SQLite 数据库。 让我们使用它,来将我们的 2012 天气数据转换为 SQL。
你会注意到这个函数在pd.io.sql
中。 在pd.io
中有很多有用的函数,用于读取和写入各种类型的数据,值得花一些时间来探索它们。 (请参阅文档!)
weather_df = pd.read_csv('../data/weather_2012.csv')con = sqlite3.connect("../data/test_db.sqlite")con.execute("DROP TABLE IF EXISTS weather_2012")weather_df.to_sql("weather_2012", con)
我们现在可以从test_db.sqlite
中的weather_2012
表中读取数据,我们看到我们得到了相同的数据:
con = sqlite3.connect("../data/test_db.sqlite")df = pd.read_sql("SELECT * from weather_2012 LIMIT 3", con)df
在数据库中保存数据的好处在于,可以执行任意的 SQL 查询。 这非常酷,特别是如果你更熟悉 SQL 的情况下。 以下是Weather
列排序的示例:
如果你有一个 PostgreSQL 数据库或 MySQL 数据库,从它读取的工作方式与从 SQLite 数据库读取完全相同。 使用psycopg2.connect()
或MySQLdb.connect()
创建连接,然后使用
pd.read_sql("SELECT whatever from your_table", con)
9.3 连接到其它类型的数据库
为了连接到 MySQL 数据库:
注:为了使其正常工作,你需要拥有 MySQL/PostgreSQL 数据库,并带有正确的localhost
,数据库名称,以及其他。
import MySQLdb con = MySQLdb.connect(host="localhost", db="test")
为了连接到 PostgreSQL 数据库:
import psycopg2 con = psycopg2.connect(host="localhost")
- Pandas秘籍【第九章】
- Pandas秘籍【第二章】
- Pandas秘籍【第三章】
- Pandas秘籍【第四章】
- Pandas秘籍【第五章】
- Pandas秘籍【第六章】
- Pandas秘籍【第七章】
- Pandas秘籍【第八章】
- Pandas 秘籍
- Kali Linux 秘籍 第九章 无线攻击
- Pandas秘籍【第一章】
- Kali Linux Web 渗透测试秘籍 第九章 客户端攻击和社会工程
- 第九章
- 第九章
- 第九章
- 第九章
- 第九章
- 第九章
- spring资源加载-resource
- [BZOJ3651]网络通信(LCT)
- Contest RankList -- 2017年成都东软学院ACM冬季校赛(热身赛)
- shiro入门
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- Pandas秘籍【第九章】
- Python练习_1 水仙花数_3
- 谈Ajax技术
- C++学习52个经典网站
- shaker 排序法
- Windows7 U盘安装Ubuntu14.04双系统教程
- 人工智能从入门到精通(6)
- 简易麻将平胡算法
- 用数组给selec元素插入选项