管理网站建设公司好吗,做网站需要了解什么软件,做网站服务器装虚拟机,微信小程序定制开发需要多少钱最近一直在做数据处理相关的工作#xff0c;有几点经常遇到的情况总结如下#xff1a;
数据中存在为空数据如何处理
处理方式1#xff1a;丢弃数据行
# 实现方式1
data data.dropna(subset[id]) # 若id列中某行数值为空#xff0c;丢弃整行数据
# 实现方式2
data df[df…最近一直在做数据处理相关的工作有几点经常遇到的情况总结如下
数据中存在为空数据如何处理
处理方式1丢弃数据行
# 实现方式1
data data.dropna(subset[id]) # 若id列中某行数值为空丢弃整行数据
# 实现方式2
data df[df[id].notna()]处理方式2填充定值填充或插值填充
data[value] data[value].fillna(0.0) # 使用0.0对value列中空值进行填充丢弃某行某列
# 如果rn列存在丢弃该列
if rn in df.columns:df df.drop(rn, axis1) # axis控制行列# 若直接在原数据做操作需设置inplace参数df.drop(rn, axis1 inplaceTrue)如何对某列中字符串数据进行批量操作
# 设time中数据为12:34这种类型
df[time].str.split(:,expandTrue).astype(int)
# expand参数用以将分割的字符串展开为单独的列astype用于转换数据类型数据中不存在某列添加列
# 添加有值的列如何做
data {A: [item1, item2, item3, item4],B: [0.1, 0.2, 0.3, 0.4]
}
df pd.DataFrame(data)# 增加一列id字段, 并选择特定行赋值
df.loc[[True, False, True, True],id] [1, 2, 3]
# 不支持同时加两列只能加单列# 添加无值的列再进行处理
df[add] np.nan
df[add] np.where(df[hour] 1000, 1, 0)
df[hour] np.where(df[hour] 1000, df[hour] - 1000, df[hour])一些日期处理函数
# pd.to_datetime
# 将day转为datetime格式
tmp_day pd.to_datetime(df[day], format%Y%m%d)# pd.to_timedelta
timestamp tmp_day pd.to_timedelta(df[hour], unith) pd.to_timedelta(df[min],unitm) pd.to_timedelta(df[add], unitD)
一些处理函数
# id分组中源数据只有一行batch字段有填充函数实现将batch拓展填充到各数据行
df[batch] df.groupby(id)[batch].transform(lambda x: x.fillna(methodffill).fillna(methodbfill))
# 首先通过groupby函数根据id列对数据进行分组然后对每个分组使用transform函数。
# transform函数中的lambda函数使用fillna方法先向前ffill填充分组中的np.nan值
# 如果某一分组中的第一行为np.nan则之后再向后bfill填充。# 对每个id分组执行apply操作运行数据处理函数实现功能
def trans(df):df df.groupby(id).apply(lambda group: group.apply(process_column))return df
def process_column(col):# 若数据列名中存在period或为a b c将该组数据用;连接起来返回if period in col.name or col.name in [a,b,c]:return ;.join(str(v) for v in col)else:# 其余数据直接做unique返回return col.unique()