如何利用Python来读取数据


利用python读取数据,往往是做数据分析的第一步,文章主要讲解一些问题的解决方法,当我们再遇到类似问题,我们可以方便查阅做下参考:

为了方便起见,我们直接下载Anaconda python最新版集成环境,安装完成后,我们在开始菜单中打开Anaconda Prompt执行如下命令:

  • jupyter lab安装命令:conda install jupyterl
  • 升级jupyter内核和客户端:conda update jupyter_core jupyter_client
  • 启动jupyter lab:jupyter lab
  • 启动jupyter notebook:jupyter notebook

如何用python 从Excel 文件中读取数据?

我们直接看 Python 代码:

# 导入 Excel 文件
df = pd.read_excel('文件名.xlsx')

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

# 查询帮助文档
pd.read_excel?

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

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

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

# 查询帮助文档和源代码
pd.read_excel??

利用xlrd导入库

import xlrd
import xlwt

def readexcel():
    #这个部分是读取内容
    workbook=xlrd.open_workbook('E:\python\excel\待清洗的扑克牌数据集.xlsx')
    print (workbook.sheet_names()) #输出页面签名
    sheet2=workbook.sheet_by_name('sheet1') #打开页面
    nrows=sheet2.nrows # 获取行数
    ncols=sheet2.ncols #获取列数
    print(nrows,ncols) #输出结果

    cell_A=sheet2.cell(10,3).value #取出第二行第二例的值
    print(cell_A) #输出结果

if __name__ == ' __main__ ' :
    readexcel()

如何从 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()

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

如何从 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()

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

如何从 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 框架,从不同数据库中读取数据的方法非常相似,只需要简单地修改一些参数即可。

如何从网页中读取数据?

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

# 为了防止报错:SSLV3_ALERT...
import ssl
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] 获取网页中的第一个表。

最后总结:

再进行数据分析之前,我们要先通过用上面的方法读取不同的数据,包括EXCEL、SQL等,然后不断的实践练习,就想刚开始学自行车一样,你已经彻底搞明白知道怎么骑了,但是你不去骑着试试,终究还是不会骑。

本文由 学习链 作者:学习链 发表,其版权均为 学习链 所有,文章内容系作者个人观点,不代表 学习链 对观点赞同或支持,未经许可,禁止转载,题图来自Unsplash,基于CC0协议。

抱歉,评论已关闭!