pandas中的数据选取1(get/select_dtypes/isins/sample)

数据筛选

#1.头部数据与尾部数据
#head
df.head(2) #获取前2行数据

2.tail
df.tail(2) #获取后2行数据

#2.数据列的的获取
df["name"] #df+列名称
df.name #此种方法列名称不能有空格
df[["name","age"]] #通过列表选取多列

#对于series
df["赋值"][0:10]#表示选取series的前9列

#此刻需要注意的是如果名中含有空格,直接选取会报错如df['温度 ℃']
df.rename(columns={'温度 ℃': '温度'}, inplace=True)#此时可对列明重新命名

#或者通过get函数
#参数解释:
get(self, key, default=None) # default参数的数据解释:当所获取的数据数据框中没有该列时,返回 default的值

def.get("name")  #获取某列
def.get(["name","age"])  #获取某列表

#3.根据数据类型进行筛选select_dtypes()
#参数解释:
 select_dtypes(self, include=None, exclude=None):include-->筛选出指定类型的数据列;exclude-->排除指定类型的数据列,与include刚好相反
#例子:
var = df.select_dtypes(include=object)  #筛选出字符型的列
df.select_dtypes(include=["object","int"])  #当参数为列表时,筛选出多个类型的列


#4.isin(),根据列表中的元素与数据框某列的映射情况,从数据框筛选出特定的数据行
#例子:
a = {"name":["lemon","jack","peter","Emma","james"],
     "city":["长沙","上海","深圳","北京","北京"],
     "a":[80,90,60,73,89],
     "b":[80,75,80,85,83],
     "c":[70,75,80,73,62]}

df = pd.DataFrame(data=a)
name_list = ["lemon","jack","yangzi"]
var = df[df["name"].isin(name_list)]
print(var)
"""
输出结果
    name city   a   b   c
0  lemon   长沙  80  80  70
1   jack   上海  90  75  75
"""


#~:反向符号

var = df[~(df["name"].isin(name_list))] #~:反向符号,表示不在列表中的行,与不加~相反
print(var)
"""
输出结果
    name city   a   b   c
2  peter   深圳  60  80  80
3   Emma   北京  73  85  73
4  james   北京  89  83  62
"""

#5.随机获取数据 sample()
#参数解释:
def sample(
        n: int | None = None,#n:随机获取数据的数量
        frac: float | None = None, #随机获取数据的比例
        replace: bool_t = False,#是否允许数据重复值的出现
        weights=None, #数值随机出现的权重,参数值可以是列名称,或列名称组成的列表
        random_state: RandomState | None = None,#随机状态,用来固定单次的随机结果
        axis: Axis | None = None,
        ignore_index: bool_t = False,#是否忽略原有索引
    ) 
#例子:
df = pd.DataFrame(data=a)
name_list = ["lemon","jack","yangzi"]
var = df.sample(frac=0.7,replace=True) #随机出现的比列为0.7,并且允许重复值的出现
print(var)
"""
输出结果
    name city   a   b   c
3   Emma   北京  73  85  73
4  james   北京  89  83  62
3   Emma   北京  73  85  73
1   jack   上海  90  75  75
"""

var = df.sample(n = 1,random_state = 2) #设置random_state为某个整数时,可以固定随机状态,每次出现的结果是一样的

var = df.sample(n = 1,ignore_index=True) #ignore_index:忽略原索引,重新配置新索引

var = df.sample(n = 2,weights="a")  #a列数值较大的出现频率较高一些




posted @ 2023-02-13 23:18  小杨的冥想课  阅读(59)  评论(0编辑  收藏  举报