深入理解pandas读取excel,txt,csv文件等命令 (4)

pandas支持的一种新的可序列化的数据格式,这是一种轻量级的可移植二进制格式,类似于二进制JSON,这种数据空间利用率高,在写入(序列化)和读取(反序列化)方面都提供了良好的性能。

read_clipboard 函数

读取剪贴板中的数据,可以看作read_table的剪贴板版本。在将网页转换为表格时很有用

这个地方出现如下的BUG

module 'pandas' has no attribute 'compat'

我更新了一下pandas 既可以正常使用了

python深入理解pandas


还有一个比较坑的地方,就是在读取剪切板的时候,如果复制了中文,很容易读取不到数据
解决办法

打开site-packages\pandas\io\clipboard.py 这个文件需要自行检索

在 text = clipboard_get() 后面一行 加入这句: text = text.decode('UTF-8')

保存,然后就可以使用了

read_excel 函数

依旧是官方文档一码当先:

参数 中文释义
io   文件类对象 ,pandas Excel 文件或 xlrd 工作簿。该字符串可能是一个URL。URL包括http,ftp,s3和文件。例如,本地文件可写成file://localhost/path/to/workbook.xlsx  
sheet_name   默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframe,表名用字符串表示,索引表位置用整数表示;  
header   指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;  
names   指定列的名字,传入一个list数据  
index_col   指定列为索引列,也可以使用u”strings” ,如果传递一个列表,这些列将被组合成一个MultiIndex。  
squeeze   如果解析的数据只包含一列,则返回一个Series  
dtype   数据或列的数据类型,参考read_csv即可  
engine   如果io不是缓冲区或路径,则必须将其设置为标识io。 可接受的值是None或xlrd  
converters   参照read_csv即可  
其余参数   基本和read_csv一致  
pandas 读取excel文件如果报错,一般处理为

错误为:ImportError: No module named 'xlrd'
pandas读取excel文件,需要单独的xlrd模块支持 pip install xlrd 即可

read_json 函数 参数 中文释义
path_or_buf   一个有效的JSON文件,默认值为None,字符串可以为URL,例如file://localhost/path/to/table.json  
orient (案例1)   预期的json字符串格式,orient的设置有以下几个值:
1. 'split' : dict like {index -> [index], columns -> [columns], data -> [values]}
2. 'records' : list like [{column -> value}, ... , {column -> value}]
3. 'index' : dict like {index -> {column -> value}}
4. 'columns' : dict like {column -> {index -> value}}
5. 'values' : just the values array
 
typ   返回的格式(series or frame), 默认是 ‘frame’  
dtype   数据或列的数据类型,参考read_csv即可  
convert_axes   boolean,尝试将轴转换为正确的dtypes,默认值为True  
convert_dates   解析日期的列列表;如果为True,则尝试解析类似日期的列,默认值为True
参考列标签
it ends with '_at',
it ends with '_time',
it begins with 'timestamp',
it is 'modified',
it is 'date'
 
keep_default_dates   boolean,default True。如果解析日期,则解析默认的日期样列  
numpy   直接解码为numpy数组。默认为False;仅支持数字数据,但标签可能是非数字的。还要注意,如果numpy=True,JSON排序MUST  
precise_float   boolean,默认False。设置为在将字符串解码为双精度值时启用更高精度(strtod)函数的使用。默认值(False)是使用快速但不太精确的内置功能  
date_unit   string,用于检测转换日期的时间戳单位。默认值无。默认情况下,将检测时间戳精度,如果不需要,则通过's','ms','us'或'ns'之一分别强制时间戳精度为秒,毫秒,微秒或纳秒。  
encoding   json编码  
lines   每行将文件读取为一个json对象。  

如果JSON不可解析,解析器将产生ValueError/TypeError/AssertionError之一。

案例1

orient='split'

import pandas as pd s = '{"index":[1,2,3],"columns":["a","b"],"data":[[1,3],[2,5],[6,9]]}' df = pd.read_json(s,orient='split')

orient='records'
成员为字典列表

import pandas as pd s = '[{"a":1,"b":2},{"a":3,"b":4}]' df = pd.read_json(s,orient='records')

orient='index'
以索引为key,以列字段构成的字典为键值。如:

s = '{"0":{"a":1,"b":2},"1":{"a":2,"b":4}}'

orient='columns' 或者 values 自己推断即可

部分中文翻译,可以参考github> https://github.com/apachecn/pandas-doc-zh

read_json()常见BUG

读取json文件出现 ValueError: Trailing data ,JSON格式问题
原格式为

{"a":1,"b":1},{"a":2,"b":2}

调整为

[{"a":1,"b":1},{"a":2,"b":2}]

或者使用lines参数,并且JSON调整为每行一条数据

{"a":1,"b":1} {"a":2,"b":2}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfjgy.html