当前位置: 首页 > news >正文

[Pandas]数据处理

一.Series对象

1.创建一个简单的Series对象

data = pd.Series([4,3,6,7])

输出:0 1 2 3 是默认的索引

2.Series对象的属性

values:本质numpy的数组

index:索引

#指定index
data1 = pd.Series([4,3,6,7,5],index=['星期一','星期二','星期三','星期四','星期五'])
data1

 3.使用字典生成

方法一:

#传字典生成对象
exp_dit = {'星期一':4,"星期二":3,"星期三":6}
exp_series = pd.Series(exp_dit)
exp_series

 方法二:

exp_dit = {'星期一':4,"星期二":3,"星期三":6}exp1_series = pd.Series(exp_dit,index=["星期一","星期三","星期天"])
exp1_series

此方法如果自己指定索引,如果字典中不存在的索引会显示Nan

 小技巧:使用字符串生成列表索引

#1.把'abcd'强转成list形式,['a','b','c','d']   2.填写一个数,默认是全部为此数
data1 = pd.Series(10,index=list('abcd'))
data1

4.获取Series对象的值

样本:

data  = pd.Series([40,45,39],index={"一班","二班","三班"})

1)获取某行的值
#获取某行值 
data["一班"]  #40  按照key获取
data[0]   #40  按照索引
 2)获取某个范围,按照key 是[index1,index2] 闭区间,按照索引是[index1,index2)

#获取某个范围,按照key 是[index1,index2] 闭区间
data["一班":"三班"]

#获取某个范围,按照索引是[index1,index2)
data[0:2]  #没有第三行

 3.引出情况

样本:

data  =pd.Series(['x1','x2','x3'],index=[1,2,3])

假如我们想取到第二行的值,也就是x2,我们使用索引去取的时候,会使用data[1],但是此时,优先使用的key ,会发现data[1] 输出为x1,因为此时的1,是一个key

所以为了防止这种情况,以下方法可以取到第二行的值

说白了就是key=1 和 index=1 有歧义。

data.loc[2]  #取key为2
data.iloc[1] #取索引为1

 此时输出就是x2

 二.DataFrame对象

1.使用Series对象生成

#使用series构建
population_dict = {"beijing":300,"chengdu":400,"shanghai":400}  #可以看作是一行数据
area_dict = {"beijing":200,"shanghai":500,"chengdu":300}  #键值对匹配,不一定要顺序一样
p_s = pd.Series(population_dict)
a_s = pd.Series(area_dict)citys=pd.DataFrame({"population":p_s,"area":a_s})  #可以认为是构建列名
citys

 2.使用Series对象列表生成

#法二:
population_dict = {"beijing":300,"chengdu":400,"shanghai":400}  #可以看作是一行数据
area_dict = {"beijing":200,"shanghai":500,"chengdu":300}  #键值对匹配,不一定要顺序一样
p_s = pd.Series(population_dict)
a_s = pd.Series(area_dict)citys1 = pd.DataFrame([p_s,a_s],index=["population","area"])
citys1

 

 是使用Series对象生成的”转置”

3.使用Numpy数组创建

import numpy as np
data = pd.DataFrame(np.random.randint(0,10,(3,2)),columns=['y1','y2'],index=['x1','x2','x3'])
data

4.获取DataFrame对象

样本:

data = pd.DataFrame(np.random.randint(0,10,(3,2)),columns=['y1','y2'],index=['x1','x2','x3'])

 1.获取某一列  #这里要嵌套列表,单个的时候可以使用一层列表
data[['y1']]  #获取列名为y1的列

 

2.获取两列
data[['y1','y2']]  

3.根据索引获取第一行第一列的值
data.iloc[0,0]  #1
4.根据key获取第一行第一列的值
data.loc['x1','y1'] #1
5.根据索引获取第一行的值
#eg:根据索引获取第一行的值
data.iloc[0,:]
 6.根据key获取第一行的值
data.loc['x1',:]

7.输出整个
data.iloc[:]  #key
data.loc[:] #index
 

 三.条件过滤

样本:

name_list=['zhangsan','lisi','wangwu']
sno_list=['1001','1002','1003']
sex_list=['man','woman','man']
age_list=[17,18,19]
score_list=[99,59,100]mydata = pd.DataFrame({"Sno":sno_list,"Sex":sex_list,
"Age":age_list,"Score":score_list},index=name_list)

1.数学方法

#获取年龄的平均值,最小值,最大值,样本方差,样本标准差
ages=mydata['Age']
ages.mean(),ages.min(),ages.max(),ages.var(),ages.std()

2. 排序

#排序  ascending = Ture  默认升序
ages.sort_values()

3.过滤

输出Series类型

#筛选出大于60分的数据
scores = mydata['Score']
scores_ok = scores[scores>60]
scores_ok

输出DF类型

#筛选出及格以及年龄大于18岁的
mydata[(mydata['Score']>=60) & (mydata["Age"]>18)]

4.处理缺失值

样本:

data  = np.random.randint(0,9,size=(3,4)).astype(float)
data[[2,1],[1,3]]=np.nan
data = pd.DataFrame(data)

 

 1)得到缺失值信息,info()

2)data.isnull()  判断是否为空值 

3) data.notnull() 判断不是空值

4)删除缺失值dropna()

data.dropna(axis=1)  #axis :0为行 1为列   参数how:'all' 全部缺失才删除

 

5)填补缺失值 ffill():用上一个   bfill():用下一个填补 

#填充缺失值   method参数:ffill 上面一个数填充  当前面或者后面 没值得时候,先用前一个填,再按后一个去填,就一定能填满
data.fillna(method='ffill',axis=0) 

6)用平均值填补

data.fillna(data.mean(axis=0))  #axis 按照行的平均还是按照列的平均

http://www.xdnf.cn/news/379243.html

相关文章:

  • MySQL 从入门到精通(六):视图全面详解 —— 虚拟表的灵活运用
  • PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践
  • TDengine 在智能制造中的核心价值
  • 工控新宠| 触想Z系列工控机C款发布,方寸机身,智控万千
  • OSPF综合实验实验报告
  • 深度学习篇---MediaPipe 及其人体姿态估计模型详解
  • 广东省省考备考(第七天5.10)—言语:片段阅读(每日一练)
  • Vue插槽(Slots)详解
  • SkyReels-V2 视频生成
  • Cadence 高速系统设计流程及工具使用三
  • 加速pip下载:永久解决网络慢问题
  • 数据集-目标检测系列- 冥想 检测数据集 close_eye>> DataBall
  • AI实战笔记(1)AI 的 6 大核心方向 + 学习阶段路径
  • Linxu实验五——NFS服务器
  • WordPress插件targetsms存在远程命令执行漏洞(CVE-2025-3776)
  • 20250510-查看 Anaconda 配置的镜像源
  • redis未授权访问
  • [架构之美]从零开始整合Spring Boot与Maven(十五)
  • AUTODL Chatglm2 langchain 部署大模型聊天助手
  • C语言初阶秘籍6
  • 二分法和牛顿迭代法解方程实根,详解
  • 第十九节:图像梯度与边缘检测- Laplacian 算子
  • 「OC」源码学习——cache_t的原理探究
  • C32-编程案例用函数封装获取两个数的较大数
  • IPFS与去中心化存储:重塑数字世界的基石
  • nuscenes_devkit工具
  • Windows:Powershell的使用
  • 进阶二:基于HC-SR04和LCD1602的超声波测距
  • 海纳思(Hi3798MV300)机顶盒遇到海思摄像头
  • 贪心算法专题(Part1)