标准化(normalization):将数据按比例缩放,使之落入一个小的特定区间
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
X = ss.fit_transform(X)
origin_data = ss.inverse_transform(X)
归一化:标准化的一种,将数据统一映射到[0,1]区间上
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler()
X = mm.fit_transform(X)
origin_data = minmaxScaler.fit_transform(X) # 还原
1.groupby():基于行的聚合操作
对数据集进行切片、切块、摘要等操作
返回值:返回重构格式的DataFrame(groupby里面的字段内的数据重构后都会变成索引)
agg():基于列的聚合操作
df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'],
'B': [2, 7, 1, 3, 3, 2, 4, 8],
'C': [100, 87, 96, 130, 105, 87, 96, 155]})
output:
A B C
0 a 2 100
1 b 7 87
2 a 1 96
3 c 3 130
4 a 3 105
5 c 2 87
6 b 4 96
7 c 8 155
df.groupby('A').apply(np.mean) # 不同列使用同一种方法
output:
B C
A
a 2.000000 100.333333
b 5.500000 91.500000
c 4.333333 124.000000
data.agg({'B':'mean','C':'sum'}) # 不同列使用不同的方法
output:
B C
A
a 2.000000 301
b 5.500000 183
c 4.333333 372
# as_index=False:不使用其作为新的索引
df.groupby(['A'], as_index=False)['B'].agg({'count':'count'})
output:
A count
0 a 3
1 b 2
2 c 3
2. merge()
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)
left - 一个DataFrame对象
right - 另一个DataFrame对象
on - 列(名称)连接,必须在左和右DataFrame对象中存在(找到)
left_on - 左侧DataFrame中的列用作键,可以是列名或长度等于DataFrame长度的数组
right_on - 来自右的DataFrame的列作为键,可以是列名或长度等于DataFrame长度的数组
left_index - 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 在具有MultiIndex(分层)的DataFrame的情况下,级别的数量必须与来自右DataFrame的连接键的数量相匹配
right_index - 与右DataFrame的left_index具有相同的用法
how - 它是left, right, outer以及inner之中的一个,默认为内inner。
sort - 按照字典顺序通过连接键对结果DataFrame进行排序。默认为True,设置为False时,在很多情况下大大提高性能。
copy 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中
data = pd.merge(customer_id,good_price,on=['customer_id'],how='left',copy=False)