【读书笔记】七周成为数据分析师--python实战篇⑤

本系列主要是记录秦路大佬的《七周成为数据分析师》,让我意识到数据的重要性,也是我转行之路刚开始学的比较友好的视频。

传送门:
第一篇点击跳转
第二篇点击跳转
第三篇点击跳转
第四篇点击跳转
第五篇点击跳转
第六篇点击跳转

1、注意导入的encoding是utf8,还是gbk
2、更改数据类型,用astype()
正常是切出某一列,比如df.工号.astype(‘str’)
但不要漏了要再赋值一次给工号,
df.工号=df.工号.astype(‘str’)
3、df.info(),简单看看数据类型
4、df.query(‘age’>15).city=='北京’
筛选出大于15的,对应city,去逻辑判断为北京的数据
5、df[(df.age>15)&(df.city>‘上海’)]
两次筛选,得到结果
6、df.sort_values(by=‘age’,ascending=False)按年龄进行降序排序
7、多字段排序
df.sort_values(by=[‘age’,‘city’],ascending=False)
8、df.sort_index,行排序
9、rank
df[‘rank’]=df.age.rank(),若原先没有rank列,会自动增加一列,
10、重复
df.age.unique()
11、计算次数
df.workyear.value_counts()
12、df.age.cumsum(),计算某列累加合
13、pd.cut(df.age.bins=[0,5,10,20,30,100],labels=[‘a’,‘b’,‘c’,‘d’])
分类分级可以用
14、df.groupby(by=‘city’).count()
聚合函数,按城市聚合,且计数
df.groupby(by=‘city’).avg.max
多重聚合
df.groupby(by=[‘city’,‘workyear’])
15、pandas多表关联
concat([表A,表B],axis=0/1)0表示上下堆叠,1表示左右堆叠,但一般左右会用merge来拼接
join
merge最常用:df.merge(right=另一个表名,how=‘何种连接方式’,on=‘以哪个键值来关联’,left_on,right_on)如果本身两表要关联的键值不一致,增加left_on,right_on
16、改字段名称
df.rename(columns=)
单独修改一个,用另一种比较快
col=list(df.columns)
col[0]=‘id’#具体以实际位置或者名字为准,进行赋值
17、多重索引
法一、先切换到Series级别,直接索引标签
法二、用.loc[‘index’]
18、文本函数
dfLables.str.count(‘分析师’)统计词频
19、pandas 数据处理
对于空值:
填充:df.fillna(1)对所有空值填充为1
删除:df.dropna()对所有空值删除,如果axis
对于重复值:
df[df.duplicated()]
df.drop_duplicates()直接删去,常用这个
20、apply()
比如:要在薪资11.5后面整列加K
df.avg.astype(‘str’)+‘k’
法二:df.avg.apply(lambda x:str(x)+‘k’),apply会针对每一行进行函数运用
21、找出各城市工资降序排名前N

def func(x,n,asc=False):
	r=x.sort_values('avg',ascending=asc)
	return r[:n]
df.groupby('city').apply(func,n=3,asc=True)

22、数据透视表
df.pivot_table(index=,columns=,values=,aggfunc=),先想象成表之后的行和列,再调用想用的功能。
23、简单可视化

import matplotlib.pyplot as plt
%matplotlib inline #表示直接在命令单元行显示图表
plt.style.use('ggplot')
order_amount.plot()#就会直接出现图表,且正常plot默认是折线图,

正常直接用markdown在底下写结论
24、去重
df.groupby(‘month’).user_id.apply(lambda x:len(x.drop_duplicates())).plot()
25、散点图
df.plot.scatter(x=,y=)
如果要在里面加筛选
df.query(‘字段’<,>数值).plot.scatter(x=,y=)
26、直方图
df.plot.hist(bins=)#bins表示的是分成几个块
27、累加求占比
df.sort_values(‘字段名’).apply(lambda x:x.cumsum())/x.sum()
28、时间用函数去分成两列,最小值,最大值
df.date.agg([‘min’,‘max’])

rfm['R']=
rfm.rename(columns={'字段':'F','字段':'M'}),inplace=True)
def rfm_fuc(x):
	level=x.apply(lambda x:'1' if x>=0 else'0')
	label=level.R+level.F+level.M
	d={
		'111':'重要价值客户',
		...
		}
	result=d[label]
	return result
rfm['label']=rfm[['R','F','M']].apply(lambda x : x-x,mean()).apply(rfm_func.axis=1)

29、回购率

def back(data):
	status=[]
	for i in range():
		if data[i]==1:
			if data[i+1]==1:
				status.append(1)
			if data[i+1]==0:
				status.append(0)
		else:
			status.append(np.NAN)
	status.append(np.NAN)
	return status

df.apply(back,axis=1)#逐行计算
最后用df.sum()/df.count().plot(figsize=(10,4))来表示
30、调整时间
df[‘时间’]=pd.to_datetime(df.时间 , format=’%Y-%m-%d’)
31、python 连接数据库
1、pip install pymysql
2、在python进行连接

import pymysql
conn=pymysql.connect(
        host='localhost',#主机
        user='root',
        password='xcw',
        db='taobao',
        port=3306,
        charset='utf8'
)
cur=conn.cursor()#游标,记下来即可
cur.execute('select * from rmf')
data=cur.fetchall

最终结束记得关闭连接

cur.close
conn.colse

32、python 重命名列名
df.rename(cloumns={‘a’:‘b’,‘c’:‘c’},inpalce=True)

保持渴求,不要沉寂

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值