赞
踩
继续深入学习pandas相关操作,数据读取写入、分组、合并,转换等等。前面一篇文章里已经写了关于描述性统计以及常用的基本操作。接下来的一段时间里,我将陆续地去掌握并输出。这篇文章是关于数据读取与写入的知识点。
平时工作中,我们会接触到不同的数据文件,比如很常见的excel文件(后缀名为xls和xlsx),csv、txt等文本文件,json文件以及sql文件等等。pandas读取这些数据文件的方法如表格所示:(全套Python入门教程文末领取哈)
read_csv()方法用来读取 csv格式的数据文件,read_table()方法则是读取通用分隔符分隔的数据文件,它们的参数相同。语法:
pandas.read_csv(filepath_or_buffer, sep=’,’, delimiter=None, header=’infer’, names=None, index_col=None, usecols=None,skiprows=None)
参数说明:
先在当前工作目录下创建csv文件,如下图可以看到这个csv文件包含三列数据,列名为studentNo,name,age。使用read_csv将这三列数据读入到DataFrame。使用cat命令显示文件内容:
读取数据
import pandas as pd
df = pd.read_csv('01.csv')
df
当使用read_table()时,运行代码后出现一个Warning,使用的是最新的版本python3.7。根据提示,修改如截图:
FutureWarning: read_table is deprecated, use read_csv instead, passing sep='\t'
df = pd.read_table('doupo.txt')
df
使用to_csv()方法,可以将数据导出为逗号分隔的数据文件。详述省略。
python处理excel文件用到的模块包含openpyxl、xlsxwriter、xlutils、xlrd、xlwt。想要了解更多关于这几个处理excel文件的python包的详情,可以访问python-excel官网。因为我使用的是Anaconda,Anaconda已经默认安装了xlrd和xlwt等模块,故无需再使用pip去安装啦。
而Python的数据分析库pandas提供了read_excel函数来读取.xls和.xlsx两种excel文件。其中.xls是office excel 2007之前的版本默认保存的文件扩展名。而.xlsx是2007版本之后的。 有时一个excel文件会包含多个工作表,比如下面这个表格文有book和movie两个工作表。
# xlrd为读取excel的库 import xlrd workbook = xlrd.open_workbook('douban.xlsx') sheetnames = workbook.sheet_names() sheet1 = workbook.sheet_by_name(sheetnames[1]) #通过sheet名称获取到第2张工作表book #或 sheet1 = workbook.sheets()[1] #或 sheet1 = workbook.sheet_by_index(1) print('sheet名称列表:' + sheetnames) print('第1张工作表名称:' + sheet1.name) print('列数:' + str(sheet1.ncols)) print('行数:' + str(sheet1.nrows)) print('第2行所有数据:' + str(sheet1.row_values(2))) # 包括列名这一行,从0算起, print('第2列所有数据:' + str(sheet1.col_values(1)))
通过pandas.read_excel方法读取excel文件,read_excel( )默认读取第一个工作表
的,如果我想要读取movie这个工作表的话,就需要传参啦。
df = pd.read_excel('douban.xlsx', sheet_name = 'movie')
df
这时存储在表中的数据通过pandas.read_excel方法读取到DataFrame中啦,结果显示如下:
使用to_excel()方法,可以将数据存储到excel文件里。写入方法不详说了。
Python处理数据库时同样有第三方库,比如PyMySQL,SQLAlchemy等等,利用这些ORM库(ORM,全称object-relational mapping,即对象关系映射)可以实现对数据库的增删改查。而pandas实现数据库读取有3个方法,分别为read_sql,read_sql_table,read_sql_query。
read_sql_table只能读取数据库的某一个表格,不能实现查询的操作,而read_sql_query只能实现查询操作,不能直接读取数据库中的某个表,read_sql是两者的结合。语法:
pandas.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,columns=None)
pandas.read_sql_query(sql,con,index_col=None,coerce_float=True)
pandas.read_sql(sql,con,index_col=None,coerce_float=True,columns=None)
参数说明:
这里使用的是SQLAlchemy库来建立数据库连接,需要数据库驱动使用的Python内置的SQLlite。对SQLite的简介如下:
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
from sqlalchemy import create_engine
# create_engine()用来初始化数据库连接
engine = create_engine('sqlite://', echo = False)
df = pd.DataFrame({'name': ['tom', 'David', 'mary'], 'age': [18,19,17], 'score': [89,90,59]})
df
将df写入数据库中取名为“student”的表,需要查看下是否有成功写入数据库,执行sql请求,获取所有数据。实现代码如下:
df.to_sql('student', con=engine)
engine.execute("SELECT * FROM student").fetchall()
使用pandas的读取数据库方法来读取:
# read_sql_query
df = pd.read_sql_query('SELECT * FROM student', con = engine)
# read_sql_table
df = pd.read_sql_table('student', con = engine)
# read_sql
df = pd.read_sql('SELECT * FROM student', con = engine)
df = pd.read_sql('student', con = engine)
df
以上就是使用数据分析库pandas来读取写入不同数据文件的内容啦。
读者福利:知道你对Python感兴趣,便准备了这套python学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。