向阳花花花花 - 个人主页
Python 数据分析专栏 正在火热更新中
大家好!我是向阳花,是一位正在努力成长的数据小白。
本期给大家带来的是,使用 pandas 处理某瓣电影top250数据中的空数据。
知识点对应一个小案例,洗碗这种 学习+案例实践
的学习模式会对你有帮助。
首先导入必要的模块:
import numpy as np
import pandas as pd
加载数据:(数据获取链接:「movie_top_250.xlsx」)
df = pd.read_excel('../datas/pandas练习/movie_top_250.xlsx')
确定数据行列:
df.shape
接下来我们使用 count() 函数,确定哪些列有空值:
df.count()
从以上我们可以看出,有五列,评分、评价人数、国家/地区、语言、时长(分钟)这些列有空值。
也可以使用 isnull()
进一步验证,找出含有空值的列:
df.isnull().any()
发现了存在空值,我们先不着急使用 dropna()
方法删除含有空值的行,我们先看看含有空值的行具体是哪些。
data = df.isnull().any(axis=1)
data
有空值的行即为True,下面打印含有空值的行(行数过多只显示前5行):
df.loc[data].head()
下面我们统计,有多少行含有空值的行。
print(df.loc[data].shape)
也就是说,有24行有空值的行,一开始我们有262条数据,那么使用 dropna()
删除行后,应该剩下:262 - 24 = 238
条数据。
df.dropna(inplace=True)
再次查看数据行列:
df.shape
答案肯定是有的。
有时候只是缺失了一行中的某一个,我们希望保留这行数据,使用填充的方式补充空值
。
使用 #
号填充所有 NaN
。
df.fillna(value='#')
向上填充:
df.fillna(method='ffill',axis=0)
向下填充:
df.fillna(method='bfill',axis=0)
df.fillna(df.mean())
df.fillna(df.interpolate())
df.shape
df.info()
df.describe()
df.count()
df.isnull().any()
df.notnull().all()
data = df.isnull().any(axis=1)
df.loc[data].head()
高亮显示 NaN:
df.loc[data].style.highlight_null(null_color='skyblue')
df.dropna(inplace=True)
如果文中有些地方不清楚的话,欢迎联系我,我会给大家提供思路及解答。