title: pandas操作excel之groupby date: 2021年8月9日
import pandas as pd
import random
data = pd.read_excel('30.xlsx');
test = data.groupby('条件列')
一、groupby函数
将数据进行特征分组,以便于计算.我们来看代码
import pandas as pd
data = pd.read_excel('30.xlsx');
test = data.groupby('条件列')
for i,o in test:
print(o)
条件列 level_1 ID
0 113 3 4
条件列 level_1 ID
1 114 6 7
条件列 level_1 ID
2 115 7 8
3 115 47 48
4 115 52 53
5 115 54 55
6 115 31 32
7 115 61 62
8 115 58 59
9 115 26 27
10 115 23 24
11 115 25 26
12 115 36 37
13 115 27 28
14 115 8 9
15 115 29 30
16 115 57 58
17 115 34 35
18 115 48 49
条件列 level_1 ID
19 116 187 188
20 116 253 254
21 116 137 138
22 116 280 281
23 116 123 124
.. ... ... ...
91 116 195 196
92 116 245 246
93 116 310 311
94 116 308 309
95 116 239 240
[77 rows x 3 columns]
二、pandas中的sample函数
Pandas sample()用于从DataFrame中随机选择行和列。
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
n:这是一个可选参数, 由整数值组成, 并定义生成的随机行数。 frac:它也是一个可选参数, 由浮点值组成, 并返回浮点值*数据帧值的长度。不能与参数n一起使用。 replace:由布尔值组成。如果为true, 则返回带有替换的样本。替换的默认值为false。 weights:它也是一个可选参数, 由类似于str或ndarray的参数组成。默认值”无”将导致相等的概率加权。 如果正在通过系列赛;它将与索引上的目标对象对齐。在采样对象中找不到的权重索引值将被忽略, 而在采样对象中没有权重的索引值将被分配零权重。 如果在轴= 0时正在传递DataFrame, 则返回0。它将接受列的名称。 如果权重是系列;然后, 权重必须与被采样轴的长度相同。 如果权重不等于1;它将被标准化为1的总和。 权重列中的缺失值被视为零。 权重栏中不允许无穷大。 random_state:它也是一个可选参数, 由整数或numpy.random.RandomState组成。如果值为int, 则为随机数生成器或numpy RandomState对象设置种子。 axis:它也是由整数或字符串值组成的可选参数。 0或”行”和1或”列”。
三、reset_index函数
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
level:数值类型可以为:int、str、tuple或list,默认无,仅从索引中删除给定级别。默认情况下移除所有级别。控制了具体要还原的那个等级的索引 。
drop:当指定drop=False时,则索引列会被还原为普通列;否则,经设置后的新索引值被会丢弃。默认为False。
inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False。
col_level:数值类型为int或str,默认值为0,如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入到第一级。
**col_fill:**对象,默认‘’,如果列有多个级别,则确定其他级别的命名方式。如果没有,则重复索引名。
四、实例分析
import pandas as pd
data = pd.read_excel('30.xlsx');
test = data.groupby('条件列').ID.apply(lambda x: x.sample(frac=0.3)).reset_index()
print(test)
学习上面内容后,我们分析上面代码:
1.读取文件
2.groupby() 进行特征划分
3.选取ID 列操作
4.apply(lambda x: x.sample(frac=0.3)) 展开为:
def test(x):
return x.sample(frac=0.3)
5.reset_index() 方法进行恢复原数据索引以及格式
|