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']))
Pandas基础使用总结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1、DataFrame的创建 DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。Da...