MOOC《数据分析与展示》之Pandas 课堂笔记


#python常用基础包
import matplotlib.pyplot as plt
import pylab as py
import math as m
import scipy.stats as stats
import numpy as np
import pandas as pd

pandas的一维数据类型:Series

a=pd.Series([9,8,7,6])
a
0    9
1    8
2    7
3    6
dtype: int64

自定义索引

b=pd.Series([4,5,7,9],index=['a','b','c','d'])
b
a    4
b    5
c    7
d    9
dtype: int64

pandas的多维维数据类型:DataFrame

d=pd.DataFrame(np.arange(10).reshape(2,5))
d
  0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9

使用字典对象创建DataFrame

dt={'one':pd.Series([1,2,3],index=['a','b','c']) ,'two':pd.Series([9,8,7,6],index=['a','b','c','d'])}
d=pd.DataFrame(dt)
d
  one two
a 1.0 9
b 2.0 8
c 3.0 7
d NaN 6
pd.DataFrame(dt,index=['b','c'])
  one two
b 2 8
c 3 7
d1={'one':[1,2,3,4],'two':[9,8,7,6]}
d=pd.DataFrame(d1,index=['a','b','c','d'])
d
  one two
a 1 9
b 2 8
c 3 7
d 4 6
dl={'城市':['北京','上海','广州','深圳','沈阳'],
    '环比':[101.5,101.2,101.3,102.0,100.1],
    '同比':[120.7,127.3,119.4,140.9,101.4],
    '定基':[121.4,127.8,120.0,145.5,101.6]}
d=pd.DataFrame(dl,index=['c1','c2','c3','c4','c5'])
d
  同比 城市 定基 环比
c1 120.7 北京 121.4 101.5
c2 127.3 上海 127.8 101.2
c3 119.4 广州 120.0 101.3
c4 140.9 深圳 145.5 102.0
c5 101.4 沈阳 101.6 100.1

获取DataFrame里的数据

d.index
Index(['c1', 'c2', 'c3', 'c4', 'c5'], dtype='object')
d.ix['c1']
同比    120.7
城市       北京
定基    121.4
环比    101.5
Name: c1, dtype: object
d['城市']
c1    北京
c2    上海
c3    广州
c4    深圳
c5    沈阳
Name: 城市, dtype: object
d.values
array([[120.7, '北京', 121.4, 101.5],
       [127.3, '上海', 127.8, 101.2],
       [119.4, '广州', 120.0, 101.3],
       [140.9, '深圳', 145.5, 102.0],
       [101.4, '沈阳', 101.6, 100.1]], dtype=object)
d['城市']['c1']
'北京'

调整列序

d=d.reindex(columns=['城市','环比','同比','定基'])
d
  城市 环比 同比 定基
c1 北京 101.5 120.7 121.4
c2 上海 101.2 127.3 127.8
c3 广州 101.3 119.4 120.0
c4 深圳 102.0 140.9 145.5
c5 沈阳 100.1 101.4 101.6

Index增删操作

newc=d.columns.insert(4,'新增')
dd=d.reindex(columns=newc,fill_value=20)
dd
  城市 环比 同比 定基 新增
c1 北京 101.5 120.7 121.4 20
c2 上海 101.2 127.3 127.8 20
c3 广州 101.3 119.4 120.0 20
c4 深圳 102.0 140.9 145.5 20
c5 沈阳 100.1 101.4 101.6 20
nc=d.columns.delete(2)
ni=d.index.insert(5,'c0').delete(2)
nd=d.reindex(index=ni,columns=nc,method='bfill')
nd
  城市 环比 定基
c1 北京 101.5 121.4
c2 上海 101.2 127.8
c4 深圳 102.0 145.5
c5 沈阳 100.1 101.6
c0 北京 101.5 121.4

drop()直接删除索引对象(axis默认为0)

nd.drop('c1',axis=0)
  城市 环比 定基
c2 上海 101.2 127.8
c4 深圳 102.0 145.5
c5 沈阳 100.1 101.6
c0 北京 101.5 121.4
nd.drop('城市',axis=1)
  环比 定基
c1 101.5 121.4
c2 101.2 127.8
c4 102.0 145.5
c5 100.1 101.6
c0 101.5 121.4

数据类型的算数运算

#Index不同值的二维DataFrame间的运算
a=pd.DataFrame(np.arange(12).reshape(3,4))
b=pd.DataFrame(np.arange(20).reshape(4,5))
a+b
  0 1 2 3 4
0 0.0 2.0 4.0 6.0 NaN
1 9.0 11.0 13.0 15.0 NaN
2 18.0 20.0 22.0 24.0 NaN
3 NaN NaN NaN NaN NaN
a.mul(b,fill_value=1)
  0 1 2 3 4
0 0.0 1.0 4.0 9.0 4.0
1 20.0 30.0 42.0 56.0 9.0
2 80.0 99.0 120.0 143.0 14.0
3 15.0 16.0 17.0 18.0 19.0
#DataFrame和Series间的运算
c=pd.Series(np.arange(4))
b+c
  0 1 2 3 4
0 0.0 2.0 4.0 6.0 NaN
1 5.0 7.0 9.0 11.0 NaN
2 10.0 12.0 14.0 16.0 NaN
3 15.0 17.0 19.0 21.0 NaN
b.sub(c,axis=0)
  0 1 2 3 4
0 0 1 2 3 4
1 4 5 6 7 8
2 8 9 10 11 12
3 12 13 14 15 16

比较运算(只能同Index值的DataFrame,或广播运算)

bb=b+c
b>=bb
  0 1 2 3 4
0 True False False False False
1 True False False False False
2 True False False False False
3 True False False False False

数据的排序

sort_index()

b=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
  0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
b.sort_index(axis=1,ascending=0)
  4 3 2 1 0
c 4 3 2 1 0
a 9 8 7 6 5
d 14 13 12 11 10
b 19 18 17 16 15

sort_values

b.sort_values(3,axis=0,ascending=False)
  0 1 2 3 4
b 15 16 17 18 19
d 10 11 12 13 14
a 5 6 7 8 9
c 0 1 2 3 4

基本统计分析

describe()

c=pd.Series([9,8,7,6],index=['a','b','c','d'])
c.describe()
count    4.000000
mean     7.500000
std      1.290994
min      6.000000
25%      6.750000
50%      7.500000
75%      8.250000
max      9.000000
dtype: float64
c.describe()['mean']
7.5
b.describe()
  0 1 2 3 4
count 4.000000 4.000000 4.000000 4.000000 4.000000
mean 7.500000 8.500000 9.500000 10.500000 11.500000
std 6.454972 6.454972 6.454972 6.454972 6.454972
min 0.000000 1.000000 2.000000 3.000000 4.000000
25% 3.750000 4.750000 5.750000 6.750000 7.750000
50% 7.500000 8.500000 9.500000 10.500000 11.500000
75% 11.250000 12.250000 13.250000 14.250000 15.250000
max 15.000000 16.000000 17.000000 18.000000 19.000000
b.describe()[0]['max']
15.0

累计统计分析

b.cumsum(axis=1)
  0 1 2 3 4
c 0 1 3 6 10
a 5 11 18 26 35
d 10 21 33 46 60
b 15 31 48 66 85
b.rolling(3).sum()
  0 1 2 3 4
c NaN NaN NaN NaN NaN
a NaN NaN NaN NaN NaN
d 15.0 18.0 21.0 24.0 27.0
b 30.0 33.0 36.0 39.0 42.0

相关性实例:房价增幅与M2增幅相关性

hprice=pd.Series([3.04,22.93,12.75,22.6,12.33],index=['2008','2009','2010','2011','2012'])
m2=pd.Series([8.18,18.38,9.13,7.82,6.69],index=['2008','2009','2010','2011','2012'])
hprice.plot(marker='o')
m2.plot(marker='*')
plt.xlabel('年份',fontproperties='SimHei',fontsize=15)
plt.ylabel(r'增幅比例%',fontproperties='SimHei',fontsize=15)
plt.show()
hprice.corr(m2)
0.5239439145220387
a = pd.Series([9, 8, 7, 6], ['a', 'b', 'c', 'd'])
a.index.dtype
dtype('O')

你可能感兴趣的:(Python学习笔记)