学习Pandas(四)

英文原文: 04 - Lesson

在这一课,我们将回归一些基本概念。 我们将使用一个比较小的数据集这样你就可以非常容易理解我尝试解释的概念。 我们将添加列,删除列,并且使用不同的方式对数据进行切片(slicing)操作。 Enjoy!

# 导入需要的库
import pandas as pd
import sys
print('Python version ' + sys.version)
print('Pandas version: ' + pd.__version__)
    Python version 3.6.1 | packaged by conda-forge | (default, Mar 23 2017, 21:57:00) 
    [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]
    Pandas version: 0.19.2
# 我们的小数据集
d = [0,1,2,3,4,5,6,7,8,9]

# 创建一个 dataframe
df = pd.DataFrame(d)
df
0
00
11
22
33
44
55
66
77
88
99

# 我们把列名修改一下
df.columns = ['Rev']
df
Rev
00
11
22
33
44
55
66
77
88
99

# 我们增加一列
df['NewCol'] = 5
df
RevNewCol
005
115
225
335
445
555
665
775
885
995

# 修改一下新增加的这一列的值
df['NewCol'] = df['NewCol'] + 1
df
RevNewCol
006
116
226
336
446
556
666
776
886
996

# 我们可以删除列
del df['NewCol']
df
Rev
00
11
22
33
44
55
66
77
88
99

# 让我们增加几列。 译者注: 当使用 dataframe 没有的列时,dataframe 自动增加这个新列
df['test'] = 3
df['col'] = df['Rev']
df
Revtestcol
0030
1131
2232
3333
4434
5535
6636
7737
8838
9939

# 如果有需要,可以改变索引(index)的名字
i = ['a','b','c','d','e','f','g','h','i','j']
df.index = i
df
Revtestcol
a030
b131
c232
d333
e434
f535
g636
h737
i838
j939

通过使用 *loc,我们可以选择 dataframe 中的部分数据。

df.loc['a']

    Rev     0
    test    3
    col     0
    Name: a, dtype: int64
# df.loc[起始索引(包含):终止索引(包含)]
df.loc['a':'d']
Revtestcol
a030
b131
c232
d333

# df.iloc[起始索引(包含):终止索引(不包含)]
# 注意: .iloc 非常严格限制在整形的索引上. 从 [version 0.11.0] (http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#v0-11-0-april-22-2013) 开始有这个操作。
df.iloc[0:3]
Revtestcol
a030
b131
c232

也可以通过列名选择一列的值。

df['Rev']

    a    0
    b    1
    c    2
    d    3
    e    4
    f    5
    g    6
    h    7
    i    8
    j    9
    Name: Rev, dtype: int64
df[['Rev', 'test']]
Revtest
a03
b13
c23
d33
e43
f53
g63
h73
i83
j93

# df.ix[行范围, 列范围]
df.ix[0:3,'Rev']
a 0 b 1 c 2 Name: Rev, dtype: int64
df.ix[5:,'col']
f 5 g 6 h 7 i 8 j 9 Name: col, dtype: int64
df.ix[:3,['col', 'test']] #译者注: 用一个列的list来选择多个列
coltest
a03
b13
c23

还有一些方便的方法来选择最前或者最后的一些记录。

# 选择 top-N 个记录 (默认是 5 个)
df.head()
Revtestcol
a030
b131
c232
d333
e434
# 选择 bottom-N 个记录 (默认是 5 个)
df.tail()
Revtestcol
f535
g636
h737
i838
j939
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值