pandas读取文件数据、存储详解笔记
本文是对 《利用Python进行数据分析》中关于数据读取的回顾性总计笔记,包含代码注释等。
目录
pd.read_csv和pd.read_table
jsons数据读取
二级制数据读取
读写Microsoft Excel文件pd.read_excel
数据写入 .to_csv
pandas读取的函数汇总
pd.read_csv和pd.read_table
共性:
1)两者功能都是从文件、URL、文件型对象中加载带分隔符的数据。
2) 函数的主要参数含义一致。都包括path,sep/delimiter,header,index_col,names,skiprows,na_values,parse_dates,nrows,converters,encoding(前面的这些要记住,尤其注意在读取的时候names为表示列名列表)等。
主要参数含义表
从实例中进行记录,并将注意点注释在代码中
sentinels = {'message': ['foo', 'NA'], 'something': ['two']}
pd.read_csv('ch06/ex5.csv', na_values=sentinels) # 参数 na_values 一组用于替换NA的值。如果传的是kv对,则表示各列中key表示列名。如此k为 message列中,v的值[ 'foo', 'NA'] 都表示为NaN 缺失值,即读出来的值会以缺失值的情况来表示。 如果传的是list ,则表示这个读取的数据各列中遇到list里的值就都当做了NaN缺失值处理
pd.read_csv('ch06/ex5.csv', na_values=[5,8]) #
print(pd.read_csv('ch06/ex2.csv',header=None)) # header 设置导入DataFrame的列名称(选取表头),选取第几行的值作为列名。当另一个参数names没有被赋值时,如果不指定header ,默认header 会给值0,即选取数据的第一行作为列名,如上。当 names 被赋值,header没有被显示赋值时,header的值相当于None,列名按names的给值来,如下。
print(pd.read_csv('ch06/ex2.csv',names=['a','b','c','d','message']))
print("names 和header都给值")
print(pd.read_csv('ch06/ex2.csv',header=0,names=['aa','bb','cc','dd','message'])) # 当names 和header都给值时,以names给的值为列名。即header=0的第一行具体值a,b,c,d,message没有起作用。
# s=pd.read_csv('ch06/ex2.csv',columns=['a','b','c','d','message']) # 注意这个会报错,解析的时候没有columns 。读数据的时候pd.read_csv里面给列名赋值的参数为names ,读取数据完毕后即得到的df 的columns列名。
names=['a','b','c','d','message']
s=pd.read_csv('ch06/ex2.csv',names=names,index_col='message') # names指定各列的名字。index_col指定得到的df的索引。 注意此时被指定的索引列不在出现在columns里了
print(s.columns)
注意:pd.read_csv函数读取数据时的参数没有columns ,而是names。读数据的时候pd.read_csv里面给列名赋值的参数为names ,读取数据完毕后即得到的df 的columns列名。
区别
read_csv的默认分隔符为逗号,read_table的默认分隔符为制表符("\t“),这个其实好记,因为从sql table中抽取数据出来时,默认的分隔符就是制表符。分隔符都可以通过sep指定,只是默认的不同而已。
读取文件的其他相关参数(简单了解即可)
jsons数据读取
思路即通过json.loads将Json数据读取为字典,然后通过DataFrame函数将其转换为dataframe格式的数据,实现数据读取
例子
obj = """
{"name": "Wes","places_lived": ["United States", "Spain", "Germany"],"pet": null,"siblings": [{"name": "Scott", "age": 25, "pet": "Zuko"},{"name": "Katie", "age": 33, "pet": "Cisco"}]
}
""" # 注意此用的包围的符号是 三个", """数据"""
import json
result=json.loads(obj) # loads 解析json
siblings=DataFrame(result['siblings'],columns=['name','age']) # pd.DataFrame选取数据,构建dataframe
print(siblings)#
输出:
name age
0 Scott 25
1 Katie 33
二级制数据读取
pd.read_pickle (简单了解即可)
例子
print(pd.read_pickle('ch06/frame_pickle'))
输出:
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
读写Microsoft Excel文件pd.read_excel
读取,pd.ExcelFile或pandas.read_excel
实例
xlsx = pd.ExcelFile('examples/ex1.xlsx')
frame = pd.read_excel('examples/ex1.xlsx', 'Sheet1') # 可以将excel里面的指定的表文件名传进去,传递到pandas.read_excel:
写入,pandas数据写入为Excel格式
实例
# 如果需要指定sheet名,首先创建一个ExcelWriter,然后使用pandas对象的to_excel方法将数据写入到其中:
In [108]: writer = pd.ExcelWriter('examples/ex2.xlsx')In [109]: frame.to_excel(writer, 'Sheet1')In [110]: writer.save()# ,不指定sheet名
frame.to_excel('examples/ex2.xlsx')
数据写入 .to_csv
dataframe或者series.to_csv
将dataframe写入文件
功能
将数据写到一个默认以逗号分隔的文件中,可以通过sep指定参数。
参数
主要参数:sep,path_or_buf,header,index,columns,encoding
DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None,
header=True, index=True, index_label=None, mode='w', encoding=None, compression=None,
quoting=None, quotechar='"', line_terminator='\n', chunksize=None, tupleize_cols=None,
date_format=None, doublequote=True, escapechar=None, decimal='.')
详细含义(了解即可)
path_or_buf=None: string or file handle, default None
File path or object, if None is provided the result is returned as a string.字符串或文件句柄,默认无文件路径或对象,如果没有提供,结果将返回为字符串。
sep : character, default ‘,’
Field delimiter for the output file.默认字符 ‘ ,’,输出文件的字段分隔符。
na_rep : string, default ‘’
Missing data representation字符串,默认为 ‘’浮点数格式字符串
float_format : string, default None
Format string for floating point numbers字符串,默认为 None浮点数格式字符串
columns : sequence, optional Columns to write顺序,可选列写入
header : boolean or list of string, default True,Write out the column names. If a list of strings is given it is assumed to be aliases for the column names字符串或布尔列表,默认为true.写出列名。如果给定字符串列表,则假定为列名的别名。
index : boolean, default True,Write row names (index).布尔值,默认为Ture.写入行名称(索引)
index_label : string or sequence, or False, default None,Column label for index column(s) if desired. If None is given, and header and index are True, then the index names are used. A sequence should be given if the DataFrame uses MultiIndex. If False do not print fields for index names. Use index_label=False for easier importing in R 字符串或序列,或False,默认为None
如果需要,可以使用索引列的列标签。如果没有给出,且标题和索引为True,则使用索引名称。如果数据文件使用多索引,则应该使用这个序列。如果值为False,不打印索引字段。在R中使用index_label=False 更容易导入索引.
mode : str模式:值为‘str’,字符串,Python写模式,默认“w”
encoding : string, optional,编码:字符串,可选
表示在输出文件中使用的编码的字符串,Python 2上默认为“ASCII”和Python 3上默认为“UTF-8”。
compression : string, optional,字符串,可选项,表示在输出文件中使用的压缩的字符串,允许值为“gzip”、“bz2”、“xz”,仅在第一个参数是文件名时使用。
line_terminator : string, default ‘\n’
字符串,默认为 ‘\n’
在输出文件中使用的换行字符或字符序列
quoting : optional constant from csv module
CSV模块的可选常量
默认值为to_csv.QUOTE_MINIMAL。如果设置了浮点格式,那么浮点将转换为字符串,因此csv.QUOTE_NONNUMERIC会将它们视为非数值的。
quotechar : string (length 1), default ‘”’
字符串(长度1),默认“”
用于引用字段的字符
doublequote : boolean, default True
布尔,默认为Ture
控制一个字段内的quotechar
escapechar : string (length 1), default None
字符串(长度为1),默认为None
在适当的时候用来转义sep和quotechar的字符
chunksize : int or None,int或None,一次写入行
tupleize_cols : boolean, default False
布尔值 ,默认为False从版本0.21.0中删除:此参数将被删除,并且总是将多索引的每行写入CSV文件中的单独行,(如果值为false)将多索引列作为元组列表(如果TRUE)或以新的、扩展的格式写入,其中每个多索引列是CSV中的一行。
date_format : string, default None,字符串,默认为None,字符串对象转换为日期时间对象decimal: string, default ‘.’字符串,默认’。’字符识别为小数点分隔符。例如。欧洲数据使用 ’,’
具体 实例
data.to_csv(sys.stdout,sep='|') # sys.stdout打印输出。即 是接着写入的数据流,并未真正写入文件,而是写入输出到打印流数据流而已。默认 缺失值在输出结果中会被表示为空字符串
输出
|something|a|b|c|d|message
0|one|1|2|3.0|4|
1|two|5|6||8|world
2|three|9|10|11.0|12|foo
data.to_csv(sys.stdout,index=False,columns=['a','b','c']) #注意输出的时候 可以通过columns参数选择需要输出保存的数据列
输出
a,b,c
1,2,3.0
5,6,
9,10,11.0
# 单个Series也可以写入
dates=pd.date_range('1/1/2000',periods=7) # 生成日期date 格式的可以直接用date_range
ts=Series(np.arange(7),index=dates)
ts.to_csv('ch06/tseries.csv') # 单个Series也可以写入
!cat ch06/tseries.csv #
输出
2000-01-01,0
2000-01-02,1
2000-01-03,2
2000-01-04,3
2000-01-05,4
2000-01-06,5
2000-01-07,6
pd.read_sql
在实例代码中进行了解
query="""
create table test
(a varchar(20),b varchar(20),
c real, d integer);
"""
con=sqlite3.connect(':memory:') # 利用sqlite3 工具去连接数据。实际这应该是数据的地址。 此时临时数据库
cursor=con.execute('select * from test') #execute 执行语句,
rows=cursor.fetchall() # fetchall 拿数据
rows
DataFrame(rows,columns=zip(*cursor.description)[0]) # 列名位于游标的description 属性中,注意需要这样读取才能拿到数据
In [135]: import sqlalchemy as sqla
In [136]: db = sqla.create_engine('sqlite:///mydata.sqlite')
In [137]: pd.read_sql('select * from test', db)
Out[137]:
a b c d
0 Atlanta Georgia 1.25 6
1 Tallahassee Florida 2.60 3
2 Sacramento California 1.70 5
鸣谢与参考:
《利用python 进行数据分析》
https://blog.csdn.net/u010801439/article/details/80033341
pandas读取文件数据、存储详解笔记相关推荐
- 虚拟化磁盘模式、数据存储详解
虚拟化磁盘模式.数据存储详解 1. 配置模式 1.1. 普通 1.2. 普通延迟置零 1.3. 精简 2. 磁盘模式 2.1. 从属 2.2. 独立-持久 2.3. 独立-非持久 3. 数据存储 3. ...
- Pandas之datetime数据基础详解。
Pandas之datetime数据基础详解! 一.日期和时间数据类型 1.利用datetime模块构建时间和日期数据 2.日期和时间的结合体(datetime类型数据) 3.datetime与字符串 ...
- 一文速学-Pandas处理时间序列数据操作详解
目录 前言 一.获取时间 二.时间索引 三.时间推移 参阅 前言 一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档.而Pandas是处理这 ...
- python重要库的导入和使用_python重要第三方库pandas加载数据(详解)
Pandas数据加载 关注公众号"轻松学编程"了解更多. pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,其中read_csv和read_table这两个 ...
- Kafka数据存储详解
1.存储格式概述 每一个partion(文件夹)相当于一个巨型文件被平均分配到多个大小相等segment(段)数据文件里.但每一个段segment file消息数量不一定相等,这样的特性方便old s ...
- Volume数据存储详解
数据存储 在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁.那么容器在销毁时,保存在容器中的数据也会被清除.这种结果对用户来说,在某些情况下是不乐意看到的.为了持久化保存容器的数据,kub ...
- java 缓冲区中的数据存入缓冲区中_java8中NIO缓冲区(Buffer)的数据存储详解|chu...
java8新特性NIO缓冲区(Buffer)的数据存储. ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer, Dou ...
- python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
简介 在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd.xlwt开源包来读写exce ...
- OpenTSDB 数据存储详解
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/qayKiwk5QAIWI7-nyD3FVA 作者:DuZhimin 随着互联网.尤其是物联网 ...
最新文章
- 微信小程序导航栏设置透明
- 微服务四大网关性能对比
- 用于在公网环境下测试的Telnet/SSH服务器
- 文本编辑器Nano实用快捷键
- 睡还是被睡,这是一个问题!
- git本地ben远程分支_Git本地分支和远程分支关联
- 详解STL中的空间配置器(SGI版本)
- xpath 取标签下所有文字内容_xpath提取目录下所有标签内的内容,递归 //text()...
- OpenOffice.org 2.0已经发布了。
- 分享一个自己写的QT小游戏-玛丽奥医生
- teamviewer或向日葵远程ubuntu系统不能调节屏幕分辨率
- quartus基本操作
- Ubuntu 16.04 创建无线热点
- 示波器的带宽、带宽检定方法
- 国内有那些chia矿池,chia矿池排行那几家比较靠谱
- StringTokenizer使用讲解
- 使用 Nginx 如何部署 web 项目
- 新买的键盘部分按键不好使失灵
- 自定义 mrtg 数据
- 《TCP IP网络编程》阅读笔记及部分《图解 TCPIP》《图解 HTTP》补充笔记