0%

python-pandas-数据读写

python-pandas-数据读写

pandas提供的专门的工具:I/O API函数

分为两个大类:读取函数和写入函数

image-20220916160744192

image-20220916160758842

1.CSV和文本文件

CSV文件:文件的每一行的多个元素用逗号隔开

  1. 读取CSV或文本文件数据

    读取CSV文件内容,使用read_csv()函数,同时会将读取的内容转化为DataFrame对象。CSV文件被视作文本文件,还可以使用read_table()函数,但是得指定分隔符。

    1
    2
    3
    4
    5
    # read_csv()
    csvframe = pd.read_csv(文件名)

    # read_table()
    csvframe = pd.read_table(文件名,分隔符)

    对于没有表头这种情况,使用header选项,将其值置为None,pandas会为其添加默认表头

    此外还可以使用names选项指定表头,直接把存有各行各列的数组赋值给它。

    1
    2
    3
    4
    # 添加默认表头
    pd.read(文件名,header=Node)
    # 指定表头
    pd.read(文件名,names=['','',''])

    更为复杂的情况,假如你想读取CSV文件,创建一个具有等级结构的DataFrame付象。为此,可以添加index_col选项,扩展read_csv()函数的功能,把所有想转换为索引的列名东赋给index_col。

    image-20220916162301653

  2. 用RegExp解析TXT文件

    image-20220916162359390

    正则表达式能兼顾两种分隔符,星号表示这些字符可能有多个。

    使用skiprows选项,可以排除多余的行,要把排除的行的行号放到数组中,赋给该选项即可。

    1
    2
    pd.read_table(文件名,sep=",",skiprows=[0,1,3,6])
    # 分隔符为",",排除第1,2,4,7行
  3. 从TXT文件读取部分数据

    处理大文件或是只对文件部分数据感兴趣时,往往需要按照部分(块)读取文件,因为只需要部分数据。这两种情况都得使用迭代。

    另外一种操作是切分想要解析的文本,然后遍历各个部分,逐一对其执行某一特定操作

  4. 往CSV文件中写入数据

    从文件读取数据很常用,把计算结果或数据结构所包含的数据写入数据文件也是常用的必要操作。

    把DataFrame中的数据写入CSV文件,用到to_csv()函数,其参数为即将生成的文件名

    1
    2
    3
    4
    5
    frame.to_csv(文件名)

    # 将DataFrame对象写入文件时,索引和列名称连同数据一起写入,使用index和header选项,把他们的值设置为False,可取消这一默认行为。
    frame.to_csv
    (文件名,index=False,header=False)

    **注意:**数据结构中的NaN写入文件后显示为空字段,但是可以用to_csv()函数中的na_rep选项把空字段替换为你需要的值。

    1
    frame.to_csv(文件名,na_rep='NaN')

2.读写Excel文件

读写Excel的函数:

  • to_excel()
  • read_excel()

read_excel()函数能够读取Excel 2003 ( .xls )和Excel 2007 ( .xlsx)两种类型的文件。该函之所以能够读取Excel,是因为它整合了xlrd模块。

读取Excel文件中的数据,并将其转化为DataFrame对象,只需要使用read_excel()函数

1
2
3
4
5
pd.read_excel(文件名)

# 用第二个参数指定工作表的名称或工作表的序号
pd.read_excel(文件名,'Sheetn')

上述操作也适用于Excel写操作

frame.to_excel(文件名)

3.JSON数据

读写JSON的函数:

  • to_excel()
  • read_excel()

当json文件中的数据通常不是列表形式,此时需要将字典结构的文件转换为列表形式—(规范化),pandas库的json_normalize()函数能够将字典或列表转换为表格。

1
2
# 导入这个函数:
from pandas.io.json import json_normalize

文件结构不是列表形式而是其他复杂形式时无法用read_json()函数处理,就需要使用json_normalize()函数

1
2
3
file= open(文件名,'r')
text = file.read()
text= json.loads(text)