本文记录一下平时在数据分析工作中常用到的代码
1、 当我们想让数据框A和B牵手,但是他们有重复列,只想保留一个。
df= pd.merge(A,B,on = 'serno',how = 'left',suffixes = ('','_y'))
df.drop(df.filter(regex='_y$').columns.tolist(),axis=1, inplace=True)
通过suffixes 参数来控制,想删A中的重名就标记A中的,再用drop删除即可。
2、 数据分析之前常用的基础配置
import pandas as pd
import datetime
import os
os.getcwd()
os.chdir(r'C:\myWorkFile\XX')
pd.set_option('Display.max_rows',None)#展示全部行
pd.set_option('Display.max_columns',None)#展示全部列
pd.set_option('max_colwidth',1000)
import matplotlib as mpl
import warnings; warnings.filterwarnings(action='once')
%matplotlib inline
from pylab import *
mpl.rcParams['font.sans-serif']=['SimHei'] #绘图显示中文
3、超好用的crosstab()
统计不同地区,在不同时点的指标 xxx
例如,统计不同地区,在不同月份的逾期顾客数~
其中数据框A,含地区area、月份ym、逾期天数overdue、顾客id cust_id
pd.crosstab(A['area'],A['ym'],values=A.loc[A['overdue']>=1,'cust_id'],aggfunc='count',margins=True)
4、计时器
import time
tic = time.time()
#########################你要监测时间的代码#################
toc = time.time()
time = toc-tic
print('用时{}s'.format(time))
5、横向合并pd.merge、纵向合并pd.concat
pd.concat 也可横向,且适用于多个数据框纵向合并!!!!!
pd.concat([df1,df2,df3,df4])
不多问,问就是简单粗暴直接,怼在一起,不像merge,需要指定一下合并的键值~~
merge常用于两个数据框之间的链接,how = ‘inner’,‘left’,‘right’,也可控制左右链接的键值名,也是really灵活了!!!!
6、重命名
colNameDict = {'源数据列名':'新列名'} #将‘源数据列名’改为‘新列名’
df.rename(columns = colNameDict,inplace=True)
7、groupby 多维度分组,计数、求和、均值,一起用!
d22 =d2.groupby(['客户代码','资金账号'],as_index=False).agg({'成交金额': 'sum', '委托序号': 'count'})
d22.columns = ['客户代码','资金账号','购买次数','购买金额']