本文是对 《利用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. 普通 1.2. 普通延迟置零 1.3. 精简 2. 磁盘模式 2.1. 从属 2.2. 独立-持久 2.3. 独立-非持久 3. 数据存储 3. ...

  2. Pandas之datetime数据基础详解。

    Pandas之datetime数据基础详解! 一.日期和时间数据类型 1.利用datetime模块构建时间和日期数据 2.日期和时间的结合体(datetime类型数据) 3.datetime与字符串 ...

  3. 一文速学-Pandas处理时间序列数据操作详解

    目录 前言 一.获取时间 二.时间索引 三.时间推移 参阅 前言 一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档.而Pandas是处理这 ...

  4. python重要库的导入和使用_python重要第三方库pandas加载数据(详解)

    Pandas数据加载 关注公众号"轻松学编程"了解更多. pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,其中read_csv和read_table这两个 ...

  5. Kafka数据存储详解

    1.存储格式概述 每一个partion(文件夹)相当于一个巨型文件被平均分配到多个大小相等segment(段)数据文件里.但每一个段segment file消息数量不一定相等,这样的特性方便old s ...

  6. Volume数据存储详解

    数据存储 在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁.那么容器在销毁时,保存在容器中的数据也会被清除.这种结果对用户来说,在某些情况下是不乐意看到的.为了持久化保存容器的数据,kub ...

  7. java 缓冲区中的数据存入缓冲区中_java8中NIO缓冲区(Buffer)的数据存储详解|chu...

    java8新特性NIO缓冲区(Buffer)的数据存储. ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer, Dou ...

  8. python接口自动化(三十七)-封装与调用--读取excel 数据(详解)

    简介 在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd.xlwt开源包来读写exce ...

  9. OpenTSDB 数据存储详解

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/qayKiwk5QAIWI7-nyD3FVA 作者:DuZhimin 随着互联网.尤其是物联网 ...

最新文章

  1. 微信小程序导航栏设置透明
  2. 微服务四大网关性能对比
  3. 用于在公网环境下测试的Telnet/SSH服务器
  4. 文本编辑器Nano实用快捷键
  5. 睡还是被睡,这是一个问题!
  6. git本地ben远程分支_Git本地分支和远程分支关联
  7. 详解STL中的空间配置器(SGI版本)
  8. xpath 取标签下所有文字内容_xpath提取目录下所有标签内的内容,递归 //text()...
  9. OpenOffice.org 2.0已经发布了。
  10. 分享一个自己写的QT小游戏-玛丽奥医生
  11. teamviewer或向日葵远程ubuntu系统不能调节屏幕分辨率
  12. quartus基本操作
  13. Ubuntu 16.04 创建无线热点
  14. 示波器的带宽、带宽检定方法
  15. 国内有那些chia矿池,chia矿池排行那几家比较靠谱
  16. StringTokenizer使用讲解
  17. 使用 Nginx 如何部署 web 项目
  18. 新买的键盘部分按键不好使失灵
  19. 自定义 mrtg 数据
  20. 《TCP IP网络编程》阅读笔记及部分《图解 TCPIP》《图解 HTTP》补充笔记

热门文章

  1. jira 饼图中文乱码 显示“口口口”
  2. Docker+Frp+NGinx+云服务器 实现HTTPS内网穿透
  3. springcloud适配mysql和oracle数据库
  4. 无法打开chm格式文件解决方法
  5. kafka segment file 解析
  6. python怎么编写口算题_来出口算题—— Python编程
  7. 【LeetCode】917. 仅仅反转字母
  8. 淡淡的感动——电影《听说》观后感
  9. VB编程:IF语句嵌套实例猜数小游戏-9
  10. 情人节,送女友一桶代码可否?