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列数值较大的出现频率较高一些
记录学习的点点滴滴