Pandas导出和读取数据

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

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

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

 

import pandas as pd
df = pd.DataFrame({'text':[str1,str2],'label':[1,0]})    
#构建数据框,分别将文本和正负情感放在text和label中,这里1是正面,0是负面
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:制表符分隔数据文本文件。

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

 

#pip install jieba
import jieba

#结合jieba包,定义一个中文分词函数,去掉中文中的制表符和换行符
def cleancut(s):
    s=s.replace('\t','')
    s=s.replace('\n','')
    return list(jieba.cut(s))


#生成一个新的数据框df_list,复制原来的df
df_list=df.copy()

#把分词结果存储到新的数据框df_list的text中
df_list.text=df.text.apply(cleancut)
df_list    #查看分词后的结果
textlabel
0[这, 是, 个, 好, 电影, ,, 我, 喜欢, !]1
1[这部, 剧, 的, 第八, 季, 糟透了, !]0

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

df_list.text.iloc[0][0] #读取列表中的第一个元素
'这'
df_list.to_csv('data_list.csv',index=None,encoding='utf-8-sig') #从Python导出到本地CSV中
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文件时,分词列表会被视为字符串。

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

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

第二种:

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

df_list.to_pickle('data.pickle')  #从Python导出到本地pickle中
df_list_loaded=pd.read_pickle('data.pickle')  #Python读取pickle文件

df_list_loaded #显示结果
textlabel
0[这, 是, 个, 好, 电影, ,, 我, 喜欢, !]1
1[这部, 剧, 的, 第八, 季, 糟透了, !]0

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

第三种:

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

df_list.to_json('data.json',orient="records",lines=True)
#orient="records"每一行数据单独以字典形式输出
#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}

 

df_list_loaded_json=pd.read_json("data.json",orient="records",lines=True)
df_list_loaded_json
textlabel
0[这, 是, 个, 好, 电影, ,, 我, 喜欢, !]1
1[这部, 剧, 的, 第八, 季, 糟透了, !]0
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用pandas从MySQL数据库读取数据导出到Excel的步骤: 1. 首先,确保已经安装了必要的依赖包,包括PyMySQL、pandas、sqlalchemy和openpyxl。可以使用以下命令进行安装: ```shell pip install PyMySQL pandas sqlalchemy openpyxl ``` 2. 导入所需的库: ```python import pandas as pd from sqlalchemy import create_engine ``` 3. 创建与MySQL数据库的连接: ```python # 创建数据库连接 engine = create_engine('mysql+pymysql://username:password@host:port/database_name') ``` 请将`username`、`password`、`host`、`port`和`database_name`替换为实际的数据库连接信息。 4. 使用pandas的`read_sql_query`函数从数据库中读取数据: ```python # 读取数据 query = 'SELECT * FROM table_name' df = pd.read_sql_query(query, engine) ``` 请将`table_name`替换为实际的表名。 5. 对数据进行必要的处理和转换。 6. 使用pandas的`to_excel`函数将数据导出到Excel文件: ```python # 导出数据到Excel df.to_excel('output.xlsx', index=False) ``` 请将`output.xlsx`替换为实际的输出文件名。 以下是一个完整的示例代码: ```python import pandas as pd from sqlalchemy import create_engine # 创建数据库连接 engine = create_engine('mysql+pymysql://username:password@host:port/database_name') # 读取数据 query = 'SELECT * FROM table_name' df = pd.read_sql_query(query, engine) # 对数据进行必要的处理和转换 # 导出数据到Excel df.to_excel('output.xlsx', index=False) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值