在进行kaggle比赛或其他数据挖掘比赛的时候,经常使用pandas进行数据的分析,以及处理。本文将我在比赛中用到的一些pandas分析的常用操作进行整理。
test = pd.read_csv('./jinnan_round1_testA_20181227.csv', encoding = 'gb18030')
读取CSV文件是最常用的操作,其中,参数包括文件名,和编码方式,其余参数没有列出来。
对于只含有英文的数据集,不需要特别的encoding,含有中文的需要gb18030的编码方式。
读取完之后的返回DataFrame格式,其中有很多内置函数,
train = pd.read_csv('./jinnan_round1_train_20181227.csv', encoding = 'gb18030')
.shape:查看dataframe的维数
train.shape
(1396, 44)
.columns:查看dataframe的列名
train.columns
Index(['样本id', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10',
'A11', 'A12', 'A13', 'A14', 'A15', 'A16', 'A17', 'A18', 'A19', 'A20',
'A21', 'A22', 'A23', 'A24', 'A25', 'A26', 'A27', 'A28', 'B1', 'B2',
'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10', 'B11', 'B12', 'B13',
'B14', '收率'],
dtype='object')
.values:将dataframe转换成矩阵形式(这个经常用到,之后就可以用列表的方式提取)
train.values
[['sample_1528' 300 nan ... 0.15 400 0.879]
['sample_1698' 300 nan ... 0.15 400 0.902]
['sample_639' 300 nan ... 0.15 400 0.9359999999999999]
...
['sample_1654' 300 nan ... 0.15 400 0.8909999999999999]
['sample_560' 300 nan ... 0.15 400 0.902]
['sample_685' 300 nan ... 0.15 400 0.9129999999999999]]
转成矩阵之后配合np.sort(train[target_col].values)可以按顺序排列
.dtypes:将dataframe中每个列索引的格式输出
train.dtypes
B8 float64
B9 object
B10 object
B11 object
B12 float64
B13 float64
B14 int64
收率 float64
dtype: object
.drop()函数
df.drop(['B3', 'B13', 'A13', 'A18', 'A23'], axis=1, inplace=True)
删除dataframe中固定的索引列。
删除的索引以列表形式提出来。
参数axis表示删除的是列还是行,0表示行,1表示列。
参数inplace表示是否覆盖原变量。
for df in [train, test]:
df.drop(['B3', 'B13', 'A13', 'A18', 'A23'], axis=1, inplace=True)
可以这样子同时操作多个dataframe,并进行替换。