理性判断
- 一般思路
- 进一步思考
- df['B'].explode()
一般思路
tcc.info()
上述信息info显示没有缺失值 但是真实的情况还是要根据业务实际分析
tcc.isnull().sum() # 和tcc.info()
作用和tcc.info() 其实是一样的
进一步思考
在此过程中,我们需要检验是否存在采用别的值来表亓缺失值的情况。就像此前所说我们通过isnull只能检验出None(Python/原生对象)和np.Nan(numpy/pandasi在读取数据文件时文件内部缺失对象的读取后表示形式)对象。
但此外我们还需要注意数据集中是否包含采用某符号表示缺失值的情况,例如某些时候可能使用空格(其本质也是一种字符)来代替空格:
df= pd.DataFrame({'A':['Y',None,'N','N'],'B':[np.NaN,'','Y','N']})
df
df.isnull()
但根据实际情况来看,空格可能确实是代表着数据采集时数据是缺失的,因此我们仍然需要将其识别然后标记为缺失值,此时可以通过比较数据集各列的取值水平是否和既定的一致来进行检查。例如,对于上述d数据集来说,特征A和B默认情况只有Y和N两种取值,而B列由于通过空格表示了缺失值,因此用nuniquei查看数据集的话,B列将出现3种取值:
df.nunique()
| 注意,缺失值None或NaN并不是某一种取值
此时我们可以进一步查看B列每个不同取值出现的次数:
df['B'].explode().value_counts().to_dict()
{‘’: 1, ‘Y’: 1, ‘N’: 1}
df[‘B’].explode()
在 pandas
中,explode()
函数用于将 DataFrame
或 Series
中的列表、元组、集合或字典类型的元素展开成多行。如果列中的元素是列表或类似的可迭代对象,explode()
会将这些元素分解成单独的行,每个元素占据一行,从而增加行数。
例如,假设你有一个 DataFrame
df
,其中包含一个名为 ‘B’ 的列,该列包含列表:
import pandas as pd# 示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],'B': [[1, 2, 3], [4, 5], [6]]
})print("原始 DataFrame:")
print(df)
输出将是:
A B
0 1 [1, 2, 3]
1 2 [4, 5]
2 3 [6]
如果你对这个 ‘B’ 列使用 explode()
方法,每个列表中的元素将被展开成单独的行:
# 使用 explode() 展开 'B' 列
df_exploded = df['B'].explode().reset_index(drop=True)print("\n展开后的 DataFrame:")
print(df_exploded)
输出将是:
0 1
1 2
2 3
3 4
4 5
5 6
注意,explode()
默认返回的是一个 Series
,如果你想要将其转换回 DataFrame
,可以使用 reset_index(drop=True)
来重置索引并丢弃原来的索引。
explode()
方法不会修改原始的 DataFrame
,它返回一个新的 DataFrame
或 Series
。如果你想要直接在原始 DataFrame
上进行操作,可以使用 assign()
方法或者直接将结果赋值回原来的 DataFrame
。