对数据做操作

0.

着重要看的是pandas的数据的输入和输出

io分为几个大类

读取文本文件或者其他更高效的磁盘储存

加载数据库中的数据

用web api操作网络资源

这些函数将文本数据转换为df  有这么几个选项

索引:将一个或者多个列当做返回的df处理  以及是否从文件、用户获取列名

类型推断和数据转换:包括用户定义值的转换 和自定义的缺失值标记列表等

日期解析:将分散在多个列中的日期时间信息组合成结果中的单个列(这个是不是类似excel的date函数。。)

迭代:可以对大文件进行逐块迭代

不规整数据:跳过一些行,页脚,注释,或者其他一些不重要的东西

 

0.5.

插一些cmd的事

除了在想进的界面用shift+右键

就是用cd  路径\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\右斜杠

cd\   返回上一级

cd..   返回主盘

cd  路径\文件.后缀  执行文件

type  路径\文件.后缀  打开文件

dir  看文件夹下有什么文件

 

1.

df=pd.read_csv('路径/文件.后缀名')

打开并定义df 

df=pd.read_table('路径/文件.后缀名',sep=',')

这个是指定了分隔符是 逗号‘,’

pd.read_csv(‘路径/文件.后缀名',header=None)

这个指定没有表头,第一行就是表格中的内容  不是作为表头了

pd.read_csv(‘路径/文件.后缀名',names=['a','b','c'],index_col='c')

同样 这个就是把adc作为表头了  同时c作为了索引的表头

pd.read_table(文件,sep='\s+')     这个是正则表达式  表示的是任意个空白符

pd.read_table(文件,skiprows=[0,1,3])

pd.isnull(df)  就会显示出来  df里有值得是T  没有的是F

 

2.

逐块读取文本文件: 假如有100行 那就10行10行的看

pd.optoins.display.max_rows=10   最多就显示10行 中间的是省略号

pd.read_table(文件,nrows=5)   就读取前五行

                                    shipfooter=5    从文件末尾忽略的行数

                                    skiprows=5      从文件开头忽略的行数

这些都不包括表头

可以指定行数:  chunksize

chunker=pd.read_table(文件,chunksize=5)  这个chunker是一个迭代器

然后就可以 

t=pd.Series([  ])

for piece in chunker:

     t=t.add(piece['key'].calue_counts(),fill_value()) 

     t=t.sort_values(ascending=False)

也可以用get_chunk方法 可以读取任意大小的块

 

3.

数据可以被输出为分隔符格式的文本

df=pd.read_csv(‘路径/文件.后缀名')

df.to_csv(‘路径/文件.后缀名',sep='|')  这就用|分隔了

df.to_csv(‘路径/文件.后缀名',na_rep('空字符表示的内容')) 

同上,括号里边可以是index=False 不加索引

header=None 不加表头

以上是df的  Series也有个to_csv的方法

只有两列

 

4.

import csv

reader是进行迭代 将为每行产生一个元组 并移除所有引号

现在是要将这些个数据整理:

这个是  13行  把文件读取到了一个多行的列表中

14行把表头和数据分离

15行用字典构造式和zip(*values) 创造数据列的字典  h就一个 v指不定几个  

这是h:v      然后循环    hv in zip(解包元组 以及 里边要解包values)

这是相关的参数 

但这个只能是简单的分隔符才能这样

如果是复杂分隔符或者多字符的分隔符 只能用字符串的split方法或者正则去处理了

如果要手工输出分隔符文件  就要使用csv.write

他接受一个已经打开的且可写的文件对象已经跟reader相同的格式化选项

 

4.

JSON数据成为通过HTTP请求在web浏览器和其他应用程序之间发送数据的标准格式之一了

他比表格型文本格式csv要灵活

这里就先简单的记得有这么个事就行了 后续章节还会再说这个

import json

obj是一个字典

result=json.loads(obj)

asjson=json.dumps(result)     他将一个python对象转换成json格式

df=pd.DataFrame(result['要取的列'],column=['表头'])   将一个json对象传入df构造器 然后就可以了

data=pd.read_json(文件)  把默认选项即假设json数组中的每个对象都是表格中的一行

to_json方法,将数据从pandas输出到json

 

5.

XML和HTML这两个提供web信息的数据的库,包括lxml,beautifulsoup,html5lib

lxml是一个库  bs4  html5lib也是  都可以pip安装

pandas内置的read_html  可以使lxml和bs自动将html文件中的表格变为df对象

他把<table>标签内的表格数据给解析了

后续章节还有清洗的内容

lxml.objectify  import起来

path要设定一个xml的路径

parse=objectify.parse(open(path))

root=parse.getroot()

root.INDICATOR  翻译是 指示器  这个返回一个用于生产各个

<INDICATOR>XML元素的生成器

对于每条记录  可以用标记名称和数据值 填充出一个字典

然后这个字典转换为一个df

 

6.

二进制数据格式  python内置pickle序列化

pd对象的  to_pickle方法  可以把pd对象的数据以pickle格式保存到磁盘上

df=pd.read_csv('文件')    定义df

df.to_pickle('保存pickle文件路径')    保存为pickle文件

pd.read_pickle:('文件')

pd内置支持两个数据格式:HDF5   MessagePack    

pd或者np  数据有其他的储存格式:

bcolz:一种可压缩的列存储二进制格式   基于Blosc压缩裤

Feather:列存储文件格式

 

7.

HDF5    hdf是指层次性数据格式    HDF5是一种存储大规模科学数组数据的文件格式

每个HDF5都含有一个文件系统式的节点结构

可以分块高效读写

pandas提供了高级的接口 可以简化储存Series和df对象

HDFStore类像字典 可以处理低级的细节

df=pd.DataFrame({   })

store=pd.HDFStore('data.h5')   

store['obj1']=df

store[‘obj1_col’]=df['a']

就可以输出store了

HDFStore支持的存储模式   fixed  table 

store.put('obj',df,format='table')

store.select('obj',where=['index>10'])

table是支持特殊语法进行查询操作的

put是store['obj']=df方法的现实版本  允许我们设置其他选项

pd.read_hdf函数:df.to_hdf('h5文件',‘obj’,format='表头')

                                  pd.read_hdf('h5文件',‘obj’,where=[条件])

以上都是处理少量数据

如果处理本地海量数据 可以用PyTables和h5py

数据分析问题大多是IO密集型,不是CPU密集型  所以用HDF5这样的工具能显著提升应用程序的效率

HDF5不是数据库 他是适合一次写多次读的数据集

 

8.

终于到Excel了

要安装xlrd读取XLS

安装openpyxl读取XLSX

pd的ExcelFile类或者pd.read_excel函数,配合上述两个工具 才可以读excel

如果要读取一个文件中的多个sheet  创建ExcelFile更快,但也可以不传递

如果要将pandas数据写入为excel  要先创建一个ExcelWriter  然后使用pd对象的to_excel方法写入

也可以不用ExcelWriter,直接传递文件路径到to_excel

 

9.

WebAPI交互

现在许多网站都通过json或其他格式提供数据的公共api

可以通过request包

import request

url=‘网址’

resp=request.get(url)

data=resp.json()

data[0]['title']

issues=pd.DataFrame(data,columns=['number','label'])

这样就可以创建常见的web api接口  返回df对象 

 

10.

数据库

import sqlite3

import数据库

query=‘’‘

             CREATE TABLE  test

             ( a VARCHAR(20),b VARCHAR(20),

               c REAL,    d INTEGER 

              )’‘’

建一个叫query的表

con=sqlite3.connect('mydata.sqlite')

con是一个连接

con.execute(query)

con执行query

con.commit()

指派con

data=[{(插入几个元组)

             (里边都是四个元素)

            }]

做一个data

stmt=‘ INSERT INTO test VALUES(?,?,?,?)’

stmt是一个插入内容的语句

con.executemany(stmt,data)

把内容插入了

从表中选取数据的时候会返回一个元组列表

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

光标执行语句

rows=cursor.fetchall()

全部取得

rows

就会返回一个元组组成的列表

pd.DataFrame(rows,columns=[x[0]  for x  in cursor])

这里边cursor的第0位是abcd  可以用cursor.description描述

pd有一个read_sql函数  

import sqlalchemy as sqla

db=sqla.ceate_engine('sqlite:///mydata.sqlite')

创建引擎 指向数据库

pd.read_sql('select * from test', db)  

 

11.

以上是第一步的内容:访问数据

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值