循环语句
apply
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)
axis=0 将func作用于dataframe每一列
axis=1将func作用于dataframe每一行
df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
df.apply(np.sqrt)
agg
DataFrame.agg(func=None, axis=0, *args, **kwargs)
- 在每列进行聚合,分别计算sum、min:
df = pd.DataFrame([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[np.nan, np.nan, np.nan]],
columns=['A', 'B', 'C'])
df.agg(['sum', 'min'])
- 在每列进行聚合不同的函数:
df.agg({'A' : ['sum', 'min'], 'B' : ['min', 'max']})
- 在每列聚合不同的函数,并且重命名
df.agg(x=('A', max), y=('B', 'min'), z=('C', np.mean))
- agg与groupby结合使用
df.groupby('A').agg(min)
transform
DataFrame.transform(func, axis=0, *args, **kwargs)
- 对DataFrame每一列都加一
df = pd.DataFrame({'A': range(3), 'B': range(1, 4)})
df.transform(lambda x: x + 1)
- 对series做聚合,多种聚合函数
s = pd.Series(range(3))
s.transform([np.sqrt, np.exp])
- 结合groupby使用
df = pd.DataFrame({
"Date": [
"2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05",
"2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05"],
"Data": [5, 8, 6, 1, 50, 100, 60, 120],
})
df.groupby('Date')['Data'].transform('sum')
map
将函数function应用于可迭代对象每一元素
map(function, iterable, ...)
- 将string替换成int,map()返回一个与传入可迭代对象大小一样的 map 对象,通过list将其转换为list
a = ['1','2','3','4']
list(map(int,a))
- 对多个迭代对象使用map()
a = [1, 4, 6]
b = [2, 3, 5]
map(lambda x, y: x*y, a, b)
List
[ 表达式 for 循环项 in 循环体 (if 条件) ]
数据筛选
filter
从可迭代对象中筛选元素
filter(function, iterable)
- 根据函数筛选元素,若函数返回True则保留,否则剔除
def fun(variable):
letters = ['a', 'e', 'i', 'o', 'u']
if (variable in letters):
return True
else:
return False
sequence = ['g', 'e', 'e', 'j', 'k', 's', 'p', 'r']
filtered = filter(fun, sequence)
loc iloc
at iat
at根据索引和列名字提取数,iat根据位置提取数。
注意,at只适用于直提取一个数的情况
df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
index=[4, 5, 6], columns=['A', 'B', 'C'])
df.at[4, 'B']
query
DataFrame.query(expr, inplace=False, **kwargs)
- 例子
df = pd.DataFrame({'A': range(1, 6),
'B': range(10, 0, -2),
'C C': range(10, 5, -1)})
df.query('A > B')