您的位置:首页 > 其它

Pandas DataFrame 行列操作

2017-08-09 19:22 633 查看
以下实验中的train.csv文件使用Digit Recognizer中的训练数据集

import pandas as pd  # 引用pandas库
import numpy as np # 引用Numpy库
dataset = pd.read_csv("../data/train.csv") #读取csv文件


dataset.head()  # 查看数据前5行




# 随机构造一个5行3列的DataFrame数据,列名分别定义为‘ABC’,行索引间隔为2
df = pd.DataFrame(np.arange(15).reshape(5,3),index=list('abcde'),columns=list('ABC')) #

A   B   C
a   0   1   2
b   3   4   5
c   6   7   8
d   9  10  11
e  12  13  14


df.irow(0) #取df的第一行, FutureWarning: irow(i) is deprecated. Please use .iloc[i]

A    0
B    1
C    2
Name: a, dtype: int32

df.iloc[0] #取df的第一行

A    0
B    1
C    2
Name: a, dtype: int32

df.iloc[[2]] # 按照index的序值,选择第3行
A  B  C
c  6  7  8


df.loc[['b']] # 按照index的具体值,选择索引为'b'的那一行
A  B  C
b  3  4  5


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

a     0
b     3
c     6
d     9
e    12
Name: A, dtype: int32


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

a    1.470787
b    0.253183
c   -0.061858
d    0.203922
e    0.364775
Name: A, dtype: float64


df[['A']] # 选择表格中的'A'列,返回的是DataFrame类型
A
a   0
b   3
c   6
d   9
e  12


df[['A','B']] # 选择表格中的'A'、'B'列

A   B
a   0   1
b   3   4
c   6   7
d   9
cea6
10
e  12  13


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

A  B  C
a  0  1  2
b  3  4  5


df[1:2] #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
#如果采用data[1]则报错

A  B  C
b  3  4  5

df.ix[1:2] #返回第2行的第三种方法,返回的是DataFrame,跟df[1:2]同

A  B  C
b  3  4  5


df['a':'b'] #利用index值进行切片,返回的是**前闭后闭**的DataFrame,
#即末端是包含的

A  B  C
a  0  1  2
b  3  4  5


df.icol(0) # 取df的第一列 ,FutureWarning: icol(i) is deprecated. Please use .iloc[:,i]

a     0
b     3
c     6
d     9
e    12
Name: A, dtype: int32

df.iloc[:,0] #取df的第一列

a     0
b     3
c     6
d     9
e    12
Name: A, dtype: int32


df.tail(3) #返回df的后3行数据,默认为后五行,需要后十行则df.tail(10)

A   B   C
c   6   7   8
d   9  10  11
e  12  13  14


df.iloc[-1] #选取DataFrame最后一行,返回的是Series

A    12
B    13
C    14
Name: e, dtype: int32

df.iloc[-1:] #选取DataFrame最后一行,返回的是DataFrame

A   B   C
e  12  13  14


df.loc['a',['B','C']] #返回‘a’行'B'、'C'列,这种用于选取行索引列索引已知

B    1
C    2
Name: a, dtype: int32


df.iat[1,1] #选取第二行第二列,用于已知行、列位置的选取。
4


df.ix[:,[0,1,2]] #不知道列名只知道列的位置时

A   B   C
a   0   1   2
b   3   4   5
c   6   7   8
d   9  10  11
e  12  13  14


选择DataFrame中列名以XXX开头的列:

import pandas as pd
import numpy as np

df = pd.DataFrame({'foo.aa': [1, 2.1, np.nan, 4.7, 5.6, 6.8],
'foo.fighters': [0, 1, np.nan, 0, 0, 0],
'foo.bars': [0, 0, 0, 0, 0, 1],
'bar.baz': [5, 5, 6, 5, 5.6, 6.8],
'foo.fox': [2, 4, 1, 0, 0, 5],
'nas.foo': ['NA', 0, 1, 0, 0, 0],
'foo.manchu': ['NA', 0, 0, 0, 0, 0],})

df[df.columns[pd.Series(df.columns).str.startswith('foo')]]
>   foo.aa  foo.bars  foo.fighters  foo.fox foo.manchu
0     1.0         0             0        2         NA
1     2.1         0             1        4          0
2     NaN         0           NaN        1          0
3     4.7         0             0        0          0
4     5.6         0             0        0          0
5     6.8         1             0        5          0


参考引用:http://blog.csdn.net/xiaodongxiexie/article/details/53108959
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: