python读数据-如何用 Python 读取数据?

原标题:如何用 Python 读取数据?

2d1f35622c544d02bf054f5377f1a656.png

这是林骥的第 36 篇文章

1. 序言

读取数据往往是做数据分析的第一步,本文没有讲那些艰涩难懂的概念,只有一些问题的解决方案,当你遇到类似的问题的时候,可以拿来参考借鉴。

首先,我们下载并安装最新的 Python 集成环境:Anaconda,其次,在命令行输入 jupyter lab,系统将用浏览器打开下面的网址:

http://localhost:8888/lab

然后,在其中新建一个 Notebook,接下来就可以开始写代码了。

我们将统一使用 Pandas 来读取数据:

# 导入 pandas 模块

importpandas aspd

这是每次重新开始数据分析之前,都需要运行的代码,以后凡是见到包含 pd. 的代码,就表示我们已经运行了这行代码。

输入 pd.read 后,按 Tab 键,系统将把以 read 开头的函数和模块都列出来。

f0c5defd6ed749b682186468279ecf89.jpeg

运行以下代码:

pd.*read*?

返回的结果是 Pandas 中所有包含 read 的函数和模块,可以看出 Pandas 能够读取的数据类型有很多,我选择几个常用的函数进行简要的介绍。

2. 如何从 Excel 文件中读取数据?

我们直接看 Python 代码:

# 导入 Excel 文件

df = pd.read_excel( '文件名.xlsx')

其中 pd.read_excel 函数,有很多可选参数,如果你忘记了具体用法,可以运行:

# 查询帮助文档

pd.read_excel?

你将会看到比较详细的帮助文档,还有一些例子。

我觉得使用问号( ? )是一个非常好的方法,适用于各种对象。

如果一个问号还解决不了问题,那么还可以试试双问号( ?? ):

# 查询帮助文档和源代码

pd.read_excel??

3. 如何从 MySQL 数据库中读取数据?

在第一次运行之前,需要先安装 pymysql ,在 Jupyter Notebook 中运行:

# 安装或更新 pymysql

!pip3 install --upgrade pymysql

安装成功后,可以用下面的代码实现从 MySQL 数据库中读取数据:

# 从 sqlalchemy 导入创建引擎的功能

fromsqlalchemy importcreate_engine

# 建立数据库连接,替换其中的用户名、密码、主机地址、端口、数据库名

con = create_engine( 'mysql+pymysql://root:xxxxxx@192.168.0.1:3306/testdb')

# 写 SQL 语句

sql = "SELECT * FROM table"

# 读取数据

df = pd.read_sql(sql, con)

df.head

如果相关信息正确,且能正常连通数据库,那么运行将得到一个数据框。

但是,上面的代码包含数据库密码这类敏感信息,建议不要直接把这类敏感信息直接写在代码中,一旦不小心上传到网上,就容易造成信息泄露。

我们可以把敏感信息保存在单独的文件中,首先,在当前运行环境的目录下面,新建一个文件夹,命名为 password;其次,在 password 文件夹中,新建一个文件,命名为 root@mysql.txt;然后,在该文件中,输入以下内容:

mysql+pymysql://root:xxxxxx@192.168.0.1:3306/testdb

接下来,我们就可以调用这个包含敏感信息的文件:

# 从 sqlalchemy 导入创建引擎的功能

fromsqlalchemy importcreate_engine

# 建立数据库连接,替换其中的用户名、密码、主机地址、端口、数据库名

db_info = open( 'password/root@mysql.txt')

con = create_engine(db_info.read)

# 写 SQL 语句

sql = "SELECT * FROM table"

# 读取数据

df = pd.read_sql(sql, con)

df.head

因为敏感信息已经隐藏到其他文件中了,所以信息相对更加安全。

4. 如何从 PostgreSQL 数据库中读取数据?

在第一次运行之前,需要先安装 py-postgresql ,在 Jupyter Notebook 中运行:

# 安装或更新 py-postgresql

!pip3 install --upgrade py-postgresql

安装成功后,可以用下面的代码实现从 PostgreSQL 数据库中读取数据:

# 从 sqlalchemy 导入创建引擎的功能

fromsqlalchemy importcreate_engine

# 建立数据库连接,替换其中的用户名、密码、主机地址、端口、数据库名

con = create_engine( 'postgres://linjiwx:xxxxxx@192.168.0.2:5432/testdb')

# 写 SQL 语句

sql = "SELECT * FROM table"

# 读取数据

df = pd.read_sql(sql, con)

df.head

类似地,你也可以参考前面介绍过的方法,把密码等敏感信息保存在单独的文件中,我们在这里就不重复演示了。

5. 如何从 Oracle 数据库中读取数据?

在第一次运行之前,需要先安装 cx_Oracle ,在 Jupyter Notebook 中运行:

# 安装或更新 cx_Oracle

!pip3 install --upgrade cx_Oracle

安装成功后,可以用下面的代码实现从 Oracle 数据库中读取数据:

# 防止中文乱码

importosos.environ[ 'NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

# 从 sqlalchemy 导入创建引擎的功能

fromsqlalchemy importcreate_engine

# 建立数据库连接,替换其中的用户名、密码、主机地址、端口、数据库名

con = create_engine( 'oracle+cx_oracle://system:xxxxxx@192.168.0.3:1521/orcl')

# 写 SQL 语句

sql = "SELECT * FROM table"

# 读取数据

df = pd.read_sql(sql, con)

从上面的几个例子,我们可以看到,利用 SQLAlchemy 框架,从不同数据库中读取数据的方法非常相似,只需要简单地修改一些参数即可。

6. 如何从网页中读取数据?

当访问 https 网页时,为了防止报错,需要用到 ssl 模块,解决证书不受信任的问题。

# 为了防止报错:SSLV3_ALERT...

importssl

ssl._create_default_https_context = ssl._create_unverified_context

# 网址

url = 'http://s.askci.com/stock/a/?reportTime=2019-03-31&pageNum=1'

# 读取网页中的表格数据

dfs = pd.read_html(url)

其中 read_html 函数会读取当前网页的所有表,我们可以用 dfs[0] 获取网页中的第一个表。

7. 小结

在正式开始进行数据分析之前,通常需要先读取数据,本文介绍了用 Python 从 5 种不同的地方读取数据,分别是从 Excel、MySQL、PostgreSQL、Oracle 数据库和网页中读取数据,其中有一些代码其实是伪代码,不是复制粘贴后就能直接运行得到结果的,需要你根据自己的实际情况,修改其中的参数和表名等信息。

最后,不要忘了去实践,就像你学骑自行车,就算你把理论知识都彻底搞明白了,如果不骑上自行车去试试,那么终究还是不会骑的。

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值