lambda的使用
data_1[6].apply(lambda x: x)
# if 使用方法
data_1[6].apply(lambda x: x if x == 1 else (x-=1 if x == 2 else x))
# 可以搭配函数使用
def index(x):
if x == 1:
return x
elif x == 2:
return x-=1
else:
return x
data_1[6].apply(lambda x: index(x))
根据列值选取
# 选取第一列为1的所有行
data = data[(data[1] == 1)]
# 选取第一列和第二列为2的所有行
data = data[(data[1] == 2) & (data[2] == 2)]
# 选取第一列或第二列为3的所有行
data = data[(data[1] == 3) | (data[2] == 3)]
选取列中需要的值
# 选取第一列为1或2或3的所有行
data = data[data[1].isin([1,2,3])]
统计列的所有类型和数量
# 统计第1列的所有类型和数量
reg_data[1].value_counts()
normalize=True # 统计占用的百分比
模糊查询
data = data[data['title'].str.contains(r".*?内容.*")]
根据列值进行合并(交集)
pd.concat([zi_data, mu_data], axis=1, join='inner')
列与列之间的运算
data['result'] = data.apply(lambda x: float('%.4f' % (x[0] / x[1])), axis=1)
合并
df_inner = pd.merge(df, df1,how='inner', on=['']) # 交集
df_outer = pd.merge(df, df1,how='outer', on=['']) # 并集
显示省略号内容
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
空值
all_data[(all_data['title'].isnull())] # 提取异常值数据
all_data.fillna('', inplace=True) # 将空值替换为指定内容
all_data.dropna() # 删除空值那一行内容
# dropna中有两个参数:axis删除行还是列,0代表行,1代表列,how所有值为空还是只要有空值存在,all代表所有值为空值才可以删除,any代表有空值就可以删除
均值
all_data['num'].mean()
标准差
all_data['num'].std()
中位数
all_data['num'].median()
下四分位数
all_data['num'].quantile(q=0.25) # 切换到上四分位数为0.75
偏度
all_data['num'].skew()
# 如果为负偏,均值较小,大部分数比均值大
# 如果为正数,均值较大,大部分数比均值小
峰度
all_data['num'].kurt()
数据分布情况
np.histogram(all_data['num'], bins=np.arange(0.0, 1.1, 0.1))
# 会返回两个列表第一个列表对应第二个的数量
where 方法
all_data['num'].where(all_data['num']='需要匹配内容')
# 选取符合调价的数据和sql语句的where差不多
group by 方法
all_data.groupby('按照那一个属性进行分类').mean()
# 根据需要按照属性那一列分组之后,内容填充为平均数,最大值等一些数值类的值,只能对数值类的属性进行分组,字符串或其他类型的直接去除掉了,
排序
data.sort_values('属性名称', inplace=True)
# True 为正序
# Felse 是倒叙
numpy
生成随机数列表
np.linspace(0, 14, 100)
# 随机数生成,根据起始值和结束值生成指定列表数量的浮点数,会依次增大
# 第一个参数起始值
# 第二个参数结束值
# 第三个参数列表数量
列表每个加响应的值,再减去固定的值
x = np.linspace(0, 14, 100)
x + 1 * .5
先每个固定加1然后再减去0.5