数据处理
- 删除存在指定值的行
data_deleted_0 = data.drop(data[(data[column_name] == 0)].index)
# 此处使用了布尔索引进行选择,随后输出符合条件项的index,最后使用drop来删除数据
- 相邻数据之间的比较
df
a b c
0 1 1 1
1 2 1 4
2 3 2 9
3 4 3 16
4 5 5 25
5 6 8 36
# 计算元素之间的差值
df.diff(periods=1, axis=0)
# periods为平移的距离,为正则为向前平移(此时第一行就为NA)axis为平移的轴,0则为纵向平移
df.diff()
a b c
0 NaN NaN NaN
1 1.0 0.0 3.0
2 1.0 1.0 5.0
3 1.0 1.0 7.0
4 1.0 2.0 9.0
5 1.0 3.0 11.0
# 返回的数据具有相同的行数
#计算元素之间的比值
df.pct_change(periods=1)
df.pct_change()
a b c
0 NaN NaN NaN
1 1.000000 0.000000 3.000000
2 0.500000 1.000000 1.250000
3 0.333333 0.500000 0.777778
4 0.250000 0.666667 0.562500
5 0.200000 0.600000 0.440000
# 返回的数据具有相同的行数
对于series,series > 1 会返回一个全为布尔值的series
此时就可以使用series.any()或者all()来返回一个整体的结果
(any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True)
(all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False)
删除含有nan的行
axis为0,表示纵向删除,删除的是行 data
a b c d
0 1.0 a NaN NaN
1 2.0 b 0.0 NaN
2 4.0 NaN 4.0 NaN
3 NaN NaN NaN NaN
4 7.0 d NaN NaN
5 9.0 e 5.0 NaN
# 删除全为nan的行
data.dropna(axis=0,how='all')
a b c d
0 1.0 a NaN NaN
1 2.0 b 0.0 NaN
2 4.0 NaN 4.0 NaN
4 7.0 d NaN NaN
5 9.0 e 5.0 NaN
# 删除含有nan的行
data.dropna(axis=0,how='any')
Empty DataFrame
- 离群值处理
计算z-score,z=(x-μ)/σ;其中z为标准分数;x为某一具体分数,μ为平均数,σ为标准差
Z值的量代表着原始分数和母体平均值之间的距离,是以标准差为单位计算
from scipy import stats
import numpy as np
z = np.abs(stats.zscore(series))
print(z)
计算分位数
Q1 = boston_df.quantile(0.25)
Q3 = boston_df.quantile(0.75)
IQR = Q3 - Q1

浙公网安备 33010602011771号