Python数据分析学习(四)数据加载、存储、文件格式

一、读写文本格式的数据

(一)读取文本数据

pandas解析函数
函数说明
read_csv从文件、URL、文件型对象中加载带分隔符的数据,默认分割符为逗号 (常用)
read_table从文件、URL、文件型对象中加载带分隔符的数据,默认分割符为制表符‘\t’ (常用)
read_fwf读取定宽列格式数据,没有分隔符
read_clipboard读取剪贴板上的数据,可以看做read_table的剪贴板,在网页转换为表格时十分有用
type test.csv  # 将文本内容原始内容打印
# 文本文件内容没有标题行的情况下
pd.read_csv('test1.csv', header=None)  # Pandas可为其分配默认列名

pd.read_csv('test1.csv', names=['a','b','c','d'])  # 没有标题行的情况下,也可以自定义列名
# 可以通过index_col参数指定列作为DataFrame的索引
pd.read_csv('test2.csv', names=['a','b','c','d'],index_col='d')

# 可以通过为index_col参数传递由列编号或列名组成的列表作为DataFrame的一个层次化索引
test1 = pd.read_csv('test2.csv', names=['a','b','c','d'],index_col=['c', 'd'])
# 分隔符步规则时,可利用正则表达式自定义分隔符
pd.read_table('test3.txt',sep='\s+')
# skiprows参数可跳过指定行,读入其他行数据
pd.read_csv('test4.csv',skiprows=[1,3,5])
# pandas常用一组经常出现的标记值进行识别缺失值,如NA、-1.#IND、NULL等,可以用isnull()方法查看
result = pd.read_csv('test5.csv')
pd.isnull(result) # 其输出为False和True组成的数组

# na_values参数可以接受一组用于表示缺失值的字符串
pd.read_csv('test5.csv', na_values=['NULL'])

# 可以为na_values传入一个字典为各列指定不同的NA标记值
pd.read_csv('test5.csv', na_values={'a':['tom','jack'],'b':['13']})
read_csv和read_table函数参数

在这里插入图片描述

(二)写入数据至文本文件

to_csv('test.csv') # 写入CSV文件

from_csv('test.csv', parse_dates=True)  # 作用同上,效果类似 

(三)JSON数据

JSON(javaScript Object Notation)

obj = """
{"name" : "Wes",
"places_lived": ["United States","Spain","Germany"],
"pet": null,
"siblings": [{"name":"Scott","age":25,"pet":"Zuko"},
				{"name": "Katie","age": 33,"pet": "Cisco"}]
}
"""

# 导入json数据模块
import json

# 将json字符串转换为Python形式
result = json.loads(obj)

# 将Python对象转换为JSON形式
asjson = json.dumps(result)

# 将一组JSON对象转换为DataFrame,向DataFrame构造器传入一组JSON对象,并选取数据字段的子集
silbings = DataFrame(result['siblings'],columns=['name','age'])

二、二进制数据格式

使用Python内置的pickle序列化

frame = pd.read_csv('test1.csv')
frame.save('frame_pickle')

将pickle数据读回到Python

pd.load('frame_pickle')

(一)使用HDF5格式

可以实现高效读写磁盘上以二进制格式存储的科学数据,HDF5更适合一次写入多次读取的操作,同时写入可能会出现错误

# Pandas的HDFStore类通过PyTables存储pandas对象
store = pd.HDFStore('data.h5')

# 读取HDF5文件的对象可以像读取字典一样进行获取
store['obj1']

(二)读取Excel文件

需要先安装xlrdopenpyxl

# 创建一个ExcelFile实例
xls_file =pd.ExcelFile('data.xls')或者xls_file =pd.ExcelFile('data.xlsx')

# 读取工作表
table = xls_file.parse('Sheet1')

三、使用HTML和Web API

该节与爬虫学习相关,主要为向网页请求并爬取相应数据

四、使用数据库

(一)SQL

内置驱动器sqlite3

import sqlite3
query = """
CREATE TABLE test
(
a VARCHAR(20), 
b VARCHAR(20), 
c REAL, 
d INTEGER
);
"""
con = sqlite3.connect(':memory:')  # 连接SQL数据库
con.execute(query)  # 执行语句
con.commit()  # 提交 确定完成

插入几行数据

data= [('Atlanta','GEorgia',1.25,6),
		('Tallahassee','Florida',2.6,3),
		('Sacramento','California',1.7,5)]
stmt = "INSERT INTO test VALUES(?,?,?,?)"

# stmt sql模板字符串  
# data 模板字符串的参数,是一个列表,列表的每一个元素必须是元组!!!
con.executemany(stmt,data)  # 批量执行语句
concommit()  # 提交 确定完成

读取数据,大部分Python SQL驱动器(PyODBC、psycopg2、MySQLdb、pymssql等)会返回一个元组列表

cursor = con.execute('select * from test')
rows = cursor.fetchasll() 

传递元组列表给DataFrame的构造器,需获取器列名(元组列表的description属性)

DataFrame(rows, columns=zip(*cursor.description)[0])

# 简化版,操作简单
import pandas.io.sql as sql
sql.read_frame('select * from test', con)

(二)NoSQL(例:MongoDB)

Python_MongoDB菜鸟教程

用pymongo(MongoDB的驱动器)通过默认端口进行连接

import pymongo
con = pymongo.Connection('localhost',port=27017)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值