• Pandas---12.数据加载和保存


    一、文本文件

    1.pandas.read_csv()

    可以读取文本文件(.csv 格式):

    pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer',
      names=None, index_col=None, usecols=None, squeeze=False, prefix=None, 
      mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None,
      false_values=None, skipinitialspace=False,skiprows=None, nrows=None,na_values=None,
      keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, 
      parse_dates=False, infer_datetime_format=False,keep_date_col=False,date_parser=None,
      dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, 
      decimal='.', lineterminator=None, quotechar='"', quoting=0, escapechar=None,
      comment=None, encoding=None, dialect=None, tupleize_cols=False, 
      error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, 
      doublequote=True, delim_whitespace=False, as_recarray=False,
      compact_ints=False, use_unsigned=False, low_memory=True, 
      buffer_lines=None, memory_map=False, float_precision=None)

    参数:

    1. filepath_or_buffer:一个字符串,或者一个pathlib.Path对象,或者任何拥有.read()方法的对象。它指定了被解析的文件的位置。如果是个字符串,则必须是个URL(其中包含了协议名,如http//,ftp//,file//等)

    2. sep:一个字符串,指定了分隔符。默认为','。如果设定为None,则自动决议分隔符。

      1. 如果字符串长度大于1,则自动解析为正则表达式。如's+解析为空白符
    3. delimiter:一个字符串,指定了分隔符。它是sep参数的另一个候选参数

    4. delim_whitespace:一个布尔值。如果为True,则将空白符(连续的空白或者单个空白)作为分隔符。此时不需要提供delimiter参数。它等价于sep='s+'

    5. header:一个整数或者整数列表。它指定了那些行是标题行,0表示第一行。如果你指定了header=[1,3,5],则第三行(行id=2)和第五行(行id=4)被忽略(不被解析)。

      1. 如果names参数为空,则header默认值为 0.如果names参数提供了,则header默认值为None
      2. 该参数会忽略注释行
      3. 如果`skip_blank_lines=True`,则该参数会忽略空白行。因此`header=0`表示第一个有效的数据行
    6. names:一个array-like。它给出了列名。

      1. 如果文件不包含标题行,则你需要显式通过names传入列名
      2. 如果mangle_dupe_cols=True,则可以传入重复的列名。否则不允许重复列名
    7. index_col:一个整数,或者序列,或者False。它指定哪一列作为row labels。如果你指定了一个序列,则使用MultiIndex。如果为False,则不采用任何列作为row labels

    8. usecols:一个array-like。它指定:你将采用哪些列来组装DataFrame。该参数各元素必须要么是代表位置的整数,要么是代表列名的字符串

    9. as_recarray:一个布尔值。被废弃的参数。

    10. squeeze:一个布尔值。如果为True,则当解析结果只有一列数据时,返回一个Series而不是DataFrame

    11. prefix:一个字符串。当没有标题时,你可以提供这个参数来给列名加一个前缀。(如果不加前缀,则列名就是0,1,2...

    12. mangle_dupe_cols:一个布尔值。如果为True,则重复的列名X,X...被修改为X.0,X.1,...。如果为False,则重复的列名这样处理:后面的覆盖前面的

    13. dtype:一个Type name或者字典:column->type。它可以给出每个列的类型。

    14. engine:一个字符串,指定用什么解析引擎。可以为'c'/'python'c更快,但是python拥有更多特性

    15. converters:一个字典,给出了每一列的转换函数。字典的键为代表列的位置的整数,或者代表列的名字的字符串。字典的值为可调用对象,参数为一个标量(就是每个元素值)

    16. true_values:一个列表,给出了哪些值被认为是True

    17. false_values:一个列表,给出了哪些值被认为是False

    18. skipinitialspace:一个布尔值。如果为True,则跳过分隔符之后的空白符

    19. skiprows:一个array-like或者整数。如果为序列,则指定跳过哪些行(从0计数);如果为整数,则指定跳过文件开头的多少行。注意:空行和注释行也包括在内,这一点和header不同。

    20. skipfooter:一个整数。指定跳过文件结尾的多少行。不支持engine='c'

    21. skip_footer:被废弃的参数

    22. nrows:一个整数。指定读取多少行。

    23. na_values:一个标量、字符串、字典、列表。指定哪些被识别为NAN。默认的NAN为列表['nan','NAN','NULL'....]

    24. keep_default_na:一个布尔值。如果为True,则当你指定了na_values时,默认的NAN被追加到na_values上;否则指定的na_values代替了默认的NAN

    25. na_filter:一个布尔值。如果为True,则不检查NaN,此时解析速度大大加快(但是要求你的数据确实没有NAN

    26. verbose:一个布尔值。如果为True,输出解析日志

    27. skip_blank_lines:一个布尔值。如果为True,则跳过空白行,而不是解析为NaN

    28. parse_dates:一个布尔值、整数列表、标签列表、或者list of list or dict。对于iso8601格式的日期字符串,解析速度很快。

      1. 如果为布尔值:如果为True,则解析index为日期
      2. 如果为整数列表或者标签列表,则解析对应的列为日期
      3. 如果列表的列表,如[[1,3]],则将列1和列3组合在一起,解析成一个单独的日期列
      4. 如果为字典,如{'aaa':[1,3]},则将列1和列3组合在一起,解析成一个单独的日期列,日期列的名字为'aaa'
    29. infer_datetime_format:一个布尔值。如果为True,且parse_dates非空,则pandas试图从数据中推断日期格式。

    30. keep_date_col:一个布尔值。如果为True,并且parse_dates使用多个列合成一列日期,则保留原有的列

    31. date_parser:一个函数对象。它将一列字符串转换成一列日期。

    32. dayfirse:一个字符串。如果为True,则日期格式为DD/MM

    33. iterator:一个布尔值。如果为True,则返回一个TextFileReader对象,该对象可以用于迭代或者.get_chunk()来返回数据块

    34. chunksize:一个整数。指定TextFileReader对象.get_chunk()返回的数据块的大小。

    35. compression:一个字符串。可以为'infer','gzip','bz2','zip','xz',None。如果文件为压缩文件,则它用于指定解压格式

    36. thousands:一个字符串。指定了数值中千位数的分隔符,如999,999,999

    37. decimal:一个字符串,指定了小数点的分隔符,如9.999

    38. float_precision:一个字符串。指定了C engine的转换浮点数的精度。None普通转换,'high'为高精度转换,'round_trip'round_trip转换。

    39. lineterminator:一个长度为1的字符串。指定了C engine中的换行符

    40. quotechar:一个长度为1的字符串,它指定了引用字符。比如"aaa,bbb",这种数据是引用数据。如果你用,分隔,则有问题。在引用字符包围的数据中,不考虑分隔符。

    41. comment:一个长度为1的字符串,指定了注释字符。如果该字符串出现在行中,则行末的字符不被解析。如果该字符串出现在行首,则本行不被就解析。

    42. encoding:一个字符串,指定了编码类型

    43. error_bad_lines:一个布尔值。如果为True,则如果某一行有太多字段,则函数抛出异常。如果为False,则抛弃该行,顺利解析。只用于C engine

    44. warn_bad_lines:一个布尔值。如果为True,且error_bad_lines=False,则对于异常的行,输出警告

    45. buffer_lines/compact_ints /use_unsigned:被废弃的参数

    46. memory_map:如果为True,且filepath是一个文件名,则使用内存映射,将文件映射到内存中。

    2.pandas.read_table()

    read_table也能完成read_csv的功能。二者接口一致。

    pandas.read_table(filepath_or_buffer, sep='	', delimiter=None, header='infer', 
      names=None, index_col=None, usecols=None, squeeze=False, prefix=None, 
      mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None,
      false_values=None, skipinitialspace=False,skiprows=None, nrows=None, na_values=None,
      keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True,
      parse_dates=False,infer_datetime_format=False,keep_date_col=False, date_parser=None,
      dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None,
      decimal='.', lineterminator=None, quotechar='"', quoting=0, escapechar=None,
      comment=None, encoding=None, dialect=None, tupleize_cols=False, 
      error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0,
      doublequote=True, delim_whitespace=False, as_recarray=False,
      compact_ints=False, use_unsigned=False, low_memory=True,
      buffer_lines=None, memory_map=False, float_precision=None) 

    3.Series/DataFrame.to_csv()

    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='
    ', chunksize=None, tupleize_cols=False, date_format=None, 
      doublequote=True, escapechar=None, decimal='.')
      Series.to_csv(path=None, index=True, sep=', ', na_rep='', float_format=None, 
      header=False, index_label=None, mode='w', encoding=None, date_format=None, 
      decimal='.') 

    参数:

    1. path_or_buf:一个字符串或者file对象。指定写入的文件。如果为空,则返回一个字符串而不是写入文件
    2. sep:一个字符串,指定字段的分隔符
    3. na_rep:一个字符串,指定NaN的代表字符串
    4. float_format:一个字符串,指定了浮点数的格式化字符串
    5. columns:一个序列,指定要写入哪些列
    6. header:一个布尔值或者字符串列表。如果为True,则写出列名。如果为字符串列表,则它直接指定了列名的别名
    7. index:一个布尔值。如果为True,则输出index label
    8. mode:一个字符串,文件操作的读写模式。默认为'w'
    9. encoding:一个字符串,指定编码方式
    10. compression:一个字符串,指定压缩格式
    11. line_terminator:一个字符串,指定换行符
    12. chunksize:一个整数,指定了一次写入多少行
    13. date_format:一个字符串,给出了日期格式化字符串
    14. decimal:一个字符串,给出了小数点的格式
    15. tupleize_cols:一个布尔值。如果为True,则MultiIndex被写成list of tuples

    二、Json

    1.pandas.read_json()

    读取Json文件

    pandas.read_json(path_or_buf=None, orient=None, typ='frame', dtype=True, 
      convert_axes=True, convert_dates=True, keep_default_dates=True, numpy=False,
      precise_float=False, date_unit=None, encoding=None, lines=False)
    

    参数: 

    1. path_or_buf:一个字符串或者一个file-like对象。如果是个字符串,则必须是个URL(其中包含了协议名,如http//,ftp//,file//等)
    2. orient:一个字符串,指定了期望的JSON格式。可选的格式有(参考to_json的实例):
    3. 'split'JSON是个类似字典的格式:{index -> [index], columns -> [columns], data -> [values]}
    4. 'records'JSON 是个类似列表的格式:[{column -> value}, ... , {column -> value}]
    5. 'index'JSON是个类似字典的格式{index -> {column -> value}}
    6. 'columns'JSON 是个类似字典的格式{column -> {index -> value}}
    7. 'values'JSON就是值的序列

      注意:如果type=='series',则允许的'orients= {'split','records','index'},默认为'index',且如果为'index',则要求索引为唯一的。如果type=='frame',则允许上所有的格式,默认为'columns',且如果为'index'/'columns',则要求DataFrame.index为唯一的;如果'index'/'columns'/'records',则要求DataFrame.columns为唯一的

    1. type:一个字符串,指定将JSON转换为Series/DataFrame那一种。可以为'series','frame'
    2. dtype:一个布尔值或者字典。如果为True,则自动推断数值类型。如果为False,则不推断类型。如果为字典,则给出了每一列的数值类型
    3. convert_axes:一个布尔值,如果为True,则试图转换到合适的数值类型
    4. convert_dates:一个布尔值,如果为True,则试图转换日期列为日期。它转换下面这些列名的列:列名以'_at'/'_time'结束、列名以'timestamp'开始、列名为'mofified'/'date'
    5. keep_default_dates:一个布尔值。如果为True,则当转换日期列时,保留原列
    6. numpy:一个布尔值,如果为True,则直接转换为ndarray
    7. precise_float:一个布尔值,如果为True,则使用解析为更高精度的浮点数
    8. date_unit:一个字符串。用于转换时间戳到日期。它提供时间戳的单位,如's'/'ms'
    9. lines:一个布尔值。如果为True,则读取文件的每一行作为一个JSON -encoding:一个字符串,指定编码方式

    2.pandas.to_json()

    Series/DataFrame.to_json(path_or_buf=None, orient=None, date_format='epoch',
      double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, 
      lines=False)
    

    参数:

    • path_or_buf:指定保存的地方。如果为None,则该函数返回一个StringIO对象
    • orient参数:参考read_json()
    • date_format:一个字符串,指定日期转换格式。可以为'epoch'(从1970-1-1日以来的毫秒数)、'iso'
    • double_precision:一个整数,指定了浮点数的精度
    • force_ascii:一个布尔值,如果为True,则将encoded string转换成ASCII
    • date_unit:一个字符串,参考read_json
    • default_handler:一个可调用对象。用于处理当对象无法转换成JSON的情况。它只有一个参数,就是被转换的对象
    • lines:一个布尔值。如果orient='records'时,输出换行符。对其他格式则抛出异常

    三、二进制文件

    1.pandas.read_pickle(path)

    可以从pickle文件中读取数据,pathpickle文件的文件名。

    2.Series/DataFrame.to_pickle(path)

    Series/DataFrame保存到pickle文件中,pathpickle文件的文件名。

    四、Excel 文件

    1.pandas.read_excel()

    读取Excel文件。需要用到第三方包xlrd/xlwt,前者读excel,后者写excel

    pandas.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0,
      index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None,
      na_values=None, thousands=None, convert_float=True, has_index_names=None,
      converters=None, true_values=None, false_values=None, engine=None, 
      squeeze=False, **kwds)
    

    参数:

    1. io:一个字符串,或者file-like对象。如果是个字符串,则必须是个URL(其中包含了协议名,如http//,ftp//,file//等)
    2. sheetname:一个字符串或者整数,或者列表。它指定选取Excel文件中哪个sheet。字符串指定的是sheet名,整数指定的是sheet的位置(0为第一个sheet
    3. engine:一个字符串,指定了读写Excel的引擎。可以为:io.excel.xlsx.writerio.excel.xls.writerio.excel.xlsm.writer
    4. 其他参数参考read_csv

    2.Series/DataFrame.to_excel()

    保存DataFrameExcel文件

    DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', 
      float_format=None, columns=None, header=True, index=True, index_label=None, 
      startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, 
      inf_rep='inf', verbose=True)
    

    参数:

    1. excel_writer:一个字符串(文件名)或者一个ExcelWriter对象
    2. sheet_name:一个字符串,指定sheet
    3. na_rep:一个字符串,代表NaN
    4. startrow/startcol:指定了左上角的单元格的位置
    5. engine:一个字符串,指定了读写Excel的引擎。可以为:io.excel.xlsx.writerio.excel.xls.writerio.excel.xlsm.writer
    6. merge_cells:一个布尔值。如果为True,则多级索引中,某些索引会合并单元格
    7. inf_rep:一个字符串,只代表无穷大。

    五、HTML表格

    1.pandas.read_html()

    read_html可以将HTML中的<table></table>解析为一个DataFrame列表。

    pandas.read_html(io, match='.+', flavor=None, header=None, index_col=None, 
      skiprows=None, attrs=None, parse_dates=False, tupleize_cols=False, 
      thousands=', ', encoding=None, decimal='.', converters=None, 
      na_values=None, keep_default_na=True)
    

    参数:

    1. io:为一个字符串或者一个file-like对象。
    2. match:一个字符串或者正则表达式。HTML中的<table></table>中,只要匹配这个正则表达式的表格都被处理。默认的为匹配任何非空的表格
    3. flavor:一个字符串,指定了解析引擎。可以为'bs4'或者'html5lib'或者'lxml'
    4. attrs:一个字典。它筛选出你要解析哪些表格
    5. 其他参数参考read_csv

    2.Series/DataFrame.to_html()

    可以通过DataFrame.to_html()转换为HTML的表格

    DataFrame.to_html(buf=None, columns=None, col_space=None, header=True,
      index=True, na_rep='NaN', formatters=None, float_format=None, 
      sparsify=None, index_names=True, justify=None, bold_rows=True, 
      classes=None, escape=True, max_rows=None, max_cols=None, show_dimensions=False, 
      notebook=False, decimal='.', border=None)
    

    参数:

    1. bold_rows:一个布尔值。如果为True,则让row label加粗
    2. classes:一个字符串或者列表或者元组,给出了tablecss class
    3. escape:一个布尔值,如果为True,则将字符<>&为安全的HTML字符
    4. max_rows:一个整数,指定最大输出行数。默认显示全部的行
    5. decimal:一个字符串,指定了小数点的格式
    6. border:一个整数,给出了border属性的值。
    7. buf:指定将HTML写到哪里,它是一个StringIO-like对象
    8. col_space:一个整数,给出每一列最小宽度
    9. header:一个布尔值,如果为True,则打印列名
    10. columns:一个序列,指定要输出哪些列
    11. index:一个布尔值,如果为True,则打印index labels
    12. formatters:一个一元函数的列表,或者一元函数的字典。给出了每一列的转换成字符串的函数
    13. float_format:一个一元函数,给出了浮点数转换成字符串的函数
    14. justify:左对齐还是右对齐。可以为'left'/'right'

    六、SQL

    1.pandas.read_sql_table()

    从指定数据表中,提取你所需要的列。

    pandas.read_sql_table(table_name, con, schema=None, index_col=None,
      coerce_float=True, parse_dates=None, columns=None, chunksize=None)
    

    参数:

    1. table_name:一个字符串,指定了数据库的表名

    2. con:一个SQLAlchemy conectable或者一个database string URI,指定了连接对象它就是SQLAlchemy中的Engine对象。

    3. schema:一个字符串,给出了SQL schema(在mysql中就是database

    4. index_col:一个字符串或者字符串列表,指定哪一列或者哪些列作为index

    5. coerce_float:一个布尔值,如果为True,则试图转换结果到数值类型

    6. parse_dates:一个列表或者字典。指定如何解析日期:

      1. 列名的列表:这些列将被解析为日期
      2. 字典{col_name:format_str}:给出了那些列被解析为日期,以及解析字符串
      3. 字典{col_name:arg dict}:给出了哪些列被解析为日期,arg dict将传递给pandas.to_datetime()函数来解析日期
    7. columns:一个列表,给出了将从sql中提取哪些列

    8. chunksize:一个整数。如果给出了,则函数返回的是一个迭代器,每次迭代时,返回chunksize行的数据。

    2.pandas.read_sql_query()

    可以选择select query语句。因此你可以执行多表联合查询。

    pandas.read_sql_query(sql, con, index_col=None, coerce_float=True,
      params=None, parse_dates=None, chunksize=None)
    

    参数:

    1. sql:一个SQL查询字符串,或者SQLAlchemy Selectable对象。
    2. params:一个列表,元组或者字典。用于传递给sql查询语句。比如:sqluses %(name)s...,因此params{'name':'xxxx'}
    3. 其他参数见read_sql_table

    3.pandas.read_sql()

    read_sql是前两者的一个包装,它可以根据sql参数,自由地选择使用哪个方式。

    pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None,
      parse_dates=None, columns=None, chunksize=None)
    

    参数:

    1. sql:一个数据表名,或者查询字符串,或者SQLAlchemy Selectable对象。如果为表名,则使用read_sql_table;如果为后两者,则使用read_sql_query

    4.Series/DataFrame.to_sql()

    pandas对象的.to_sql()方法用于插入数据库。

    Series/DataFrame.to_sql(name, con, flavor=None, schema=None, if_exists='fail',
      index=True, index_label=None, chunksize=None, dtype=None)
    

    参数:

    1. name:一个字符串,指定表名
    2. con:一个SQLAlchemy conectable或者一个database string URI,指定了连接对象。它就是SQLAlchemy中的Engine对象。
    3. flavor:被废弃的参数
    4. schema:一个字符串,指定了SQL schema
    5. if_exists:一个字符串,指定当数据表已存在时如何。可以为:
    6. 'fail':什么都不做(即不存储数据)
    7. 'replace':删除数据表,创建新表,然后插入数据
    8. 'append':如果数据表不存在则创建数据表然后插入数据。入股数据表已存在,则追加数据
    9. index:一个布尔值。如果为True,则将index作为一列数据插入数据库
    10. index_labelindex的存储名。如果index=True,且index_label=None,则使用index.name
    11. chunksize:一个整数。 如果为None,则一次写入所有的记录。如果非空,则一次写入chunksize大小的记录
    12. dtype:一个字典。给出了各列的存储类型。
  • 相关阅读:
    docker部署项目,对镜像,容器的操作
    技术汇总:第十六章:关于登录与退出的token
    关于EZDML数据库表结构制作设计工具使用踩的坑
    技术汇总:第十七章:支付宝对接公钥,私钥
    集成Mybatis
    解决errorCode 0, state 08001 报错
    Spring缓存注解@Cacheable,@CachePut , @CacheEvict
    解决:Could not initialize class org.hibernate.validator.internal.engine.Configura
    @ConditionalOnMissingBean注解的作用
    解决:WARNING: An illegal reflective access operation has occurred
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/12108583.html
Copyright © 2020-2023  润新知