pandas基础(1)

导包

import numpy as np
import pandas as pd

Pandas中三大数据结构:Series、DataFrame、Index

Series

data = pd.Series([0.25,0.5,0.75,1.0])
data

返回Series的值

data.values

返回Series的索引对象

data.index

操作时,1、可以把Series当成Numpy的数组来操作

data[1]
data[1:3]

Series定义时,可以自己指定索引。

data = pd.Series([0.25, 0.5 , 0.75, 1.0 ],index=['a','b','c','d'])
data

获取数据

data['b']

2、可以把Series当成一个特殊的字典

population_dict = {'Texas':26448193,'New York':19651127,'Florida':19552860,'Illinois':12882135,'Californis':38332521}

population = pd.Series(population_dict)
population

可以像访问字典一样访问

population['Californis']

Series 比字典强大,支持数组形式的操作

population["New York":'Californis']

创建Series对象

基本形式:pd.Series(data,index=index),index是可选参数

1、 data 可以是列表或numpy数组

pd.Series([2,4,6])

2、data 可以是一个标量。创建时,会被重复填充到各个索引上

pd.Series(5,index=[100,200,300])

3、data 可以是一个字典

pd.Series({'a':1,'b':2,'c':3})

每一种创建形式,都可以通过指定索引,筛选需要的结果

pd.Series({'a':1,'b':2,'c':3},index=['a','c'])

DataFrame 对象

1、将DataFrame当成Numpy数组操作

area_dict = {'Texas':695662 ,'New York':141297, 'Florida':170302, 'Illinois':149995, 'Californis':423976}
area = pd.Series(area_dict)
states = pd.DataFrame({'population':population,'area':area})
states

获取DataFrame的行索引对象

states.index

获取DataFrame的列索引对象

states.columns

默认按列获取数据

states['population']

可以将dataframe当成字典

states['population']

创建DataFrame对象

1、通过Series创建

pd.DataFrame(population,columns=['population']) # columns用来指定列的索引名称

2、通过字典列表创建

data = [{'a':i ,'b': 2 *i} for i in range(3)]
pd.DataFrame(data)

如果字典中有些键不存在,Pandas会用缺失值NaN来表示

pd.DataFrame([{'a':1,'b':2},{'b':3,'c':4}])

3、通过Series对象字典创建

pd.DataFrame({'population':population,'area':area})

4、通过Numpy的二位数组创建

pd.DataFrame(np.random.rand(3,2),columns=['foo','bar'],index=['a','b','c'])

5、从Numpy的结构化数组创建

A = np.zeros(3,dtype=[('A','i8'),('B','f8')])
A
pd.DataFrame(A)

使用Pandas创建Index对象

使用列表创建

ind = pd.Index([2,3,5,7,11])
ind

1、将Index看作不可变的数组

ind[1]

ind[::2]

Index 对象拥有与Numpy数组相似的属性

print(ind.size, ind.shape, ind.ndim, ind.dtype)

注意,Index对象是不可变的,这样使多个Series或DataFrame之间共享数据更加安全。

2、将Index看作有序的集合

indA = pd.Index([1,3,5,7,9])
indB = pd.Index([2,3,5,7,11])

indA & indB #交集

indA | indB #并集

indA ^ indB #异或
Int64Index([1, 2, 9, 11], dtype='int64')

数据的取值与选择

Series 数据选择的方法

1、将Series看作字典

data = pd.Series([0.25,0.5,0.75,1],index=['a','b','c','d'])

通过键取值

data['c']

判断键a是否存在

'a' in data

获取所有的键

data.keys()

调用items()方法

list(data.items())

动态的添加数据

data['e'] = 1.25
data

2、将Series当作一维数组

Series拥有和Numpy数组一样的功能,包括:索引、切片、掩码、花哨索引

将显式索引作为切片

data['a':'c']

将隐式索引作为切片

data[1:3]

注意:显式索引选择时,包括最后一个索引。隐式索引则不包括。

掩码操作

data[(data > 0.3) & (data < 0.8)]

花式索引

data[['a','e']]

3、索引器 loc 、 iloc 和 ix

data = pd.Series(['a','b','c'], index=[1,3,5])
data

取值操作使用的是显式索引

data[1]

切片操作,使用的是隐式索引

data[1:3]

loc 表示使用显示索引

data.loc[1]
data.loc[1:3]

iloc 表示使用的是隐式索引

data.iloc[1]
data.iloc[1:3]

将DataFrame 看作字典

通过键访问DataFrame,注意选取的数据都是列数据

data['area']
data.area

增加一列

data['density'] = data['pop'] / data['area']
data# 将DataFrame 看作二维数组

按行查看数组数据

data.values

转置操作

data.T

获取一行数据

data.values[0]

获取列

data['area']

使用索引器来取值,可以将DataFrame当作二维数组进行操作

data

使用隐式索引操作

data.iloc[:3,:2]

使用显式索引操作

data.loc[:'Florida',:'pop']

ix 索引器,可以将隐式索引和显式索引混合使用

data.ix[:'Florida',:2]

任何用于处理Numpy形式数据的方法,都可以用于这些索引器。比如:掩码、花式索引

data.loc[data.density > 100,['pop','density']]

任何用于处理Numpy形式数据的方法,都可以用于这些索引器。比如:掩码、花式索引

data.loc[data.density > 100,['pop','density']]

任何一种取值方法,都可以用于调整数据。

data.iloc[0,2] = 90
data

其他一些选值操作

对单个标签取值,选择的是列

data['area']

对多个标签用切片操作,就是选择行

data["Texas":"Illinois"]

切片也可以直接用行数实现(隐式索引编号)

data[1:3]

掩码操作,可以直接对一行过滤

data[data.density > 100]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容

  • 如同平淡日子里不经意的刺激,永利有外遇的消息在朋友间引起一阵骚动。孟雄不知道永利的外遇对象是谁,他的脑海里浮起永利...
    陈旭山阅读 1,058评论 9 9
  • As a teacher now i want to say that the job i do now is s...
    七月上的冥王星阅读 506评论 0 2
  • 【怎么做才能打开财富自由的门?】 李笑来说实现财富自由第一步是,学会卖自己的时间。 而卖自己的时间,分为以下三种:...
    边小煦阅读 132评论 0 0