Pandas

Pandas

可以看作字典形式的numpy,因为你可以给它的行、它的列命名字。
两种主要数据类型:series和dataframe
Series:一维的数据类型。
组成:标签+数据
可看作带标签的元素组成的numpy数组
标签:数字、字符
DataFrame:二维、表格型的数据结构。
含有一组有序的列(类似于index)
大致可以看成共享同一个index的Series的集合

import pandas as pd
import numpy as np

Series

Series:一维的数据类型。
组成:标签+数据
可看作带标签的元素组成的numpy数组
标签:数字、字符

s=pd.Series([5,3,6,np.nan,'December'])
s
0           5
1           3
2           6
3         NaN
4    December
dtype: object
#可以指定标签index
s1=pd.Series([5,3,6,np.nan,'December'], index=['a','b','c','d','e'])
s1
a           5
b           3
c           6
d         NaN
e    December
dtype: object
#访问数据
s1['e']
'December'
#查看标签index
s1.index
Index([u'a', u'b', u'c', u'd', u'e'], dtype='object')
#查看数据
s1.values
array([5, 3, 6, nan, 'December'], dtype=object)
#对数据进行一些操作
s1*2
a                  10
b                   6
c                  12
d                 NaN
e    DecemberDecember
dtype: object
#数据对齐
data={'Beijing':8000, "xi'an":5000, 'Hangzhou':8000, "xi'an":6000}
data_index=["xi'an",'Shenzhen','Hangzhou']
s2=pd.Series(data, data_index)
s2
xi'an       6000.0
Shenzhen       NaN
Hangzhou    8000.0
dtype: float64

NaN: not a number值缺失

#查看哪些值缺失:
pd.isnull(s2)
xi'an       False
Shenzhen     True
Hangzhou    False
dtype: bool
s.head(4)
0      5
1      3
2      6
3    NaN
dtype: object
s.tail(3)
2           6
3         NaN
4    December
dtype: object

DataFrame

DataFrame对象可以由列表、元组、字典,ndarray,Series,文件,等创建
注意:默认列号、列号都是从0开始的DataFrame:二维、表格型的数据结构。
含有一组有序的列(类似于index)
大致可以看成共享同一个index的Series的集合由字典创建

data={'city':['beijing','shenzhen','hangzhou'],'rank':list(range(1,4)), 'pay':[9000,8000,7500]}
df0= pd.DataFrame(data)
df0
citypayrank
0beijing90001
1shenzhen80002
2hangzhou75003
#修改一下index
df0.index=range(1,4)
df0
citypayrank
1beijing90001
2shenzhen80002
3hangzhou75003
#查看列的索引
df0.columns
Index([u'city', u'pay', u'rank'], dtype='object')
#查看数据
df0.values
array([['beijing', 9000L, 1L],
       ['shenzhen', 8000L, 2L],
       ['hangzhou', 7500L, 3L]], dtype=object)
#像字典一样查看某一列 按index查
df0['city']
1     beijing
2    shenzhen
3    hangzhou
Name: city, dtype: object
#也可以这样
df0.city
1     beijing
2    shenzhen
3    hangzhou
Name: city, dtype: object
#像字典一样添加一个列
df0['occupation']='IT'
df0
citypayrankoccupation
1beijing90001IT
2shenzhen80002IT
3hangzhou75003IT
df0['password']='admin'
df0
citypayrankoccupationpassword
1beijing90001ITadmin
2shenzhen80002ITadmin
3hangzhou75003ITadmin
#修改某一标签(某一列)数据
df0['occupation']=['python','c++','java']
df0
citypayrankoccupationpassword
1beijing90001pythonadmin
2shenzhen80002c++admin
3hangzhou75003javaadmin
#删除某一标签(某一列)数据
del df0['password']
df0
citypayrankoccupation
1beijing90001python
2shenzhen80002c++
3hangzhou75003java
df0[1] #KeyError 不能这样访问某一行
df0.iloc[2,] #访问第3行 即行号index为2
city          hangzhou
pay               7500
rank                 3
occupation        java
Name: 3, dtype: object
df0.iloc[2]
city          hangzhou
pay               7500
rank                 3
occupation        java
Name: 3, dtype: object
#选择表格中的某个区域
#iloc[行]
#iloc[行,列] 
#[]里的行、列都是数字 如果是索引是字符的话,可以用loc
#注意这样查找的话,行号和列号是从0开始的
df0.iloc[1, 0] #行号1和列号0
'shenzhen'
#前两行
df0.iloc[:2]
citypayrankoccupation
1beijing90001python
2shenzhen80002c++
#取前两行
df0.head(2)
citypayrankoccupation
1beijing90001python
2shenzhen80002c++
df0.iloc[:2, -2:] #前2行 后2列
rankoccupation
11IT
22IT
#转置
df0.T
123
citybeijingshenzhenhangzhou
pay900080007500
rank123
occupationpythonc++java

DataFrame统计功能

df0
citypayrankoccupation
1beijing90001python
2shenzhen80002c++
3hangzhou75003java
#找最低工资
df0['pay'].min()
#或者df0.pay.min()
7500
df0.pay>=8000
1     True
2     True
3    False
Name: pay, dtype: bool
#找工资大于8000的记录
df0[df0.pay>=8000]
citypayrankoccupation
1beijing90001python
2shenzhen80002c++
#找工资大于8000的记录的城市
df0[df0.pay>=8000].city
1     beijing
2    shenzhen
Name: city, dtype: object

再看一个创建DataFrame的例子

df3=pd.DataFrame({'date':pd.Timestamp('20180909'),
                  'city':['beijing',"xi'an",'shanghai','shenzhen','hangzhou','chengdu'],
                 'number':pd.Series(100, list(range(1,7))),
                 'out':'False'})
df3
citydatenumberout
1beijing2018-09-09100False
2xi'an2018-09-09100False
3shanghai2018-09-09100False
4shenzhen2018-09-09100False
5hangzhou2018-09-09100False
6chengdu2018-09-09100False

由numpy的array创建

df1=pd.DataFrame(np.random.randn(6,4))
df1
0123
0-0.6005140.157380-1.855644-0.327762
1-1.2553450.334783-1.703631-1.702041
21.4650830.594967-2.2395540.342270
3-1.018990-1.922670-0.077321-1.323573
40.109366-0.361239-0.030625-0.493886
51.5439870.668537-0.8698161.172763
df.values
df2=pd.DataFrame(np.random.randn(6,4),index=range(1,7), columns=['a','b','c','d'])
df2
abcd
10.3704220.761769-0.4719560.760529
20.561101-0.9777470.1439000.201052
3-0.415303-0.1430320.1690980.320532
40.7143360.687138-2.041781-1.778007
50.516654-0.294058-0.4088240.196900
6-0.4992400.2171500.6807872.619825
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值