当前位置:   article > 正文

Pandas导出和读取数据_df.textf

df.textf

摘要:介绍pandas相关的3种主要数据格式:CSV/TSV格式,pickle格式,JSON格式。

首先,存取分析后的数据。

  1. #先看下例,两句构成情感文本
  2. str1="这是个好电影,\n我喜欢!"
  3. str2="这部剧的\t第八季\t糟透了!"
  4. #\n是换行符,\t是制表符,这里是Tab键缩进的作用
  5. print(str1)
  6. print(str2)
'
运行
这是个好电影,
我喜欢!
这部剧的	第八季	糟透了!

 

  1. import pandas as pd
  2. df = pd.DataFrame({'text':[str1,str2],'label':[1,0]})
  3. #构建数据框,分别将文本和正负情感放在text和label中,这里1是正面,0是负面
  4. df
textlabel
0这是个好电影,\n我喜欢!1
1这部剧的\t第八季\t糟透了!0

 下面分别学习三种格式的导出。

第一种:

(1)CSV:逗号分隔数据文本文件。

df.to_csv('data.csv',index=None,encoding='utf-8-sig')    #加了编码以防Excel打开乱码
pd.read_csv('data.csv')
textlabel
0这是个好电影,\n我喜欢!1
1这部剧的\t第八季\t糟透了!0

 (2)TSV:制表符分隔数据文本文件。

  1. df.to_csv('data.csv',index=None,sep='\t',encoding='utf-8-sig')
  2. pd.read_csv('data.csv',sep='\t') #加入分隔符sep='\t'
textlabel
0这是个好电影,\n我喜欢!1
1这部剧的\t第八季\t糟透了!0

 

  1. #pip install jieba
  2. import jieba
  3. #结合jieba包,定义一个中文分词函数,去掉中文中的制表符和换行符
  4. def cleancut(s):
  5. s=s.replace('\t','')
  6. s=s.replace('\n','')
  7. return list(jieba.cut(s))
  8. #生成一个新的数据框df_list,复制原来的df
  9. df_list=df.copy()
  10. #把分词结果存储到新的数据框df_list的text中
  11. df_list.text=df.text.apply(cleancut)
  12. df_list #查看分词后的结果
textlabel
0[这, 是, 个, 好, 电影, ,, 我, 喜欢, !]1
1[这部, 剧, 的, 第八, 季, 糟透了, !]0

text中存储的是列表。注意上图是导入CSV内之前的形式。

df_list.text.iloc[0][0] #读取列表中的第一个元素
'这'
  1. df_list.to_csv('data_list.csv',index=None,encoding='utf-8-sig') #从Python导出到本地CSV中
  2. pd.read_csv('data_list.csv')#Python读取CSV文件
textlabel
0['这', '是', '个', '好', '电影', ',', '我', '喜欢', '!']1
1['这部', '剧', '的', '第八', '季', '糟透了', '!']0

 注意上图是从CSV导入到Python后的形式,和导入前相比,每个列表元素多了一对单引号。

pd.read_csv('data_list.csv').text.iloc[0][0]
'['
pd.read_csv('data_list.csv').text.iloc[0][1]
"'"
pd.read_csv('data_list.csv').text.iloc[0][2]
'这'

上面三个输出结果表明,Python导出CSV文件时,分词列表会被视为字符串。

  1. df_list.to_csv('data_list.tsv',index=None,sep='\t',encoding='utf-8-sig') #从Python导出到本地TSV中
  2. pd.read_csv('data_list.tsv',sep='\t')#Python读取TSV文件
textlabel
0['这', '是', '个', '好', '电影', ',', '我', '喜欢', '!']1
1['这部', '剧', '的', '第八', '季', '糟透了', '!']0

 可以看到TSV的结果和CSV的结果是一样的。

第二种:

pickle格式:是一种二进制格式。

  1. df_list.to_pickle('data.pickle') #从Python导出到本地pickle中
  2. df_list_loaded=pd.read_pickle('data.pickle') #Python读取pickle文件
  3. df_list_loaded #显示结果
textlabel
0[这, 是, 个, 好, 电影, ,, 我, 喜欢, !]1
1[这部, 剧, 的, 第八, 季, 糟透了, !]0

虽然结果同CSV/TSV相比,确实读取后的结果是不包含单引号的列表,但是有的数据分析包里不含pickle格式。那么我们可以用JSON格式。

第三种:

 JSON格式:可以存储结构化数据(数据框,Excel),也可以存储非结构化数据。

  1. df_list.to_json('data.json',orient="records",lines=True)
  2. #orient="records"每一行数据单独以字典形式输出
  3. #lines=True去掉首尾的外部括号,并且每一行数据之间不加逗号

用everything软件找到本地的data.json文件并用文本编辑器如notepad打开后如下显示,这是由于汉字是Unicode存储:

{"text":["\u8fd9","\u662f","\u4e2a","\u597d","\u7535\u5f71","\uff0c","\u6211","\u559c\u6b22","\uff01"],"label":1}
{"text":["\u8fd9\u90e8","\u5267","\u7684","\u7b2c\u516b","\u5b63","\u7cdf\u900f\u4e86","\uff01"],"label":0}

 

  1. df_list_loaded_json=pd.read_json("data.json",orient="records",lines=True)
  2. df_list_loaded_json
textlabel
0[这, 是, 个, 好, 电影, ,, 我, 喜欢, !]1
1[这部, 剧, 的, 第八, 季, 糟透了, !]0
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/937799
推荐阅读
相关标签
  

闽ICP备14008679号