python 数据处理操作整理

本文整理了Python数据处理的一些常用操作,包括xlsx文件转csv,使用numpy进行数据标准化,计算众数,按list索引取值,NumPy切片操作,以及在pandas中选择数值型或object属性及分析属性相关性。

xlsx转csv

import pandas as pd
def xlsx_to_csv_pd():
    data_xls = pd.read_excel("E:\\temp\\asp.xlsx", index_col=0)
    data_xls.to_csv("E:\\temp\\Aspectj1.csv", encoding='utf-8')
xlsx_to_csv_pd()

numpy标准化

每个特征进行标准化,均值为0,方差为1

>>> a = np.arange(60).reshape((6,10))
>>> a
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
       [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]])

a -= a.mean(axis = 0)
a /= a.std(axis = 0)

求众数

忽略众数数目相同的情况

arr = array([1, 1, 1, 2, 3, 4, 1, 5])
# return_inverse=True表示返回旧列表元素在新列表中的位置,并以列表形式储存在p中。
 u, indices = np.unique(arr, return_inverse=True)
 # np.bincount(x) 返回 0到max(x)+1每个值出现的次数
 # 索引是[0, 1, ... , max(x) + 1], 列表中value是索引值出现的次数
 xx = u[np.argmax(np.bincount(indices))]

按list取数

有一个二维数组arr,一个list,现在希望从arr的第i行中取出以list[i]为索引对应的值

# 取cc[i][list[i]]
>>> cc
array([[ 174,   14,  366],
       [  14,  366, 1230],
       [  30,  126,  734]])
# 我想取 cc 第一行 in的x = 1 的值, cc 第二行 index = 0 的值
>>> cc[range(3), [1,0,2]]
array([ 14,  14, 734])

NumPy切片

numpy切片操作,返回的并不是原数组的一份copy,而是原数组的视图。

>>> arr2
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr3 = arr2[5:8] # arr3 相当于原数组的视图,对arr3操作的会体现在原数组上
>>> arr3
array([5, 6, 7])
>>> arr3[0] = -11
>>> arr3
array([-11,   6,   7])
>>> arr2
array([  0,   1,   2,   3,   4, -11,   6,   7,   8,   9])
>>> arr4 = arr2[5:8].copy() ######
>>> arr4[0] = -1111
>>> arr2
array([  0,   1,   2,   3,   4, -11,   6,   7,   8,   9])

df中选择数值型或object的属性

numeric_feats = all_data.dtypes[all_data.dtypes != "object"].index
numeric_data = all_data[numeric]

pandas 属性相关性

我想要查看数据集中其他属性与price属性的相关性。

train = pd.DataFrame({‘Price’ : [], '': [] , }) # 一个dataframe
train.corr()['Price'].sort_values(ascending = False) # 按升序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值