Pandas读取与导出Excel、CSV文件 – 标点符

您所在的位置:网站首页 将csv导入excel Pandas读取与导出Excel、CSV文件 – 标点符

Pandas读取与导出Excel、CSV文件 – 标点符

2023-08-14 04:56| 来源: 网络整理| 查看: 265

数据, 术→技巧

Pandas读取与导出Excel、CSV文件 钱魏Way · 2020-10-08 · 15,988 次浏览

在使用Pandas处理数据时,常见的读取数据的方式时从Excel或CSV文件中获取,另外有时也会需要将处理完的数据输出为Excel或CSV文件。今天就一起来学习下Pandas常见的文件读取与导出的方法。

目录

加载Excel文件

在Pandas中,Excel文件读取方法是:pd.read_excel()。具体可传参数为:

pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

其中:

io:excel文件,可以是文件路径、文件网址、file-like对象、xlrd workbook sheetname:返回指定的sheet,参数可以是字符串(sheet名)、整型(sheet索引)、list(元素为字符串和整型,返回字典{‘key’:’sheet’})、none(返回字典,全部sheet) header:指定数据表的表头,参数可以是int、list of ints,即为索引行数为表头 names:返回指定name的列,参数为array-like对象。 index_col:设定索引的列,参数可以是int、list of ints usecol:设定需要解析的列,默认为None,代表解析素有,如果直传一个int,代表解析到最后的那个列,如果传的是list则返回的是限定的列,比如:“A:E”或“A,C,E:F” squeeze:如果解析的数据只包含一列数据,则返回一个Series,默认返回为DataFrame dtype:可以制定每列的类型,示例:{‘a’: np.float64, ‘b’: np.int32} engine:如果 io 不是缓冲区或路径,则必须设置 io。 可接受的值是 None 或 xlrd converters:自定形式,设定对应的列要用的转换函数。 true_values:设定安歇为True值,不常用 false_values:设定哪些为False值,不常用 shiprows:需要跳过的行,list-like类型 nrows:要分析的行数 na_values:N/A值列表 parse_dates:传入的是list,将指定的类解析为date格式 date_parser:指定将输入的字符串转换为可变的时间数据。Pandas默认的数据读取格式是‘YYYY-MM-DD HH:MM:SS’。如需要读取的数据没有默认的格式,就要人工定义。 thousands:千位分格数字的解析 comment:设定注释标识,在注释内的内容不解析 skipfooter:跳过末尾行 convert_float:将小数位为0的float类型转为int **kwds:不清楚

该函数返回pandas中的DataFrame或dict of DataFrame对象,利用DataFrame的相关操作即可读取相应的数据。

import pandas as pd excel_path = 'example.xlsx' df = pd.read_excel(excel_path, sheetname=None) print(df['sheet1'].example_column_name)

该函数主要的参数为io、sheetname、header、names、encoding。encoding在上面的参数说明中没有介绍到,其主要功能是指定用何种编码(codecs 包中的标准字符集)读取数据。

例如读取文件时报如下错误:

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x84 in position 36: invalid start byte

解决办法为设置encoding=”utf_8_sig” 或 encoding=”cp500″ 或 encoding=”gbk”,需要自行进行尝试。

加载CSV文件

在Pandas中,Excel文件读取方法是:pd.read_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=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

与read_excel不同的参数有:

filepath_or_buffer:这里可以接受一个文件名,或者一个URL,也可以接受一个打开的文件句柄,或者其他任何提供了read方法的对象。 sep和delimiter:这两个参数是一个意思,delimiter是sep的别名;如果指定为\t(制表符)的话,就可以实现read_table的默认功能;支持使用正则表达式来匹配某些不标准的CSV文件 mangle_dupe_cols:将冲虚的列X,指定为1,X.2,… skipinitialspace:在分隔符后跳过空格。 keep_default_na:在解析数据时是否要包含默认的 NaN 值。 na_filter:检测丢失的值标记(空字符串和 na 值的值)。 在没有 NAs 的数据中,通过过滤器 False 可以提高读取大文件的性能 verbose:指示放置在非数字列中的 NA 值的数目 skip_blank_lines:如果是真的,跳过空白行,而不是将其解释为 NaN 值。 infer_datetime_format:如果启用 True 和 parse_dates,Pandas将尝试推断列中的差异的时间字符串的格式,如果可以推断出来,则切换到更快的分析方法。 在某些情况下,这可以使解析速度提高5-10倍。 keep_date_col:解析出日期序列后,是否保留原来的列 dayfirst:日期格式,DD/MM哪个在前 iterator:返回 TextFileReader 对象用于迭代或 get chunk ()。 chunksize:返回 TextFileReader 对象进行迭代。 有关iterator和chunksize的更多信息,请参见 IO 工具文档。 compression:用于磁盘数据的实时解压 decimal:识别有小数点的字符 lineterminator:字符将文件分隔程行,只有C解析器才有效 quotechar:用于表示引用项的开始和结束的字符。 引用的项可以包括分隔符,它将被忽略。 quoting:控制字段引用行为 escapechar:跳过的字符? dialect:如果提供了这个参数,这个参数将覆盖以下参数的值(默认或不是) : 分隔符、双引号、 escapechar、 skipinitialspace、 quotechar 和引号。 如果需要重写值,将发布一个 ParserWarning。 详情请参阅 csv 方言文档。 tupleize_cols:在列上留下一个元组列表(默认情况是在列上转换为多索引) error_bad_lines:有太多字段的行(例如 csv 行,有太多逗号)将默认引发异常,并且不会返回 DataFrame。 如果错误,那么这些”bad lines”将从返回的 DataFrame 中删除。 warn_bad_lines:如果错误错误行为是 False,并警告错误行是 True,那么对于每个”坏行”的警告将是输出。 doublequote:指定 quotechar 时,引用不是QUOTE_NONE,指示是否将两个连续的 quotechar 元素解释为一个单独的 quotechar 元素。 delim_whitespace:设定是否使用空白做字段区隔 low_memory:内部处理文件的块,导致较低的内存使用同时分析,但可能混合类型推理。 为了确保没有混合类型设置 False,或指定具有 dtype 参数的类型。 请注意,整个文件被读入一个单一的 DataFrame,使用 chunksize 或 iterator 参数将数据以块的形式返回。 (只有 c 解析器有效) memory_map:如果为文件或缓冲区提供一个文件程序,将文件对象直接映射到内存中,并直接从内存访问数据。 使用此选项可以提高性能,因为不再有任何 i / o 开销。 float_precision:指定 c 引擎应用于浮点值的转换器。

加载CSV文件的方法同加载Excel类似。但是从性能上导入csv要比导入Excel快很多,收益推荐使用csv导入。但是如果 导入的csv的格式存在一些问题,则可能出现错行的问题。

另外,除了导入CSV、Excel外,Pandas还支持如下方式导入:

read_sql(query, connection_object):从SQL表/库导入数据 read_json(json_string):从JSON格式的字符串导入数据 DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据 read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格 read_clipboard():从你的粘贴板获取内容,并传给read_table() read_table(filename):从限定分隔符的文本文件导入数据

这里有必要重点学习的是pd.read_sql(query, connection_object),规划将在后面的学习中分享。

导出到Excel文件

导出到Excel的方法非常的简单:

import pandas as pd excel_path = 'example.xlsx' df = pd.read_excel(excel_path, sheetname=None) df.to_excel('output.xlsx')

具体导出方法还有众多参数:

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, freeze_panes=None)

参数含义为:

excel_writer:写入的目标excel文件,可以是文件路径、ExcelWriter对象; sheet_name:被写入的sheet名称,string类型,默认为’sheet1′; na_rep:缺失值表示,string类型; float_format:浮点数的格式 columns:要写入的列 header:是否写表头信息,布尔或list of string类型,默认为True; index:是否写行号,布尔类型,默认为True; index_label:索引标签 startrow:开始行,其余会被舍弃 startcol:开始列,其余会被舍弃 engine:写入的引擎,可以是:excel.xlsx.writer, io.excel.xls.writer, io.excel.xlsm.writer merge_cells:合并单元格配置 encoding:指定写入编码,string类型。 inf_rep:指定数学符号无穷在Excel的表示 verbose:未知 freeze_panes:冻结窗格 导出到CSV文件

导出方法同Excel类型,具体方法参数为:

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='.')

具体参数含义为(与“导入CSV文件”、“导出为Excel文件”重复的内容不再单独说明):

path_or_buf:写入的文件名或文件路径 mode:写入文件的模式,默认为w,改为a为追加。 date_format:时间格式设定

Pandas还支持的导出方式有:

to_sql(table_name, connection_object):导出数据到SQL表 to_json(filename):以Json格式导出数据到文本文件

df.to_sql将在后面的学习中再做分享。

相关文章: 机器学习算法之XGBoost 数据可视化之箱形图 腾讯AI Lab中文词向量数据使用 机器学习算法之决策树分类 Matplotlib 点、线形状及颜色 csv Excel pandas


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3