pandas 数据筛选与索取
转载于博客园
pandas的数据形式
基本操作
- 更改dataFrame中的某一列的类型
.astype()
方法
import pandas as pd
df['列名'] = df['列名'].astype(np.int64)
- 更改
Series
中的类型,同样使用.astype()
- 在读取的时候更改
pd.read_csv("data", dtype = {"colname" : float})
- 删除pandas DataFrame的某一/几列:
方法1:
del DF['column-name']
方法2:
DF.drop('column_name',axis=1, inplace=True)
- 更改DataFrame的某些值(在原始数据中更改,注意数据备份),使用
.loc
,.iloc
思路:先定位,再赋值
# loc和iloc 可以更换单行、单列、多行、多列的值
df1.loc[0,'age']=25 # 思路:先用loc找到要更改的值,再用赋值(=)的方法实现更换值
df1.iloc[0,2]=25 # iloc:用索引位置来查找# at 、iat只能更换单个值
df1.at[0,'age']=25 # iat 用来取某个单值,参数只能用数字索引
df1.iat[0,2]=25 # at 用来取某个单值,参数只能用index和columns索引名称
print(df1)
- 插入新增列、行
# 类似与字典的赋值
df1['score']=[80,98,67,90]
import pandas as pddf1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])print("----------在最后新增一列---------------")
print("-------案例1----------")
# 在数据框最后加上score一列,元素值分别为:80,98,67,90
df1['score']=[80,98,67,90] # 增加列的元素个数要跟原数据列的个数一样
print(df1)print("-------案例2----------")
print("---------在指定位置新增列:用insert()--------")
# 在gender后面加一列城市
# 在具体某个位置插入一列可以用insert的方法
# 语法格式:列表.insert(index, obj)
# index --->对象 obj 需要插入的索引位置。
# obj ---> 要插入列表中的对象(列名)col_name=df1.columns.tolist() # 将数据框的列名全部提取出来存放在列表里
print(col_name)col_name.insert(2,'city') # 在列索引为2的位置插入一列,列名为:city,刚插入时不会有值,整列都是NaN
df1=df1.reindex(columns=col_name) # DataFrame.reindex() 对原行/列索引重新构建索引值df1['city']=['北京','山西','湖北','澳门'] # 给city列赋值
print(df1)print("----------新增行---------------")
# 重要!!先创建一个DataFrame,用来增加进数据框的最后一行
new=pd.DataFrame({'name':'lisa','gender':'F','city':'北京','age':19,'score':100},index=[1]) # 自定义索引为:1 ,这里也可以不设置index
print(new)print("-------在原数据框df1最后一行新增一行,用append方法------------")
df1=df1.append(new,ignore_index=True) # ignore_index=True,表示不按原来的索引,从0开始自动递增
print(df1)
- 更改
dataframe
列名
#显示df每列的名称
df.columns.values
# 将第三列的列名改为'new name'
df.rename(columns={ df.columns[2]: "new name" }, inplace=True)
# 假如df一共有三列,你想把所有列名依次改为'col_1', 'col_2', 'col_3'
df.columns = ['col_1', 'col_2', 'col_3']
- 将空元素填充为固定值
.fillna()
df3.fillna(3, inplace=True)
案例1
清洗生存数据
清洗数据,希望得到这样的csv文件用来作生存分析
case_id,slide_id,censorship,suivival_months,oncotree_code,
'''import pandas as pd
import os
import numpy as np
pt_path = '/home/hero/disk/CODE/Patch-GCN-master_old/GGH/WSI_graph'
src_path_csv = '/home/hero/disk/ubuntu_free/clin_shengyi.csv'
def run():target_wsi_id = os.listdir(pt_path)# 获取WSI文件的IDtarget_wsi_id = [os.path.splitext(i)[0] for i in target_wsi_id]# 读取CSV文件,并将id_name设置为索引列src_csv = pd.read_csv(src_path_csv)src_csv['id_name']=src_csv['id_name'].astype(str)src_csv.set_index('id_name',inplace=True)# 构建新的CSV文件pd_new = src_csv.loc[target_wsi_id,['OS','OS_month']]# 在新构建的CSV文件中添加case_id,slide_id,并填充上对应的数据pd_new['case_id']=pd_new.indexpd_new['slide_id']=pd_new.index# 更改列名 OS->censorship,OS_month->survival_monthpd_new.rename(columns={ 'OS': "censorship" }, inplace=True)pd_new.rename(columns={ 'OS_month': "survival_months" }, inplace=True)# 添加列oncotree_code,并用LUAD填充pd_new['oncotree_code']=['LUAD']*len(pd_new.index)# 将censorship中的值0,1互换pd_new['censorship']=pd_new['censorship']+1pd_new.loc[pd_new['censorship'].values==2,'censorship']=0# save csv filepd_new.to_csv('./GGH/clinl.csv')if __name__=="__main__":run()
案例2
一、导入数据
#导入pandas和numpy库
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
test=pd.read_excel("/Users/yaozhilin/Downloads/exercise.xlsx",sep="t")
test.head(5)#显示前五行
二、选取行或者列
test[:2]#选取行
三、基于.loc
方法来索引
基于标签索引
1、行与列的list或者切片选取(.loc[:,[]]或.loc[[],:]等)
2、行的布尔值筛选与列的list或者切片选取进行条件筛选
注:因为基于标签索引,所以索引结果为前闭后闭
1、行和列的切片或者[]组合选取
test.loc[:4,["工单号","所属区域","数量"]]#行-切片,列-list
2、行的布尔值筛选与列的list或者切片选取进行条件筛选
test.loc[test["数量"]>=800,["工单号","所属区域","数量"]]#行-布尔值,列-list
四、基于.iloc
的方法
iloc:基于位置索引 是传统的前闭后开
正常索引与loc一样行和列可以随意切片或者是[]的形式
test.iloc[0:3,0:3]
布尔值索引筛选过滤:
因为loc是直接将标签和筛选值连在一起可以直接筛选,而iloc是基于位置的筛选不能直接识别筛选值
test["数量"].values#变为数组获取值的位置
test.iloc[test["数量"].values>=800,0:3]
五、多重索引
1、构建多重索引:
1)set_index、reset_index原表数据构建
test.set_index( keys,drop=True,append=False, inplace=False,verify_integrity=False) drop表示设置为新索引的列是否保存在原数据
append表示旧的索引是否保存
test.set_index(["所属区域","产品类别"],drop=True,append=True,inplace=True)
test
还原
test.reset_index(level=[1,2],inplace=True)2 test
2)zip创建
pd.MultiIndex.from_tuples、zip的用法:将两集合拆包组成新的配对集合
X=[1,2,3,4]
2 Y=['a','b','c','d']
3 XY=list(zip(X,Y))
4 print(XY)
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
z1,z2=zip(*XY)
z1
(1, 2, 3, 4)
indexs=pd.MultiIndex.from_tuples(XY,names=["first","scend"])
df=pd.DataFrame(np.random.randn(4),columns=['A'],index=indexs)
df
2、loc常规按顺序索引
test.set_index([“所属区域”,“产品类别”],drop=True,inplace=True)
test.loc[(“苏州”,“睡袋”),“数量”]#indexs用(),且不能不写第一索引
所属区域 产品类别
苏州 睡袋 120.0睡袋 160.0睡袋 100.0睡袋 360.0睡袋 240.0睡袋 120.0.....
注:test.loc[(,“睡袋”)]
但是直接跳过第一索引会报错
可使用slice切片组合使用,但slice使用过程中所有索引与列均要显示指出
test.loc[(slice(None),"睡袋"),:]#冒号不能省略
清理数据V2
1. 查看所有的列名
df.columns
Index([‘center’, ‘pathID’, ‘age’, ‘age_bin65’, ‘age_bin60’, ‘gender’,
‘smoking’, ‘family_history_ortcga_race’, ‘tumor_site’,
‘lowandno_differentiation_ortcga_radiation_therapy’,
‘adjuvant_chemotherapy’, ‘pT_clean’, ‘pN’, ‘AJCC_stage’, ‘DFS_yn’,
‘DFS_month’, ‘OS_yn’, ‘OS_month’],
dtype=‘object’)
df.count()
pandas 数据筛选与索取相关推荐
- 量化交易系列【2】Pandas数据筛选及处理相关操作
量化交易系列[2]Pandas数据筛选及处理相关操作 筛选数据 处理缺失值 删除空值dropna 补全缺失值fillna 排序函数 合并操作 去除重复数据 示例中使用的'000001.XSHE.csv ...
- python筛选出csv满足某条件的行_python之pandas数据筛选和csv操作
本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c0 0 2 4 1 6 8 10 2 12 14 16 3 ...
- 【Python学习系列二十二】pandas数据筛选和排序
在Pandas中通过.sort和.loc函数也可以实现这两 个功能..sort函数可以实现对数据表的排序操作,.loc函数可以实现对数据表的筛选操作. 1.排序 sort函数主要包含6个参数:colu ...
- 【一日一技】超简单的Pandas数据筛选方法
首先来定义一个DataFrame import pandas as pd datas = [ {'name': '王小一', 'hight': 171, 'weight': 100}, {'name' ...
- pandas数据筛选与修改
1.读入东京奥运会奖牌数据 import pandas as pd data = pd.read_csv("东京奥运会奖牌数据.csv") data 2.修改列名将原 df 列名 ...
- python筛选csv数据_pandas数据筛选和csv操作的实现方法
1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 42 44 46 8 4 ...
- pandas数据预处理(字段筛选、query函数进行数据筛选、缺失值删除)、seaborn可视化分面图(facet)、seaborn使用Catplot可视化分面箱图(Faceted Boxplot)
pandas数据预处理(字段筛选.query函数进行数据筛选.缺失值删除).seaborn可视化分面图(facet).seaborn使用Catplot可视化分面箱图(Faceted Boxplot) ...
- Pandas实用技能,数据筛选query函数详细介绍
来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 Pandas 可以说是 在Python数据科学领域应用最为广泛的工具之一. Pandas是一种高效的数据处理库,它以 datafr ...
- Pandas常见筛选数据的五种方法其一逻辑筛选。看见必懂,懂者必会,会者必加分
前言:Pandas的数据操作中,最基本的就是操作的筛选了,但是对新学员来说的这又是一个难点,因为方法比较多,不容易记.在此总结一下pandas中的一些常用的数据筛选操作. 逻辑筛选数据:切片( ...
最新文章
- java fx alert_javaFx:使用弹出对话框 Alert
- 作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔
- mysql 英文占几个字符_MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚...
- pygame碰撞检测
- JWT 实现微服务鉴权
- android界面实现框架内页面跳转_KVM虚拟化管理平台的实现
- [Swift]LeetCode682. 棒球比赛 | Baseball Game
- 软件工程---08.软件测试
- 原生仿微信社交社区即时通讯聊天双端APP源码开源带PC客户端文档说明
- 文本文件与二进制文件
- ●POJ 1228 Grandpas Estate
- 上广电D2527彩电兴暗故障检修
- Atitit atimvc rest原理与自定义实现t33 目录 1.1. Web.xml	1 1.2. MvcFilter	2 1.3. jerserMeth	4 原理 过滤器 过滤即可
- unicode编码对照表
- QQ在线客服聊天功能
- 基于51单片机220V交流电流检测系统过流阈值报警方案原理图
- CUDA +cnn安装
- GPU通用计算与CUDA
- 常见电容引脚正负极识别大全
- siri快捷指令_入门的最佳Siri快捷方式
热门文章
- 中国剩余定理(Chinese remainder theorem, CRT)
- th和td标签的区别?
- 数据结构之图的基本概念
- python毕业设计作品基于django框架 电子书阅读系统毕设成品(6)开题答辩PPT
- 基于C语言实现PCM音频流或音频文件重采样(48K到16K)
- 听说你的SAP GUI会崩溃闪退?
- 一个无缝衔接的css动画
- Windows下MySQL 解压版安装教程
- java 异步调用 事务_深入理解Spring注解@Async解决异步调用问题
- 雨林木风 Ghost Win7 SP1 快速装机版 (32位)