Pandas数据结构介绍

Pandas数据结构介绍

Series

  • 声明对象
    Series是带索引功能的一维数组,其对象包含value和index基本属性
    s=pd.Series([1,2,3],index=['a','b','c'])
    s.index #['a','b','c']
    s.value #[1,2,3]

  • 取元素
    s[索引] # s[['b','c']]

  • 用Numpy数组或其他Series对象定义新的Series对象
    a=np.arrat([1,2,3])
    s1=pd.Series(a)
    s2=pd.Series(s)
    这样生成的新对象并不是副本而是原对象的引用

  • 筛选元素
    因为pandas是以Numpy为基础的,所以可以直接用Numpy中的一些办法
    s[s>5]

  • 运算
    运算的原理也与numpy相通
    np.log(s)

  • Series对象的组成元素
    unique()函数用来取出对象中不重复出现的元素
    vlaues_count()函数用来统计每个值的个数
    isin([值])返回是否在其中,布尔型

  • NaN处理
    s[s.isnull()]输出空值
    s[s.notnull()]输出非空值

  • Series与字典
    mydict={'red':1,'green':2,'yellow':3}
    s5=pd.Series(mydict)
    字典的索引自动变为Series的索引

  • Series对象之间的运算
    s1+s2只会进行索引值相同部分的相加生成新的Series对象,两者独有的索引值会也会存在,运算后对应的值为NaN

DataFrame

DataFrame对象就是一张强行带上索引列的二维表,出去index的那一列其余的列名保存在column属性中。

定义对象

  • 传入字典
    dict={'color':['red','green','yellow'],'name':['ball','pen','pencil'],'price':[1,1,2,1,2]}
    frame=pd.DataFrame(dict)
    这样index列会默认设置为0,1,2,3.。。
    frame=pd.DataFrame(dict,index=['','',''])等
  • DataFrame(数据,index,column)
    frame=pd.DataFram(np.random.random(16).reshape((4,4)),index=[],columns=[])

选取元素

按列选取:frame['color']与fram.color的效果是一样的,返回的是Series对象
按行选取:frame.ix[行的索引值] frame.ix[2]
也可以:
frame[0:1]选取第0行
frame[1:3]选取第1,2行
最后,如果获取存储在DataFrame中的一个元素,需要依次指定元素所在的列的名称、行的索引值或标签 frame['name'][3]

赋值

按照取值的逻辑自然就可以赋值、增加的新的行和列
fram['new']=[...] 插入某列
fram['new'][0]=
fram['new']=Series
疑问?DataFrame插入某行怎么办?

元素所属关系

frame[frame.isin([1.0,'pen'])]

转置

DataFrame的转置很简单直接 Fram.T即可实现

删除一列

del fram['new']

筛选

frame[frame<12] 符合条件的会被留下且位置不变。不符合条件的变成NaN

嵌套字典生成DataFrame

mydict={'red':['l1':1,'l2':2,'l3':3],'yellow':['l1':4,'l2':5,'l3':6],'green':['l1':7,'l2':8,'l3':9]}
第一层嵌套是列,里面重复嵌套行。

删除某行某列

frame.drop([index1,index2...]) 删除行
frame.drip([column1,column2....],axis=1) 删除列

数据结构之间的运算

就是Series和DataFrame之间的运算
除了用运算符,以下函数也是可以的

  • add()
  • sub()
  • div()
  • mul()
    比如 frame1+frame2与 frame1.add(frame2)的效果是一样的
    Series和DataFrame之间的运算就有些复杂了,简而言之,两者运算靠共同的索引,不同的索引会造成打量的NaN

可以看到Frame中的列索引与Ser想同的部分都做了相减。如果索引值没有想同的就会
产生NaN

函数与映射

按行或列执行操作的函数

f=lambda x: x.max()-x.min()
frame.apply(f)按列执行
frame.apply(f,axis=1) 按行执行

统计函数

frame.sum() fram.mean() 等依然可以按照列进行相关统计量的计算
frame.describe() 将会列出所有描述性统计量

排序

sort_index() 可以对Series和DataFrame的索引进行排序
sort_index(axis=1) 可以对DataFrame的横轴进行排序
值排序
ser.order() 默认升序 改变:ser.order(ascending=False)
对frame 需要制定按照哪一列:
frame.sort_index(by='price')

NaN的处理

过滤NaN

  • ser.dropna() 但fram.dropna()会删除NaN存在的整个行和列
    fram.dropna(how='all')删除行或列整个都是NaN的情况
  • 也可以索引过滤: ser[ser.notnull()]

为NaN填充其他值

  • fram.fillna(值)
  • 不同的列填充不同:fram.fillna({'price':1,'color':null,'name':null})

最后说一下,Series是可以层级的形式出现的。Series和DataFrame之间可以用stack(), unstack()函数互相转换

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

推荐阅读更多精彩内容