Loading

数据处理

  • 删除存在指定值的行
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

 

posted @ 2020-10-30 23:26  lixin2020  阅读(121)  评论(0)    收藏  举报