Python - Pandas

Pandas 的数据结构

Pandas有两个主要的数据结构:Series和DataFrame。
Series类似于一维数组的对象,它是由一组数据和与之相关的数据标签组成的。
DataFrame就像一个2维数组一样,只是它每一行每一列都有名字,这样它也就能更简单的进行应用了。

Series 的创建

In: s_obj = Series([4,7,2,-5], index=['d','b','a','c'])
Out:
d 4
b 7
c 2
a -5

DataFrame 的创建

DataFrame 是panda的一个典型的数据结构,它既有行索引又有列索引,每一列都可以看成一个独立的Series对象。可以通过下面的办法建立一个DataFrame

def GetDataFrame():
    data = DataFrame(np.arange(16).reshape((4,4)),
         index = ['ohio', 'colorado', 'utah', 'new york'],
         columns = ['one', 'two', 'three', 'four'])
    return data

这个DataFrame的输出是像下面这样的:
obj of DataFrame

DataFrame 的行索引和列索引
行索引:

In: df_obj.ix['ohio']

列索引:

In: df_obj.one

Series和DataFrame的一些基本功能

axis=1 的应用

f = lambda x: x.max() - x.min()
df_obj.apply(f) 对行进行操作 等价于 df_obj.applay(f, axis=0)
df_obj.apply(f, axis=1) 对列进行操作

重新索引以及自动填充

In: s_obj = Series([4.5,7.2,-5.3,3.6], index=['d','b','a','c'])
In: s_obj.reindex(['a','b','c','d','e'])

Out: 
a -5.3
b 7.2
c 3.6
d 4.5
e NaN

In: s_obj3 = Series(['blue', 'purple', 'yellow'], index=[0,2,4])
In: s_obj3.reindex(range(6), method='ffill')
Out: 
0 blue
1 blue
2 purple
3 purple
4 yellow
5 yellow

states = ['two','one','three','four']
df_obj.reindex(columns=states)

删除指定轴上的项

s_obj.drop('c')
s_obj.drop(['d','c'])
df_obj.drop(['colorado', 'ohio']) 删除两行
df_obj.drop('two', axis=1) 删除某一列

索引 选取和过滤

s_obj['b':'c'] 片索引
df_obj['two'] 选取单个列
df_obj[['three','one']] 选取一组列
df_obj.ix[:, 'two'] 选取单个列 (上面的两个列操作可以用这个ix方法)
df_obj.ix['ohio'] 选取单行
df_obj.ix['ohio', ['one','two']] 选取单个行两个列
所以终结下来,DataFrame的行列索引操作可以用一个ix方法实现。
obj.ix[val] 不加逗号表示选取一个行
obj.ix[:,val] :,表示选所有的行,再选列
obj.ix[val1,val2] 同时选取行和列  

排序和排名
按行或列的索引进行排序

df_obj.sort_index() 对行索引排序,按升序排。
df_obj.sort_index(axis=1) 对列索引排序
df_obj.sort_index(axis=1, ascending=False) 按降序排 

按值进行排序

s_obj.order()
df_obj.sort_index(by='three') 按哪列的值进行排序就by哪列名

DataFrame与Series之间的运算

Out: df_obj
        b   d   e
utah    0   1   2
ohio    3   4   5
texas   6   7   8

In: s_obj = df_obj.ix[0]
Out: s_obj
b  0
d  1
e  2
Name: utah

In: df_obj - s_obj
Out:
        b   d   e
utah    0   0   0
ohio    3   3   3
texas   6   6   6

唯一性

df_obj.index.is_unique
df_obj.columns.is_unique

添加一列

s_obj_new = Series([-1.2,-1.5,-2], index=['ohio', 'colorado', 'utah', 'new york'])
df_obj['five'] = s_obj_new 创建一新列名为five

添加一行

s_obj_new = Series([1,2,3,4], index=['one','two','three','four'])
df_obj.ix['london'] = s_boj_new

求和

df_obj.sum() 求每列的和
df_obj.sum(axis=1) 求每行的和 
df_obj.mean() 每列的平均值
df_obj.mean(axis=1) 每行的平均值

统计汇总

df_obj.describe()

statistic describe

相关性 correlation

df_obj.two.corr(df_obj.three)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值