Pandas数据中列表转换成列随机抽样数据的方法实践经验两则
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas数据中列表转换成列随机抽样数据的方法实践经验两则相关的知识,希望对你有一定的参考价值。
1. Pandas数据中列表转换成列
最近,使用Mongo DB聚合分组查询时,对于超过1列(字段)时,分组查询结果反馈到Pandas的DataFrame中,表现为list数据。
例如:
import pandas as pd
import numpy as np
df = pd.DataFrame('_id':[[1,0],[3,5]],'data':[2,5])
df
_id data
0 [1, 0] 2
1 [3, 5] 5
new_col = df['_id']
new_col
0 [1, 0]
1 [3, 5]
Name: _id, dtype: object
new_col = df['_id']
new_col = np.array(new_col.tolist()).T # 转置
new_col
array([[1, 3],
[0, 5]])
df['A'] = new_col[0]
df['B'] = new_col[1]
df
最终,提取的数据列如下所示:
_id data A B
0 [1, 0] 2 1 0
1 [3, 5] 5 3 5
2. Pandas随机抽样
2.1. np.random.permutation():随机排列序列
import numpy as np
df = df.reindex(np.random.permutation(df.index))
df
2.2. pandas之df.sample
df.sample()用于从dataframe或者series中,随机取样。
官方文档:
DataFrame.sample(self: ~ FrameOrSeries, n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
参数详解
- n:int
从数据集中随机选取n行数据,不能和frac参数同时使用。如果frac=None,那么n默认为1 - frac:float
从数据集中选取一定比例的数据,不能和n同时使用。如果frac>1,replace必须为True - replace:bool,default False
是否允许重复取样,即一条数据多次选取。默认为否 - weight:str or narray-like
为每条数据添加权重。默认为None。如果axis = 0,可以直接使用某一列为权重。除非权重的类型为series,否则权重的长度必须和数据集中所用轴方向的(axis=0 or )一样长。如果权重和大于一,则会归一化为1。 - random_state:int or numpy.random.randomstate
随机数种子 - axis:
选择轴向,0(index)或者1(columns),默认是0
举例
import pandas as pd
df = pd.DataFrame('name': ['董国建','苏炳添','彭建华','张德顺','葛曼棋','仁青东知布'],
'gender': ['男','男','男','女','女','男'],
'age':[34,31,24,25,24,20],
'sport':['马拉松','百米','马拉松','马拉松','百米','马拉松'])
df
df1 = df.sample(n=3)
df1
df3 = df.sample(frac=0.5)
df2
df4 = df.sample(frac=1)
df4
注:随机取样,如果frac=1.0,则可实现打乱排序的效果
2.3. 取反例
Pandas中isin是series中的一个函数,用于查看某列中是否包含某个字符串,返回值为布尔Series,来表明每一行的情况。
使用 “~” 表示取反,提取取样过的数据集。
例如:
df2 = df[~df.index.isin(df1.index)]
df2
参数:
[1]. XerCis. pandas将list数据拆分成行或列的实现. 脚本之家. 2020.12
[2]. 非昨. pandas学习之df.sample. CSDN博客. 2020.06
以上是关于Pandas数据中列表转换成列随机抽样数据的方法实践经验两则的主要内容,如果未能解决你的问题,请参考以下文章
Pandas数据中列表转换成列随机抽样数据的方法实践经验两则
pandas对dataframe的数据行进行随机抽样(Random Sample of Rows):使用sample函数进行数据行随机抽样(有放回的随机抽样,replacement)
pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)使用sample函数进行数据列随机抽样
pandas使用query函数和sample函数使用query函数筛选dataframe中的特定数据行并使用sample函数获取指定个数的随机抽样数据