数据清洗
前提:
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
1.删除整行,若行中存在任意空值:dropna
dropna()用法:
DataFrme.dropna(axis=0,how=’any’,thresh=None,subset=None,inplace=False)
参数:
axis: 默认axis=0。0为按行删除,1为按列删除
how: 默认 ‘any’。 ‘any’指带缺失值的所有行/列; 'all’指清除一整行/列都是缺失值的行/列
thresh: int,保留含有int个非nan值的行
subset: 删除特定列中包含缺失值的行或列
inplace: 默认False,即筛选后的数据存为副本,True表示直接在原数据上更改
print(Nowcoder.dropna(how = 'any'))
2.填充缺失值:fillna
Nowcoder.Language.fillna('Python')
a=Nowcoder.Graduate_year.max()
Nowcoder.Graduate_year.fillna(a)
b=Nowcoder.Achievement_value.mean()
Nowcoder.Achievement_value.fillna(b)
#请你使用当前的最大年份填充缺失的毕业年份(“Graduate_year”),用Python填充缺失的常用语言(“Language”),
#用成就值的均值(四舍五入保留整数)填充缺失的成就值(“Achievement_value”)
3.查找重复值,删去重复值:duplicated,drop_duplicated
Duplicated函数功能:查找并显示数据表中的重复值
这里需要注意的是:
当两条记录中所有的数据都相等时duplicated函数才会判断为重复值
duplicated支持从前向后(first),和从后向前(last)两种重复值查找模式
默认是从前向后进行重复值的查找和判断,也就是后面的条目在重复值判断中显示为True
链接:https://www.jianshu.com/p/23c93e0f369a
print(Nowcoder.duplicated())#返回布尔型数据,告诉重复值的位置
print(Nowcoder.drop_duplicates())#删除重复记录
Nowcoder.duplicated().sum() #说明有多少个重复值
Nowcoder.reset_index()#重置索引
4.日期一列的格式统一成yyyy-mm-dd:to_datetime
Nowcoder['Last_submission_time'] = pd.to_datetime(Nowcoder['Last_submission_time'])
Nowcoder['Last_submission_time'] = pd.to_datetime(Nowcoder['Last_submission_time']).dt.date
#to_datetime默认有时间精度,.dt.date去掉分钟,得到日期列表如:2021-12-1
5. 将用户的json文件转换为表格(dataframe)形式:
with open('Nowcoder.json', 'r') as f:
data = json.loads(f.read())
print(pd.DataFrame(data))