数据处理笔记8:切片

经常用到切片操作, 所以把之前这方面的笔记汇总一下

参考: https://blog.csdn.net/weixin_39861498/article/details/109621657

a[start:end:step]

逆序

[0:4:-1]

前两个数字代表范围(取下标0,1,2,3), 最后一个代表步长, -1时倒序

取最后几个元素

a = [1, 2, 3, 4, 5, 6]

a[-1] # 6

a[-2:] # [5, 6]

a[:-2] # [1, 2, 3, 4]

a[-2:-4] # []

a[-4:-2] # [3, 4]

在正向截取列表时,start的索引位置必须在end的索引位置的前面

a = [1, 2, 3, 4, 5, 6]

a[:-3:-1] # [6, 5]

a[1::-1] # [2, 1]

a[-2:-3:-1] # [5]

a[-4:-3:-1] # []

a[1:4:-1] # []

a[1:-1:-1] # []

step为负时,start的索引位置必须在end的索引位置的后面

此处要修改TCA代码取最后50个:

        # 求特征变换矩阵A

        ind = np.argsort(w)#特征值排序后对应的索引(从小到大)

        A = V[:, ind[:-(tca.dim+1):-1]]#得到排序后特征值索引, 倒序取的最后dim(=30)列(最大的30个特征值), 从V中取其对应的特征向量组成矩阵

行列切片

单独取出一般情况的特征

tabel1=medical_data[['序列号','年龄','身高','体重','BMI','O型','A型','B型','AB型','RH(阳1阴0)','乙肝携带']]

 data_notnull = tabel1.loc[tabel1['身高'].notnull()]

参考:

https://blog.csdn.net/wanglingli95/article/details/78887771

data['one':'two']  #当用已知的行索引时为前闭后闭区间,这点与切片稍有不同。

data['w']  #选择表格中的'w'列,使用类字典属性,返回的是Series类型

data.w    #选择表格中的'w'列,使用点属性,返回的是Series类型

data[['w']]  #选择表格中的'w'列,返回的是DataFrame属性

为了确保loc是深拷贝, 辅助填充不影响原数据, 进行一个小尝试:

a=pd.DataFrame([[1,2]],columns=['one', 'two'])

b=a.loc[:,'one']

b['one']=0

print("a:\n",a)

a:

    one  two

0    1    2

取Dataframe一行

data[0:2] #返回第1行到第2行的所有行,前闭后开,包括前不包括后

data[1:2] #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,

如果采用data[1]则报错

 

.loc[]语法

np多维数组分片时不用加iloc, dataframe需要.

.loc[行标签名/[行标签名list],列标签名/[列标签名list]],即有两个输入参数,第一个指定行名,第二个指定列名。当只有一个参数时,默认是行名(即抽取整行),所有列都选中

原来用的Interpolate是插值, 这里使用中位数median. 参考:

https://www.cnblogs.com/kuangkuangduangduang/p/10257167.html

df.fillna(df.mean()['C':'E']) # 对 C 列到 E 列用平均值填充

dataframe.fillna({'code':'code', 'date':'date'}),第一个code和date分别表示列,后面的表示在该列填充的内容

df = df["YY"][0:4].mean()#求YY列前三项 前四项均值

tabel1=medical_data[['序列号','年龄','身高','体重','BMI','O型','A型','B型','AB型','RH(阳1阴0)','乙肝携带']]

 data_notnull = tabel1.loc[tabel1['身高'].notnull()]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值