pandas

创建

.index.name='' 命名索引

.index=list('abcd')

date=pd.date_range('',periods=n)时间序列

df=pd.DataFrame(np.random.randn(),index=,columns=)

df=pd.DateFrame({目录:要输入的数据})

key级2键值可以为pd.Time stamp,pd.Series,np.array

df.head()/tail()查看前/后几行数据(默认值为5)

df.index/columns/values下标/列标/数值查看

df=pd.read_excal(r’路径名+读入的文件名’)(r是为了反斜杠不用转义)

行操作

df.iloc[]=df.index_col()

dit={}

s=pd.Series(dit)

s.name=

df=df.append(s)添加一行

df=df.drop([])删除一行

列操作

df=df.columns

df['列名'][行数]添加列

df['序号']=range(1,len(df)+1)

df=df.drop(‘列名’)

df.loc[[index],[colunm]]

行列处理

条件选择

df[(df.index==)|(df.)&(df.)][需要展示的行数] |是或的意思

判断缺失

df[df[index].isnull]

填补缺失

df[index].fillna(,inplace=true)括号内容为保存这个删除

数据保存

df.to_excel()

转换形式

df[]=df[].astype('')

查找错误

df[df.columns==''][columns].values

错误案例[‘2008\u200e’]其中u200e是格式控制字符,虽然表现为正常,但会报错

loc索引

df.loc[,]=赋值操作

按照要求排序

df.sort_values(by=需要升序的列)/,ascending=False#降序排列)

df.describe()对数值型数据进行描述性统计

计算

df[].median()中位数

​ .mean()平均值

​ .var()方差

​ .std()标准差

​ .corr()相关性

​ .unique()唯一值

df[].values_counts()计数(默认从大到小)

替换

df[列名].replace([原值],[替值]),inplace=True)

数据透视

pd.set_option('max_columns/rows',100)展示最多列数/行数

pd.option.display.max_rows上一行方法报错用

pd.pivot_table(dfindex=[],values=[],aggfunc=np.sum)去掉values显示全部,sum加和

pd.pivot_table(,fill_value=)对非数值设值

.margins=True对所有求总和

aggfunc={需处理的行:np.sum/mean}键值处输入需要操作的函数

table.sort_values()排序

!!!!!tab偷懒ohhhhhhh

数据重塑和轴向转换

(1)层次化索引

s=pd.Series(np.arange(1,10)index=[a,a,a,b,b,c,c][1,2,3,1,2,3,1,2,3])

效果

s.unstack()将一维转二维#会产生缺失值

.stack()二维转竖直型数组

多层索引

.swaplevel()交换列。

set_index()把列变成索引

reset_index()把索引变成列

层次化后,可用.loc()调用索引

多层索引可以简化筛选环节

每个索引是一个元组

df=df.reset_index()取消层次索引

(2)数据转置

.T行列交换

数据分组,分组运算

只会对数值变量分组运算,可以将不希望参与运算的数据设置为str等其他形式

df[]=df[].astype('')

group=df.groupby()

可以单独创建一个group,也可以直接df.groupby().来进行计算

分组以后克用.mean()等计算

df[x].groupby(df[y]).mean()求y中x的平均值

可以传入多个分组变量

df.groupby(df[],df[]).fuc()

离散化处理(分组区间化)

(1)基本形式

pd.cut(x,bins,right=True,labels=None,retbins=False,include_lowest=False)

(2)内涵解释

x:需要离散化的数组,一维数组,二维数组。

bins:分组的依据

bins若为数字,则是把x这个数据分成多少个等间距的区间

​ 若为序列,则是把x划分在对应的序列区间中,如果数据不在序列当中会产生缺失值(NAN)

right=True,包含右端点,include_lowest=False,不包含左端点

#在统计学中,对于连续数据分组的处理是左闭右开的

labels=自己定义的区间(例如A,B,C,D,E,F)

retbins返回X中对应bins的列表

precision精度的设置

例子:

df[“污染等级”]=pd.cut(df['污染程度'],[0,3,5,7,9,10],labels=["A","B",'C','D','E']

(3)bins设置

bins=np.percentile(df[]#分为对象,[0,20,40,80]#分位值)

np.percentile or pd.quantile#百分位函数#

df[“热门程度”]=pd.cut(df['投票人数'],bins,labels=["A","B",'C','D','E']

(4)条件索取

区间化处理后仍然也可以按条件索取

df[df[]==""&df[]==""]

合并数据集

(1)append or pd.conact

可将所需数据从原数据中提取出,再合并

(2)merge(横向拼接)

1构成

pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=('_x','_y'),copy=True,indicator=False)

2含义

left:对象
right:另一个对象

#有相同的列:on:要加入的列(名称)。必须在左、右综合对象中都有。如果不能通过 left_index 和 right_index 是假,将推断DataFrames中的列的交叉点为连接键

#没相同的列:left_on:从左边的综合使用作为键列。可以是列名或数组的长

度等于长度综合

right_on:从右边的综合,以用作键列。可以是列名或数组的长度

left_index:如果为 True,则使用索引(行标签)从左综合作为其联接

键。在与多重(层次)的综合,级别数必须匹配联接键从右综合的数目

right_index:相同用法作为右综合 left_index

how:即数据保留/拼接的方式,‘左’,‘右’,‘外在’、‘内部’。默认为内部

(即inner为左右对象的交集)。

sort:综合通过联接键按字典顺序对结果进行排序。默认值为True,

设置为False将提高性能极大地在许多情况下

suffixes:字符串后缀并不适用于重叠列的元组。默认值为('_x','_y')即两个重复的列名称用后缀区分

copy:(默认值True)。

indicator:将列添加到输出。

你可能感兴趣的:(python)