Python之pandas基础

Pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包,类似于 Numpy 的核心是 ndarray,pandas 的两个主要数据结构是 Series 和 DataFrame 。

from pandas import Series, DataFrame

import pandas as pd

import numpy as np

Series是一种类似与一维数组的对象,由一组数据以及与之相关的索引组成
notnull() isnull() 用于检测缺失数据

obj = Series([4,7,-5,3])#系统产生默认索引0N-1

obj2 = Series([4,7,-5,3,], index=['d', 'b', 'a', 'c'])#通过index设定索引

obj2
d    4
b    7
a   -5
c    3
dtype: int64
sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}#字典创建Series

obj3 = Series(sdata)

states = ['Calfornia','Ohio','Oregon','Texas']

obj4 = Series(sdata, index=states)#双字典创建Series自动合并相同项

obj4.notnull()
Calfornia    False
Ohio          True
Oregon        True
Texas         True
dtype: bool

DataFrame是一个表格型的数据结构,每列可以是不同的值类型。

data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],

       'year':[2000,2001,2002,2001,2002],

       'pop':[1.5,1.7,3.6,2.4,2.9]}

frame = DataFrame(data)

DataFrame(data,columns=['year','state','pop'])#指定列标顺序
    year    state   pop
0   2000    Ohio    1.5
1   2001    Ohio    1.7
2   2002    Ohio    3.6
3   2001    Nevada  2.4
4   2002    Nevada  2.9

重新索引reindex()
reindex的插值method选项:ffill或pad前向填充值 bfill或backfill后向填充值

reindex函数的参数:
index 用作索引的新序列
method 插值方式
fill_value 在重新索引的过程中,需要引入缺失值时使用的代替值
limit 前向或后向填充时的最大填充量
copy 默认为True,无论如何都复制;如果为False,则新旧相等就不复制

obj2 = Series([4,7,-5,3], index=['d', 'b', 'a', 'c'])#Serise结构

obj2 = obj2.reindex(['a','b','c','d','e'])

obj2
a   -5.0
b    7.0
c    3.0
d    4.0
e    NaN
dtype: float64

丢弃指定轴上的项 drop()

obj2.drop('c')
a   -5.0
b    7.0
d    4.0
e    NaN
dtype: float64
frame.drop('pop',axis=1)#axis=1表示列
    state   year
0   Ohio    2000
1   Ohio    2001
2   Ohio    2002
3   Nevada  2001
4   Nevada  2002

DataFrame的索引选项:
obj[val] 选取DataFrame的单个列或一组列
obj.ix[val] 选取DataFrame的单个行或一组行
obj.ix[:,val] 选取单个列或列子集
obj,ix[val1,val2] 同时选取行和列

算术运算和数据对齐
add + sub - div / mul * 使用函数在运算无对应时可填充数值

df1 = DataFrame(np.arange(12.).reshape((3,4)), columns=list('abcd'))

df2 = DataFrame(np.arange(20.).reshape((4,5)), columns=list('abcde'))

df1.add(df2, fill_value=0)
    a   b   c   d   e
0   0.0     2.0     4.0     6.0     4.0
1   9.0     11.0    13.0    15.0    9.0
2   18.0    20.0    22.0    24.0    14.0
3   15.0    16.0    17.0    18.0    19.0
arr = np.arange(12.).reshape((3,4))

arr - arr[0]

array([[ 0.,  0.,  0.,  0.],
       [ 4.,  4.,  4.,  4.],
       [ 8.,  8.,  8.,  8.]])

frame = DataFrame(np.arange(12.).reshape((4,3)), columns=list('bde'), 

                  index=['Utah', 'Ohio', 'Texas', 'Oregon'])

series = frame.ix[0]   #取frame的第一行

frame - series
    b   d   e
Utah    0.0     0.0     0.0
Ohio    3.0     3.0     3.0
Texas   6.0     6.0     6.0
Oregon  9.0     9.0     9.0

函数的应用与映射

f = lambda x: x.max() - x.min()  #自定义函数公式

frame.apply(f)

frame.apply(f,axis=1)
Utah      2.0
Ohio      2.0
Texas     2.0
Oregon    2.0
dtype: float64

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值