pandas高级操作总结

1.pandas中的列的分位数

# 查看列的分位数
import pandas as pd
# set columns type
my_df['col'] = my_df['col'].astype(np.float64)

# computations for 4 quantiles : quartiles
bins_col = pd.qcut(my_df['col'], 4)
bins_col_label = pd.qcut(my_df['col'], 4).labels
分位数

2.多重聚合(组函数)

# 多重聚合(组函数)
# columns settings
grouped_on = 'col_0'  # ['col_0', 'col_2'] for multiple columns
aggregated_column = 'col_1'

### Choice of aggregate functions
## On non-NA values in the group
## - numeric choice :: mean, median, sum, std, var, min, max, prod
## - group choice :: first, last, count
# list of functions to compute
agg_funcs = ['mean', 'max']

# compute aggregate values
aggregated_values = my_df.groupby(grouped_on)[aggregated_columns].agg(agg_funcs)

# get the aggregate of group
aggregated_values.ix[group]
多重聚合

3.使用自定义函数进行聚合

# 使用自定义函数进行聚合
# columns settings
grouped_on = ['col_0']
aggregated_columns = ['col_1']

def my_func(my_group_array):
    return my_group_array.min() * my_group_array.count()

## list of functions to compute
agg_funcs = [my_func] # could be many

# compute aggregate values
aggregated_values = my_df.groupby(grouped_on)[aggregated_columns].agg(agg_funcs)
自定义函数进行聚合

4.在聚合的dataframe上使用apply

在聚合中使用apply
# 在聚合的dataframe上使用apply
# top n in aggregate dataframe
def top_n(group_df, col, n=2):
    bests = group_df[col].value_counts()[:n]
    return bests

# columns settings
grouped_on = 'col_0'
aggregated_column = 'col'

grouped = my_df.groupby(grouped_on)
groups_top_n = grouped.apply(top_n, aggregated_column, n=3)

5.移动平均

# 移动平均
import numpy as np

ret = np.cumsum(np.array(X), dtype=float)
ret[w:] = ret[w:] - ret[:-w]
result = ret[w - 1:] / w

# X: array-like
# window: int
移动平均

6.组数据的基本信息

# 组数据的基本信息
# columns settings
grouped_on = 'col_0'  # ['col_0', 'col_1'] for multiple columns
aggregated_column = 'col_1'

### Choice of aggregate functions
## On non-NA values in the group
## - numeric choice : mean, median, sum, std, var, min, max, prod
## - group choice : first, last, count
## On the group lines
## - size of the group : size
aggregated_values = my_df.groupby(grouped_on)[aggregated_column].mean()
aggregated_values.name = 'mean'

# get the aggregate of group
aggregated_values.ix[group]
组数据的基本信息

7.数据组的遍历

数据组的遍历
# 数据组的遍历
# columns settings
grouped_on = 'col_0'  # ['col_0', 'col_1'] for multiple columns

grouped = my_df.groupby(grouped_on)

i = 0
for group_name, group_dataframe in grouped:
    if i > 10:
        break
    i += 1
    print(i, group_name, group_dataframe.mean())  ## mean on all numerical columns

8.最大互信息数

# 最大互信息数
import numpy as np

matrix = np.transpose(np.array(X)).astype(float)
mine = MINE(alpha=0.6, c=15, est="mic_approx")
mic_result = []
for i in matrix[1:]:
    mine.compute_score(t_matrix[0], i)
    mic_result.append(mine.mic())
return mic_result
最大互信息数

9.pearson相关系数

import numpy as np

matrix = np.transpose(np.array(X))
np.corrcoef(matrix[0], matrix[1])[0, 1]

# X: array-like
# https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.corrcoef.html
pearson相关系数

10.自定义聚合函数

# 自定义聚合函数
def zscore(x):
    return (x - x.mean()) / x.std()

my_df['zscore_col'] = my_df.groupby(grouped_on)[aggregated_column].transform(zscore)
自定义聚合函数

11.标准聚合使用groupby

# 标准聚合使用groupby
# columns settings
grouped_on = 'col_1'
aggregated_column = 'col_0'

### Choice of aggregate functions
## On non-NA values in the group
## - numeric choice : mean, median, sum, std, var, min, max, prod
## - group choice : first, last, count
my_df['aggregate_values_on_col'] = my_df.groupby(grouped_on)[aggregated_column].transform(lambda v: v.mean())
标准聚合使用groupby

12.使用自定义函数设值

# 使用自定义函数设值
def to_log(v):
    try:
        return log(v)
    except:
        return np.nan
my_df['new_col'] = my_df['col_0'].map(to_log)
使用自定义函数设值

13.使用复杂函数设值

# 使用复杂的函数设值
import numpy as np
def complex_formula(col0_value, col1_value):
    return "%s (%s)" % (col0_value, col1_value)

my_df['new_col'] = np.vectorize(complex_formula)(my_df['col_0'], my_df['col_1'])
使用复杂函数设值

14.使用字典dict设值

# 使用字典dict设值
gender_dict={'男':1,'女':2}
df['gender'] = df['gender'].map(gender_dict)
使用字典设值
参考信息: https://www.kesci.com/

转载于:https://www.cnblogs.com/jean925/p/9315291.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pandas是一个强大的数据分析库,而iloc是其提供的一种用于按照位置选择数据的方法。iloc的高级用法可以分为以下几点: 1. 多轴选择:可以使用iloc同时选择行和列。例如,df.iloc[0:5, 1:3]表示选择第1到5行的第2到3列的数据。 2. 使用布尔数组选择数据:可以使用布尔数组来过滤数据。通过将布尔数组作为iloc的索引,选择满足条件的数据。例如,df.iloc[boolean_array, :]表示选择布尔数组为True的所有行。 3. 使用函数选择数据:可以使用函数来选择数据。通过将函数作为iloc的索引,选择满足函数条件的数据。例如,df.iloc[lambda x: x['column_name'] > 0, :]表示选择满足列`column_name`大于0的所有行。 4. 使用切片选择数据:可以使用切片来选择数据。通过在iloc中使用切片,选择位于切片范围内的数据。例如,df.iloc[:, ::2]表示选择所有列中索引为奇数的数据。 5. 使用负索引选择数据:可以使用负数来选择数据,表示从末尾开始的位置。通过在iloc中使用负索引,选择从末尾开始的位置的数据。例如,df.iloc[:, -2:]表示选择倒数第二列和最后一列的数据。 总结来说,pandas的iloc方法可以通过多种方式来选择数据,包括多轴选择、布尔数组选择、函数选择、切片选择和负索引选择。这些高级用法可以帮助我们更灵活地、更精确地选择需要的数据。 ### 回答2: Pandas的iloc是用于通过整数位置索引选择数据的高级用法。它的功能类似于传统的Python列表索引,但在Pandas中,iloc可以用于选择DataFrame或Series对象中特定位置的数据。 iloc的语法为:df.iloc[row_index, column_index]。 在使用iloc时,可以通过标签或整数索引来选择数据。如果只给出一个参数,则该参数表示行索引,返回指定行的所有数据。如果给出两个参数,则第一个参数表示行索引,第二个参数表示列索引,返回指定行和列的数据。 iloc使用整数位置索引,索引值从0开始。如果需要选择多行或多列,可以使用切片和列表等方式来指定范围。例如,df.iloc[1:3, :]表示选择第二行到第三行的所有列。 使用iloc可以进行一些高级操作,例如筛选和重组数据。可以根据行索引或列索引对数据进行选择,并将它们组合成新的DataFrame或Series对象。例如,df.iloc[:, [0, 2]]表示选择所有行的第一列和第三列,然后将它们组合成一个新的DataFrame。 另一个高级用法是使用iloc进行条件筛选。可以结合逻辑运算符和布尔条件来选择满足条件的数据。例如,df.iloc[df['column1']>50]表示选择列column1中数值大于50的行。 总之,Pandas的iloc提供了一种强大而灵活的方法来选择DataFrame和Series对象中的数据。通过配合使用标签和整数索引,可以实现对数据的高级操作,包括选择、筛选和重组等操作,提高数据处理的效率和准确性。 ### 回答3: Pandas中的iloc是一种用于通过行和列的位置进行索引的方法,它可以用来有效地访问和操作DataFrame中的数据。以下是pandas iloc的一些高级用法: 1. 单个元素访问:可以使用`iloc[row_index, col_index]`的方式访问单个元素。索引从0开始,可以使用负数表示从末尾开始索引。例如,`df.iloc[0, 0]`可以访问DataFrame的第一个元素。 2. 切片操作:可以使用切片操作来选择一部分数据。例如,`df.iloc[1:3, 0:2]`表示选择从第1行到第2行,从第0列到第1列的数据。 3. 特殊索引方式:iloc还支持使用布尔索引、列表索引和函数索引等特殊的索引方式。例如,`df.iloc[[0,2,4], :]`表示选择第1、3和5行的所有列。 4. 访问行或列:如果只想选择一整行或一整列,可以使用`:`作为索引。例如,`df.iloc[:, 1]`表示选择所有行的第2列。 5. 使用函数:除了直接使用索引,还可以使用函数来对数据进行筛选和操作。例如,可以使用lambda函数来选择大于某个值的数据:`df.iloc[lambda x: x['column'] > threshold]`。 总之,pandas iloc提供了强大的方法来选择、访问和操作DataFrame中的数据。通过熟练使用它的语法,我们可以更加灵活地进行数据处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值