转载于博客园
pandas的数据形式

基本操作

  1. 更改dataFrame中的某一列的类型.astype()方法
import pandas as pd
df['列名'] = df['列名'].astype(np.int64)
  1. 更改Series中的类型,同样使用.astype()
  2. 在读取的时候更改
pd.read_csv("data", dtype = {"colname" : float})
  1. 删除pandas DataFrame的某一/几列:
    方法1:
del DF['column-name']

方法2:

DF.drop('column_name',axis=1, inplace=True)
  1. 更改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)
  1. 插入新增列、行
# 类似与字典的赋值
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)
  1. 更改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']
  1. 将空元素填充为固定值.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 数据筛选与索取相关推荐

  1. 量化交易系列【2】Pandas数据筛选及处理相关操作

    量化交易系列[2]Pandas数据筛选及处理相关操作 筛选数据 处理缺失值 删除空值dropna 补全缺失值fillna 排序函数 合并操作 去除重复数据 示例中使用的'000001.XSHE.csv ...

  2. 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 ...

  3. 【Python学习系列二十二】pandas数据筛选和排序

    在Pandas中通过.sort和.loc函数也可以实现这两 个功能..sort函数可以实现对数据表的排序操作,.loc函数可以实现对数据表的筛选操作. 1.排序 sort函数主要包含6个参数:colu ...

  4. 【一日一技】超简单的Pandas数据筛选方法

    首先来定义一个DataFrame import pandas as pd datas = [ {'name': '王小一', 'hight': 171, 'weight': 100}, {'name' ...

  5. pandas数据筛选与修改

    1.读入东京奥运会奖牌数据 import pandas as pd data = pd.read_csv("东京奥运会奖牌数据.csv") data 2.修改列名将原 df 列名  ...

  6. 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 ...

  7. pandas数据预处理(字段筛选、query函数进行数据筛选、缺失值删除)、seaborn可视化分面图(facet)、seaborn使用Catplot可视化分面箱图(Faceted Boxplot)

    pandas数据预处理(字段筛选.query函数进行数据筛选.缺失值删除).seaborn可视化分面图(facet).seaborn使用Catplot可视化分面箱图(Faceted Boxplot) ...

  8. Pandas实用技能,数据筛选query函数详细介绍

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 Pandas 可以说是 在Python数据科学领域应用最为广泛的工具之一. Pandas是一种高效的数据处理库,它以 datafr ...

  9. Pandas常见筛选数据的五种方法其一逻辑筛选。看见必懂,懂者必会,会者必加分

       前言:Pandas的数据操作中,最基本的就是操作的筛选了,但是对新学员来说的这又是一个难点,因为方法比较多,不容易记.在此总结一下pandas中的一些常用的数据筛选操作.  逻辑筛选数据:切片( ...

最新文章

  1. java fx alert_javaFx:使用弹出对话框 Alert
  2. 作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔
  3. mysql 英文占几个字符_MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚...
  4. pygame碰撞检测
  5. JWT 实现微服务鉴权
  6. android界面实现框架内页面跳转_KVM虚拟化管理平台的实现
  7. [Swift]LeetCode682. 棒球比赛 | Baseball Game
  8. 软件工程---08.软件测试
  9. 原生仿微信社交社区即时通讯聊天双端APP源码开源带PC客户端文档说明
  10. 文本文件与二进制文件
  11. ●POJ 1228 Grandpas Estate
  12. 上广电D2527彩电兴暗故障检修
  13. Atitit atimvc rest原理与自定义实现t33 目录 1.1. Web.xml 1 1.2. MvcFilter 2 1.3. jerserMeth 4 原理 过滤器 过滤即可
  14. unicode编码对照表
  15. QQ在线客服聊天功能
  16. 基于51单片机220V交流电流检测系统过流阈值报警方案原理图
  17. CUDA +cnn安装
  18. GPU通用计算与CUDA
  19. 常见电容引脚正负极识别大全
  20. siri快捷指令_入门的最佳Siri快捷方式

热门文章

  1. 中国剩余定理(Chinese remainder theorem, CRT)
  2. th和td标签的区别?
  3. 数据结构之图的基本概念
  4. python毕业设计作品基于django框架 电子书阅读系统毕设成品(6)开题答辩PPT
  5. 基于C语言实现PCM音频流或音频文件重采样(48K到16K)
  6. 听说你的SAP GUI会崩溃闪退?
  7. 一个无缝衔接的css动画
  8. Windows下MySQL 解压版安装教程
  9. java 异步调用 事务_深入理解Spring注解@Async解决异步调用问题
  10. 雨林木风 Ghost Win7 SP1 快速装机版 (32位)