利用Python进行数据分析_Pandas_数据加载、存储与文件格式
申明:本系列文章是自己在学习《利用Python进行数据分析》这本书的过程中,为了方便后期自己巩固知识而整理。
1 pandas读取文件的解析函数
read_csv 读取带分隔符的数据,默认分隔符 逗号
read_table 读取带分隔符的数据,默认分隔符 “\t”
read_fwf 读取定宽、列格式数据(无分隔符)
read_clipboard 读取剪贴板中的数据(将网页转换为表格)
1.1 读取excel数据
import pandas as pd
import numpy as np
file = 'D:\example.xls'
pd = pd.read_excel(file)
pd
运行结果:
1.1.1 不显示表头
pd = pd.read_excel(file,header=None)
运行结果:
1.1.2 设置表头
pd = pd.read_excel(file,names=['Year','Name','Math','Chinese','EngLish','Avg'])
运行结果:
1.1.3 指定索引
pd = pd.read_excel(file,index_col= '姓名')
运行结果:
2 读取CSV数据
import pandas as pd
import numpy as np
pd = pd.read_csv("d:\\test.csv",engine='python')
pd
运行结果:
import pandas as pd
import numpy as np
pd = pd.read_table("d:\\test.csv",engine='python')
pd
运行结果:
import pandas as pd
import numpy as np
pd = pd.read_fwf("d:\\test.csv",engine='python')
pd
运行结果:
3 将数据写出到文本格式
将数据写出到csv格式,默认分隔符 逗号
import pandas as pd
import numpy as np
pd = pd.read_fwf("d:\\test.csv",engine='python')
pd.to_csv("d:\\test1.csv",encoding='gbk')
运行结果:
4 手工处理分隔符格式
单字符分隔符文件,直接用csv模块
import pandas as pd
import numpy as np
import csv
file = 'D:\\test.csv'
pd = pd.read_csv(file,engine='python')
pd.to_csv("d:\\test1.csv",encoding='gbk',sep='/')
f = open("d:\\test1.csv")
reader = csv.reader(f)
for line in reader:
print(line)
运行结果:
4.1 缺失值填充
import pandas as pd
import numpy as np
import csv
file = 'D:\\test.csv'
pd = pd.read_csv(file,engine='python')
pd.to_csv("d:\\test1.csv",encoding='gbk',sep='/',na_rep='NULL')
f = open("d:\\test1.csv")
reader = csv.reader(f)
for line in reader:
print(line)
运行结果:
4.2 JSON
4.2.1 json.loads 可将JSON字符串转换成Python形式
import pandas as pd
import numpy as np
import json
obj = """{
"sucess" : "1",
"header" : {
"version" : 0,
"compress" : false,
"times" : 0
},
"data" : {
"name" : "BankForQuotaTerrace",
"attributes" : {
"queryfound" : "1",
"numfound" : "1",
"reffound" : "1"
},
"columnmeta" : {
"a0" : "DATE",
"a1" : "DOUBLE",
"a2" : "DOUBLE",
"a3" : "DOUBLE",
"a4" : "DOUBLE",
"a5" : "DOUBLE",
"a6" : "DATE",
"a7" : "DOUBLE",
"a8" : "DOUBLE",
"a9" : "DOUBLE",
"b0" : "DOUBLE",
"b1" : "DOUBLE",
"b2" : "DOUBLE",
"b3" : "DOUBLE",
"b4" : "DOUBLE",
"b5" : "DOUBLE"
},
"rows" : [ [ "2017-10-28", 109.8408691012081, 109.85566362201733, 0.014794520809225841, 1.0, null, "", 5.636678251676443, 5.580869556115291, 37.846934105222246, null, null, null, null, null, 0.061309012867495856 ] ]
}
}
"""
result = json.loads(obj)
result
运行结果:
4.2.2 json.dumps可将Python字符串转换成JSON形式
result = json.loads(obj)
asjson=json.dumps(result)
asjson
运行结果:
4.2.3 JSON数据转换成DataFrame
import pandas as pd
import numpy as np
from pandas import DataFrame
import json
obj = """{
"sucess" : "1",
"header" : {
"version" : 0,
"compress" : false,
"times" : 0
},
"data" : {
"name" : "BankForQuotaTerrace",
"attributes" : {
"queryfound" : "1",
"numfound" : "1",
"reffound" : "1"
},
"columnmeta" : {
"a0" : "DATE",
"a1" : "DOUBLE",
"a2" : "DOUBLE",
"a3" : "DOUBLE",
"a4" : "DOUBLE",
"a5" : "DOUBLE",
"a6" : "DATE",
"a7" : "DOUBLE",
"a8" : "DOUBLE",
"a9" : "DOUBLE",
"b0" : "DOUBLE",
"b1" : "DOUBLE",
"b2" : "DOUBLE",
"b3" : "DOUBLE",
"b4" : "DOUBLE",
"b5" : "DOUBLE"
},
"rows" : [ [ "2017-10-28", 109.8408691012081, 109.85566362201733, 0.014794520809225841, 1.0, null, "", 5.636678251676443, 5.580869556115291, 37.846934105222246, null, null, null, null, null, 0.061309012867495856 ] ]
}
}
"""
result = json.loads(obj)
result
jsondf = DataFrame(result['data'],columns = ['name','attributes','columnmeta'],index={1,2,3})
jsondf
运行结果:
备注:其中attributes和columnmeta,存在嵌套,这个问题后面再补充。
4.3 XML和HTML
爬取同花顺网页中的列表数据,并转换成DataFrame
在爬取的时候,我这里没有考虑爬分页的数据,有兴趣的可以自己尝试,我这里主要是想尝试爬取数据后转成DataFrame
代码如下:
import pandas as pd
import numpy as np
from pandas.core.frame import DataFrame
from lxml.html import parse
import requests
from bs4 import BeautifulSoup
import time url = 'http://data.10jqka.com.cn/market/longhu/'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
response = requests.get(url = url,headers = headers)
html = response.content
soup = BeautifulSoup(html, 'lxml')
s = soup.find_all('div','yyb') # 获取dataframe所需的columns
def getcol():
col = []
for i in s:
lzs = i.find_all('thead')
for k in lzs:
lbs = k.find_all('th')
for j in lbs:
col.append(j.text.strip('\n'))
return col # 获取dataframe所需的values
def getvalues():
val = []
for j in s:
v = j.find_all('tbody')
for k in v:
vv = k.find_all('tr')
list = []
for l in vv:
tdlist = []
vvv = l.find_all('td')
for m in vvv:
tdlist.append(m.text)
list.append(tdlist)
return(list) if __name__ == "__main__":
cols = getcol()
values = getvalues()
data=DataFrame(values,columns=cols)
print(data)
运行结果:
4.4 二进制数据格式
pandas对象的save方法保存,load方法读回到Python
4.5 HDF5格式
HDF是层次型数据格式,HDF5文件含一个文件系统式的节点结构,支持多个数据集、元数据,可以高效的分块读写。Python中的HDF5库有2个接口:PyTables和h5py。
海量数据应该考虑用这个,现在我没用着,先不研究了。
4.6 使用HTML和Web API
import requests
import pandas as pd
from pandas import DataFrame
import json
url = 'http://t.weather.sojson.com/api/weather/city/101030100'
resp = requests.get(url)
data = json.loads(resp.text)#这里的data是一个dict
jsondf = DataFrame(data['cityInfo'],columns =['city','cityId','parent','updateTime'],index=[1])#实例化
jsondf
运行结果:
4.7 使用数据库
4.7.1 sqlite3
import sqlite3
import pandas.io.sql as sql
con = sqlite3.connect()
sql.read_frame('select * from test',con)#con 是一个连接对象
4.7.1 MongoDB
没装。先搁置。
利用Python进行数据分析_Pandas_数据加载、存储与文件格式的更多相关文章
- 利用python进行数据分析之数据加载存储与文件格式
在开始学习之前,我们需要安装pandas模块.由于我安装的python的版本是2.7,故我们在https://pypi.python.org/pypi/pandas/0.16.2/#downloads ...
- 利用Python进行数据分析_Pandas_数据清理、转换、合并、重塑
1 合并数据集 pandas.merge pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, le ...
- python数据分析笔记——数据加载与整理]
[ python数据分析笔记——数据加载与整理] https://mp.weixin.qq.com/s?__biz=MjM5MDM3Nzg0NA==&mid=2651588899&id ...
- 利用Python进行数据分析_Pandas_处理缺失数据
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 读取excel数据 import pandas as pd import ...
- 利用Python进行数据分析_Pandas_数据结构
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 首先,需要导入pandas库的Series和DataFrame In [21] ...
- 利用Python进行数据分析_Pandas_层次化索引
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 层次化索引主要解决低纬度形式处理高纬度数据的问题 import pandas ...
- 利用Python进行数据分析_Pandas_基本功能
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 第一 重新索引 Series的reindex方法 In [15]: obj = ...
- 利用Python进行数据分析_Pandas_汇总和计算描述统计
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. In [1]: import numpy as np In [2]: impo ...
- 利用python进行数据分析之数据规整化
数据分析和建模大部分时间都用在数据准备上,数据的准备过程包括:加载,清理,转换与重塑. 合并数据集 pandas对象中的数据可以通过一些内置方法来进行合并: pandas.merge可根据一个或多个键 ...
随机推荐
- 【spark 算子案例】
package spark_example01; import java.io.File; import java.io.FileWriter; import java.io.IOException; ...
- linux和window下生成任意大小的文件
在Windows环境下的实现方法 使用fsutil命令,在windows xp和win 7下应该都自带了这个命令.命令的格式是 fsutil file createnew 新文件名 文件大小.例如 ...
- 数据分析之 pandas
pandas的拼接操作 pandas的拼接分为两种: 级联:pd.concat, pd.append 合并:pd.merge, pd.join 1. 使用pd.concat()级联 pandas使用p ...
- presto计算日期间隔天数或者小时间隔——date_diff函数使用
“Presto是Facebook最新研发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析.据称该引擎的性能是 Hive 的 10 倍以上.”,亲身用过之后,觉得比hive快了10倍不止. ...
- p2p通信原理及实现
1.简介 当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信.这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还 ...
- Apache RocketMQ 的过去、现在和未来 原创: DataPipeline DataPipeline数见科技 前天
Apache RocketMQ 的过去.现在和未来 原创: DataPipeline DataPipeline数见科技 前天
- 微软代码示例:ASP.NET 2.0 三层架构应用程序教程系列
本文转自:http://www.codeusing.com/hi/uephee.wen/resource/view/170.aspx 资源分类:微软代码示例 更新日期:20 ...
- keepalived两台机器同时出现vip问题
配置文件: 主:192.168.1.14 ! Configuration File for keepalived global_defs { script_user root enable_scrip ...
- java springmvc 前端 跨域问题
有个朋友在写扇贝插件的时候遇到了跨域问题.于是我对解决跨域问题的方式进行了一番探讨. 问题 API:查询单词URL: https://api.shanbay.com/bdc/search/?word= ...
- WPF窗体应用程序开发
1.Window:登录窗口.主窗体.消息框 2.UserControl:业务界面.消息框(如果使用UC来实现,则需要做特殊的处理,比如中断功能如何处理?)(显示一个UC,必须将其添加到容器中,所以&l ...