Python疑难杂症(20)---介绍Python的pandas模块中将数据导入内存和导出数据的方法,以及一些参数的用法。

Python的pandas模块中数据框这种数据类型,可以通过文件导入函数,将磁盘上的csv、execl等类型的文件装入内存,并生成数据框的格式,以方便后续使用pandas的专有方法进行处理。

6、DataFrame数据输导入导出方法

Pandas常用的读取数据的方法函数:
  • pd.read_csv(filename)从csv文件导入数据,默认分隔符为“,"
  • pd.read_table(filename)从文本文件导入数据,默认分隔符为制表符
  • pd.read_excel(filename)从Excel文件导入数据
  • pd.read_sql(query,connection_object)从SQL表/库中导入数据
  • pd.read_json(json_string)从json文件导入数据
  • pd.read_html(url)解析url、字符串或者HTML文件,提取数据表格
  • pd.DataFrame(dict)从字典对象中读入数据

在读取的函数中都有很多参数,如函数pd.read_csv的格式如下:

pd.read_csv(filepath_or_buffer, sep=',', header='infer', names=None, index_col=None, usecols=None,  dtype=None, 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, date_parser=None,   dayfirst=False, cache_dates=True, iterator=False,   chunksize=None, compression='infer', thousands=None,    decimal='.', lineterminator=None, quotechar='"',    quoting=0, doublequote=True, escapechar=None,     comment=None, encoding=None, dialect=None,      error_bad_lines=True, warn_bad_lines=True,      delim_whitespace=False, low_memory=True,      memory_map=False, float_precision=None)

这个函数参数太多了,下面将常用的或者比较重要的参数来说明:filepath_or_buffer: 这是要读取的CSV文件的路径或者类似文件的对象,可以是本地文件,也可以是网络链接

sep: 这是指定CSV文件中每一列数据之间的分隔符,默认是逗号,但也可以是其他符号,比如制表符' '。

header: 这是指定CSV文件中哪一行作为列名,默认是infer,表示自动推断,如果没有列名,可以设置为None。

names: 这是指定列名的列表,如果header为None,那么可以用这个参数来给每一列命名。

index_col: 这是指定哪一列或者哪几列作为DataFrame的索引,默认是None,表示不使用任何列作为索引。usecols: 这是指定要读取哪些列的数据,默认是None,表示读取所有列,可以用列名或者位置来指定。

dtype: 这是指定每一列数据的类型,默认是None,表示自动推断,可以用字典来映射每一列的类型,比如{'a': int, 'b': float}。

skiprows: 这是指定要跳过哪些行不读取,默认是None,表示不跳过任何行,可以用整数或者列表来指定。

nrows: 这是指定要读取多少行的数据,默认是None,表示读取所有行,可以用整数来指定。

na_values: 这是指定哪些值要被视为缺失值,默认是None,表示只有空值被视为缺失值,可以用字符串或者列表来指定。

keep_default_na: 这是指定是否保留默认的缺失值,默认是True,表示保留,如果设置为False,表示只有na_values中指定的值才被视为缺失值。

na_filter: 这是指定是否过滤掉缺失值,默认是True,表示过滤掉,如果设置为False,表示不过滤掉。

verbose: 这是指定是否显示详细的信息,默认是False,表示不显示,如果设置为True,表示显示。

skip_blank_lines: 这是指定是否跳过空白行,默认是True,表示跳过,如果设置为False,表示不跳过。

parse_dates: 这是指定是否解析日期格式的数据,默认是False,表示不解析,如果设置为True或者列表或者字典,表示解析。

infer_datetime_format: 这是指定是否推断日期格式的数据,默认是False,表示不推断,如果设置为True,表示推断。

date_parser: 这是指定用来解析日期格式的数据的函数,默认是None,表示用内置的解析器,可以用自定义的函数来指定。

dayfirst: 这是指定日期格式中是否先写日再写月,默认是False,表示不是,如果设置为True,表示是。

cache_dates: 这是指定是否缓存日期格式的数据,默认是True,表示缓存,如果设置为False,表示不缓存。

iterator: 这是指定是否返回一个可迭代的对象,默认是False,表示不返回,如果设置为True,表示返回。

chunksize: 这是指定每次迭代返回的行数,默认是None,表示不迭代,如果设置为整数,表示每次迭代返回的行数。

compression: 这是指定CSV文件是否压缩,默认是infer,表示自动推断,可以用字符串来指定压缩方式,比如gzip或者zip。

thousands: 这是指定千位分隔符,默认是None,表示没有千位分隔符,可以用字符串来指定千位分隔符,比如','或者'.'。

decimal: 这是指定小数点符号,默认是'.',表示用点作为小数点,可以用字符串来指定小数点符号,比如','或者'.'。

lineterminator: 这是指定行终止符,默认是None,表示用操作系统默认的行终止符,可以用字符串来指定行终止符,比如' '或者' '。

quotechar: 这是指定引号字符,默认是'"',表示用双引号作为引号字符,可以用字符串来指定引号字符,比如'"'或者"'"。

quoting: 这是指定引号规则,默认是0,表示最小化引号使用,可以用整数或者csv模块中的常量来指定引号规则,比如csv.QUOTE_MINIMAL或者csv.QUOTE_ALL。

doublequote: 这是指定是否双重引号内部的引号字符,默认是True,表示双重引号内部的引号字符,如果设置为False,表示用escapechar来转义内部的引号字符。

escapechar: 这是指定转义字符,默认是None,表示没有转义字符,可以用字符串来指定转义字符,比如''或者'/'。

comment: 这是指定注释符号,默认是None,表示没有注释符号,可以用字符串来指定注释符号,比如'#'或者';'。

encoding: 这是指定CSV文件的编码方式,默认是None,表示用系统默认的编码方式,可以用字符串来指定编码方式,比如'utf-8'或者'gbk'。

dialect: 这是指定CSV文件的方言,默认是None,表示用标准的CSV方言,可以用字符串或者csv模块中的Dialect类来指定方言。

error_bad_lines: 这是指定是否报错并跳过错误格式的行,默认是True,表示报错并跳过错误格式的行。如果设置为False, 表示不报错并忽略错误格式的行。

warn_bad_lines: 这是指定是否显示错误格式的行的警告信息,默认是True, 表示显示错误格式的行的警告信息。如果设置为False, 表示不显示错误格式的行的警告信息。

delim_whitespace: 这是指定是否用空白字符作为分隔符,默认是False, 表示不用空白字符作为分隔符。如果设置为True, 表示用空白字符作为分隔符,并且忽略sep参数。

low_memory: 这是指定是否在内存中分块读取数据,默认是True, 表示在内存中分块读取数据。如果设置为False, 表示一次性读取整个文件到内存中。

memory_map: 这是指定是否使用内存映射文件来读取数据,默认是False。

其实在实际使用中大部分参数使用缺省值即可。常用的参数包括读取的文件、分隔符、文件编码(Python 中用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8)、以及行数的指定等。

读入csv文件

import os

mypath=r"D:\_____newyear_willdo\py\gp"

df=pd.read_csv(os.path.join(mypath+'\\'+'Wly_Data.csv'),encoding='utf-8') ## 数据导出为csv文件

df

输出:

用skiprows参数来跳过一些行不读取,比如第二行到第五行

df = pd.read_csv('Wly_Data.csv', sep=';', header=0, skiprows=[1, 2, 3, 4])

用nrows参数来限制读取的行数,比如只读取前100行

df = pd.read_csv('Wly_Data.csv', sep=';', header=0, nrows=100)

举例:使用read_excel()方法导入文件

    import pandas as pd

pd.read_excel('stu_data.xlsx')

导入.xlsx文件时,指定导入哪个Sheet

1. pd.read_excel('stu_data.xlsx',sheet_name='Target')

2. pd.read_excel('stu_data.xlsx',sheet_name=0)

导入.xlsx文件时,通过index_col指定行索引

pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)

导入.xlsx文件时,通过header指定列索引

pd.read_excel('stu_data.xlsx',sheet_name=0,header=1)

有时候本地文件的列数太多,而我们又不需要那么多列时,我们就 可以通过设置usecols参数来指定要导入的列。

pd.read_excel('stu_data.xlsx',usecols=[1,2,3])

常用的写入文件的方法函数:
  • pd.to_csv(filename) 导出数据至csv文件
  • pd.to_excel(filename) 导出数据至excel文件
  • pd.to_sql(table_name,connection_object) 导出数据至SQL表
  • pd.to_json(json_string) 导出数据为json格式
  • pd.to_html(url) 导出数据为html文件
  • pd.to_clipboard(filename) 导出数据到剪切板
  • 第一个参数为写入文件路径和文件名,seq参数用于设置写入文件的分隔符,header参数表示写入文件是否写入标题行,默认值为True,index参数表示是否写入行索引,默认值为True
函数to_excel参数:

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:文件路径或现有的ExcelWriter。
  • sheet_name:指的是包含DataFrame的工作表的名称。
  • na_repr:缺失数据的表示。
  • float_format:这是一个可选参数,用于格式化浮点数的字符串。
  • columns:指定要写入的列。
  • header:写出列名。如果给定字符串的列表,则假定它是列名的别名。
  • index:写入索引。
  • index_label:指定索引列的列标签。如果未指定,并且标题和索引为True,则使用索引名称。如果DataFrame使用MultiIndex,则应给出一个序列。
  • startrow:默认值为0。它指的是要将DataFrame倾倒到的左上角单元格行。
  • startcol:默认值为0。它指的是要将DataFrame倾倒到的左上角单元格列。
  • engine:这是一个可选参数,用于指定要使用的引擎,可以是openpyxl或xlsxwriter。
  • merge_cells:它返回布尔值,其默认值为True。将MultiIndex和分层行写为合并单元格。
  • encoding:这是一个可选参数,用于对生成的excel文件进行编码。仅对xlwt是必需的。
  • inf_rep:这也是一个可选参数,默认值为inf。通常表示无穷大。
  • verbose:它返回一个布尔值。默认值为True。用于在错误日志中显示更多信息。
  • freeze_panes:这也是一个可选参数,用于指定要冻结的基于一的最底行和最右列。

其实在这里面常用的参数就几个,其他可以使用缺省值

df.to_csv(

filepath_or_buffer :要保存的文件路径

      sep =:分隔符

columns :需要导出的变量列表

header = True :指定导出数据的新变量名,可直接  提供 list

      index = True :是否导出索引

      mode = 'w' : Python 写模式,读写方式:r,r+ ,   w , w+ , a , a+   

 encoding = 'utf-8' :默认.     导出的文件编码格式

      )

举例:输出文件

wly_df为五粮液的股票价格和涨跌情况。

wly_df.to_excel('out_wly.xlsx', index=False)

本章节主要介绍了多种数据文件装入内容成为数据框dataFrame的方法,供查询参考,重点介绍了读入csv文件的函数pd.read_csv()的使用和各种参数的含义,以及输出函数pd.to_excel()的使用方法和参数含义,同时通过五粮液股票信息数据作为例子,导入和导出,更便于理解。

码字不易,欢迎关注、点赞和收藏。如果文章能给你带来知识很力量,欢迎留言和讨论。你的支持是我前进的动力。

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值