如何用 Python 读取数据?

林骥
林骥
林骥
44
文章
0
评论
2021-08-1217:43:03 评论 878 3177字
摘要

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

 

1. 序言

 

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

 

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

 

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

 

我们将统一使用 Pandas 来读取数据:
# 导入 pandas 模块import pandas as pd
这是每次重新开始数据分析之前,都需要运行的代码,以后凡是见到包含 pd. 的代码,就表示我们已经运行了这行代码。

 

输入 pd.read 后,按 Tab 键,系统将把以 read 开头的函数和模块都列出来。
如何用 Python 读取数据?

 

运行以下代码:
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 导入创建引擎的功能from sqlalchemy import create_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 导入创建引擎的功能from sqlalchemy import create_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 导入创建引擎的功能from sqlalchemy import create_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 数据库中读取数据:
# 防止中文乱码import osos.environ["NLS_LANG"] = "SIMPLIFIED CHINESE_CHINA.UTF8"# 从 sqlalchemy 导入创建引擎的功能from sqlalchemy import create_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...import sslssl._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 数据库和网页中读取数据,其中有一些代码其实是伪代码,不是复制粘贴后就能直接运行得到结果的,需要你根据自己的实际情况,修改其中的参数和表名等信息。

 

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

End.

爱数据网专栏作者:林骥

作者介绍:数据赋能者,专注数据分析 10 多年。

个人公众号:林骥(linjiwx)

本文为挖数网专栏作者原创文章,未经允许禁止转载,需要转载请微信联系授权(微信号:lovedata0520)

更多文章前往爱数据社区网站首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: