pandas支持的一种新的可序列化的数据格式,这是一种轻量级的可移植二进制格式,类似于二进制JSON,这种数据空间利用率高,在写入(序列化)和读取(反序列化)方面都提供了良好的性能。
read_clipboard 函数读取剪贴板中的数据,可以看作read_table的剪贴板版本。在将网页转换为表格时很有用
这个地方出现如下的BUG
module 'pandas' has no attribute 'compat'
我更新了一下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 即可
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之一。
案例1orient='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'
成员为字典列表
orient='index'
以索引为key,以列字段构成的字典为键值。如:
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}]或者使用lines参数,并且JSON调整为每行一条数据
{"a":1,"b":1} {"a":2,"b":2}