- 使用
explode()
行数对DataFrame进行炸裂,需要保证炸裂的目标列的格式
是list
- 小技巧:如果
DataFrame的某一列本该是list
,但是被当做object、str
等类型时,可以将该列当做转成str
后,在列表元素之间 使用特殊符号(该符号不能在列表中出现过,不然切割时会污染原始数据)来进行隔开
,然后使用split对该列进行切割,即可将该列转变成list格式了。
文章目录本文章拟解决问题(不是这些问题请绕路):一、笔者的遇到的困难二、操作步骤1.从数据库中读入数据读入的原始数据如图:2.将数据炸裂:将JSON列表拆分,一个JSON对象一行1). 具体的代码过程:踩坑:因为pandas读入数据,将 `JSON列表` 格式当做 `object`,所以在数据炸裂前需要先将数据格式改成 `list`。2). 数据炸裂结果,如下图所示:数据规模 从 `288 * 3` 变成 `7488 * 3`,原始数据中的JSON列表已经被拆成一个一个的JSON对象。总结本文章拟解决问题
json与dataframe的互相转换1、两类json格式(1)对象格式(2)数组对象格式2、json转dataframe2.1 对象格式json2.2 数组对象格式json3、dataframe转json3.1 df.to_json()方法3.2 to_dict()方法
1、两类json格式
(1)对象格式
{"name":"JSON","address":"北京市西城区","age":25}#JSON的对象格式的字符串
(2)数组对象格式
[{"name":"JSON","address":"北京市西
本博文借助笔者可以自己根据数据生成csv文件,重新生成一组csv文件,避免将str内复杂的列表读取成str之后难以操作的问题,本博客记录该解决方案的背景和方法。
1. 背景
在将一些数据从一个平台,换到另一个平台去处理时,使用了常用的csv文件去存储数据。
最开始时,直接将narry格式数据,用dic字典处理,暴力存储过程,产生了错误。
d = {'feature':test_fea, ...
与第三方API接口对接的时候,是经常会遇到多层嵌套的json的,而我们需要的数据可能仅仅是某几个,
或者是需要转换成二维表用来存入数据库。通常我都是用遍历来一遍一遍的for循环获取,但这样效率
差劲不说,代码还显得特别low,今天安利一个非常快捷的工具给大家---pd.json_normalize。
首先导入相关库
import pandas as pd
from pandas.io.json import json_normalize
设定一个json
df = {
"error"
json文件中的json数据不能嵌套json格式数据。
DataFrame是一个一个Row类型的RDD,df.rdd()/df.javaRdd()。
可以两种方式读取json格式的文件。
df.show()默认显示前20行数据。
DataFrame原生API可以操作DataFrame(不方便)。
经过udf返回形式数据后返回字典列数据,或者本身初始数据就是有字典列的。即将字典列中拆分成id和name列。
二、解决方案
在pyspark中,可以使用函数将DataFrame中的字典列拆分为多列:
[1] pyspark 根据字典添加多列
[2] UDF函数的使用、UDF传入多个参数、UDF传出多个参数、传入特殊数据类型
[3] 官方文档:pyspark.sql.functions.from_json
[4] SSS —— Spark Structured Streaming 之单列拆分成多列
转为数值类型还可以使用to_numeric()函数
DataFrame每一列的数据类型必须相同,当有些数据中有缺失,但不是NaN时(如missing,null等),会使整列数据变成字符串类型而不是数值型,这个时候可以使用to_numeric处理
#创造包含'missing'为缺失值的数据
tips_sub_miss = tips.head(10)
tips_sub_miss.loc
之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样:
value = data['store']['book'][0]['title']
有的甚至会比这个更长,看起来特别不舒服,而且假如原始的数据发生了一个变化,你需要针对你的代码再做一个工作量不小的适配工作,非常不方便,所以我想能否可以快速的对一串json数据取到想要的key对应的value值呢?
经过一段尝试,终于成功的解决了这个问题,其实核心思想就是将取值过程流程化,代
Pandas
**Pandas 是 Python 语言的一个扩展程序库,用于数据分析。**Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)。
Pandas 数据结构 - Se
如果你想将一个Pandas DataFrame转换成一个list类型,可以使用Pandas库中的values属性。values属性返回一个由DataFrame中的所有值组成的二维数组,我们可以使用tolist()方法将它转换成一个list类型。例如:
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
# 将DataFrame转换成list类型
data_list = df.values.tolist()
print(data_list)
输出结果为:
[[1, 'a'], [2, 'b'], [3, 'c']]
这里我们使用了DataFrame的values属性获取所有的数据值,并使用tolist()方法将其转换成list类型。