携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天
- DA24 去掉信息不全的用户
本题考察dropna()函数的用法; 参考代码如下:
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
print(Nowcoder.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表示直接在原数据上更改
- DA25 修补缺失的用户数据
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
Nowcoder['Graduate_year'] = Nowcoder['Graduate_year'].fillna(Nowcoder['Graduate_year'].max())
Nowcoder['Language'] = Nowcoder['Language'].fillna('Python')
Nowcoder['Achievement_value'] = Nowcoder['Achievement_value'].fillna(int(Nowcoder['Achievement_value'].mean()))
print(Nowcoder)
参考其他学习代码:
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
max_year = Nowcoder['Graduate_year'].max()
Nowcoder['Graduate_year'].fillna(value=2022,inplace=True)
Nowcoder['Language'].fillna(value='Python',inplace=True)
mean_value = round(Nowcoder['Achievement_value'].mean(),0)
Nowcoder['Achievement_value'].fillna(value=mean_value,inplace=True)
print(Nowcoder)
- DA26 解决牛客网用户重复的数据
参考代码如下:
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
pd.set_option('display.width', 1000)
pd.set_option('display.max_rows', None)
print(Nowcoder.duplicated()) #输出每一行是否有重复
print(Nowcoder.drop_duplocates()) # 输出去重后的文件的全部数据
参数
subset: 列标签
keep: {‘first’, ‘last’, False}, 默认值 ‘first’
first: 保留第一次出现的重复项。
last: 删除重复项,仅保留最后一次出现的重复项 False: 删除所有重复项
inplace:布尔值,默认为False,是否删除重复项或返回副本
- DA27 统一最后刷题日期的格式
参考格式如下:
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
pd.set_option('display.width', 1000)
pd.set_option('display.max_rows', None)
Nowcoder.Last_submission_time = pd.to_datetime(Nowcoder.Last_submission_time,format='%Y-%m-%d')
print(Nowcoder[['Nowcoder_ID','Level','Last_submission_time']])
另一种代码如下:
Nowcoder['Last_submission_time']=Nowcoder.Last_submission_time.apply(lambda x : pd.Timestamp(x))
Json处理
- DA28 将用户的json文件转换为表格形式
import pandas as pd
import json
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
with open('Nowcoder.json', 'r') as f:
data = json.loads(f.read())
print(pd.DataFrame(data))