有些程序的结果经常是以json格式保存的,若需要进行数据分析,还是把数据放进DataFrame比较方便。
比如我们拿到一个Txt文档,里面写满了一行行这样的数据:
{"tCity":"苏州","tClassify":"[询价]","tCancelReason":"","tProvince":"江苏"}
{"tCity":"上海","tClassify":"[询价,试乘]","tCancelReason":"0901832","tProvince":"上海"}
{"tCity":"桂林","tClassify":"[询价,询价]","tCancelReason":"0912340","tProvince":"广西"}
分析以上数据,可知:
- 数据存储在Txt文件中,本质是字符串str
- 该字符串展示形式,形似dict类型
因此,思考采用什么方法可以将Str直接强制转化为dict类型?
经查资料,知eval()方法可以直接将str转化为dict
- pandas可以将dataframe直接写入到Excel文件中
- dataframe可以将结构统一的Dict追加到数据框新的一行
所以,我们可以通过以下代码实现数据格式的转换:
import pandas as pd
txt = pd.read_table('c:/Users/ami/Documents/WeChat Files/helloMe/Files/mq(3).txt',encoding='utf-8',header=None)
new = pd.DataFrame({},index=[0])
result = new
for key,value in txt[0].items():
new = eval(value)
result = result.append(new, ignore_index=True)
result.to_excel('c:/Users/ami/Desktop/result20180408.xlsx')
print('done!')
有几个注意点需要强调一下:
- pandas读入txt文件,使用read_table()方法
- read_table()方法,可以通过encoding参数来设置编码方式,设置encoding=’utf-8’,你就不会看到乱码
- read_table()方法,可以通过header参数来设置是否有表头
- dataframe的append()方法,可以通过ignore_index参数来设置行索引
欢迎关注微信公众号“数据分析师手记”,共同成长~