数据处理笔记8:切片

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

参考: https://blog.****.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.****.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

.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()]

上一篇:Syntax Error: Error: Cannot find module 'node-sass'


下一篇:Python案例实操3-电影数据分析