Pandas基础使用总结

import pandas as pd
import numpy as np

# 创建一个Series:eries 是一个一维类数组对象,包含一列数据与与其关联的一列数据标签,数据标签即为数据的序列。
s = pd.Series([1,3,5,np.nan,6,8])
#print(s)

#创建一个DataFrame:DataFrame 是一个表格化的数据结构,它同时拥有行序号与列序号。
#创建日期索引序列
dates = pd.date_range('20140101',periods=6)
#创建Dataframe,其中index决定索引序列,columns决定列名
df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
#print(df)
#通过传递一个字典创建 DataFrame
df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20130102'),
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                     'D' : np.array([3] * 4,dtype='int32'),
                     'E' : pd.Categorical(["test","train","test","train"]),
                     'F' : 'foo' })
#print(df2)
#查询每一列的数据结构
#print(df2.dtypes)



#数据观察
#观察开头的数据
#print(df.head())
#观察末尾的数据
#print(df.tail(3))
#显示索引
#print(df.index)
#显示列
#print(df.columns)
#显示底层numpy结构
#print(df.values)
#DataFrame 的基本统计学属性预览
#print(df.describe())
#转置
#print(df.T)
#根据某一轴的索引进行排序
#print(df.sort_index(axis=1,ascending=False))


#选择/切片
#选择单独的一列,返回 Serires,与 df.A 效果相当。
#print(df['A'])
#位置切片
#print(df[0:3])
#索引切片
#print(df['20140102':'20140104'])
#通过标签选择
#print(df.loc[dates[0]])
#对多个轴同时通过标签进行选择
#print(df.loc[:,['A','B']])
#获得某一个单元的数据
#print(df.loc[dates[0],'A'])
#通过位置进行选择
#print(df.iloc[3])
#切片
#print(df.iloc[3:5,0:2])
#列表选择
#print(df.iloc[[1,2,4],[0,2]])
#获得某一个单元的数据
#print(df.iloc[1,1])
#布尔索引
#根据某一列的数据达成条件进行索引
#print(df[df.A>0])
#获得大于零的项的数值
#print(df[df>0])
#使用 isin() 方法进行过滤
df3 = df.copy()
df3['E'] = ['one','one','two','three','four','three']
#print(df3)
#print(df3[df3['E'].isin(['two','four'])])

#赋值
#新增一列,根据索引排列
s1=pd.Series([1,2,3,4,5,6],index=pd.date_range('20140102',periods=6))
#print(s1)
df['F']=s1
df.at[dates[0],'A']=0
df.iat[0,1]=0
df.loc[:,'D']=np.array([5]*len(df))
#print(df)
#根据条件赋值
df4=df.copy()
df4[df4 >0] = -df4
#print(df4)

#缺省项
#在 pandas 中使用 np.nan 作为缺省项的值。
df5 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
df5.loc[dates[0]:dates[1],'E'] = 1
#print(df5)
#删除所有带有缺省项的行
#print(df5.dropna(how='any'))
#填充缺省项
#print(df5.fillna(value=5))
#获得缺省项的布尔掩码
#print(pd.isnull(df5))


#数值运算
#统计
#求平均值
#print(df.mean())
#求指定轴上的平均值
#print(df.mean(1))
#不同维度的 pandas 对象也可以做运算,它会自动进行对应,shift 用来做对齐操作
s = pd.Series([1,3,5,np.nan,6,8], index=dates).shift(2)
#print(s)
#对不同维度的 pandas 对象进行减法操作:
#print(df.sub(s, axis='index'))
#对数据应用 numpy 函数:
#print(df.apply(np.cumsum)) #累加
#应用自定义函数
#print(df.apply(lambda x: x.max() - x.min()))
#对不同值的数量进行统计
s = pd.Series(np.random.randint(0, 7, size=10))
#print(s)
#print(s.value_counts())

#字符处理
s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
#print(s.str.lower())

#合并
#使用 concat() 连接 pandas 对象:
df = pd.DataFrame(np.random.randn(10, 4))
#print(df)
piects=[df[:3],df[3:7],df[7:]]
#print(pd.concat(piects))

#Join
left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})
right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})
#print(pd.merge(left, right, on='key'))

#追加
df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D'])
#print(df)
s=df.iloc[3]
#print(df.append(s,ignore_index=True))


#分组常常意味着可能包含以下的几种的操作中一个或多个
#依据一些标准分离数据
#对组单独地应用函数
#将结果合并到一个数据结构中
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three',
                          'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8),
                   'D' : np.random.randn(8)})
#print(df)
#对单个分组应用函数,数据被分成了 bar 组与 foo 组,分别计算总和。
#print(df.groupby('A').sum())
#依据多个列分组会构成一个分级索引:
#print(df.groupby(['A','B']).sum())

#数据透视表
df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 3,
                   'B' : ['A', 'B', 'C'] * 4,
                   'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,
                   'D' : np.random.randn(12),
                   'E' : np.random.randn(12)})
#生成数据透视表
print(pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容