腾讯广告算法大赛随手记8——技巧汇总(持续更新)
前言
很多小伙伴经常问道的一些技巧问题汇总如下:
欢迎点赞(免费的)
大葱哥不定期发布关于大赛的文章,欢迎大家关注。
觉得喜欢就给点个赞,如果赞达到100个话,可以考虑赠送福利
觉得赞不够表达你的喜欢,可以给大葱哥一个赏。
大文件如何读取
官网给到的曝光文件totalExposureLog.out,有6.4G,如果你的电脑内存是16G以上可以直接读取,很多朋友的电脑内存没有那么高,这时候直接读取的话就会卡死,这里我们可以使用pandas.read_csv中一个get_chunk功能,设置成循环读取,一次读取100万行,处理完后再读取另一批次,分多次对该文件内容进行处理,这样可以在内存不充裕的情况下完成大文件的读取处理工作。
具体代码形如:
pd.read_csv('totalExposureLog.out ',sep='\t',
header=None,iterator=True,low_memory =False)
for i in range(120): #共有1亿条数据,一次100万大概需要102次左右
try:
exposureLogdf = exposureLogfile.get_chunk(1000000)
#你的代码逻辑 blabla.....
except StopIteration:
break
大葱哥建议大家可以将这个大文件按照上述方式拆分成小文件,比如请求的日期按天拆分到多个文件中,后续处理会方便很多。
文件追加写模式
还是为了节约内存我们可以使用追加写的模式,对拆分的文件按照不同的维度写到不同的文件中,采用追加写的模式,避免后面的内容覆盖前面的内容
dataframe.to_csv('filename.csv', sep='\t', header=False, index=False
,mode='a' # 就是这个参数
)
数据目标分析
- 查看某一列的数据分布情况,可以看到最大、最小、平均值、总次数等信息
test_sampledf['曝光次数'].describe()
- 通过图的形式展现出分布状况,查看是否符合正态分布,这个需要安装seaborn
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.distplot(test_sampledf['曝光次数'])
- 查看相关性不同列对目标的相关性,需要 scipy支持
import scipy.stats as sci
sns.jointplot(x='出价',y='曝光次数',data=test_sampledf,stat_func=sci.pearsonr)
image.png
后续补充
暂时更新这几个技巧,有需要其他技巧的伙伴可在下面留言,我会根据情况将关心比较的技巧更新到这个文章中。
知乎咨询入口(收费)
做个广告,有需要深入问题讨论的可以移步到,知乎搜索山东大葱哥,或者复制链接在浏览器打开
大葱哥腾讯算法大赛咨询入口
链接:
https://www.zhihu.com/consult/people/1088941583310782464?ab_signature=CiRBRUJDM3REd1p3eExCVXIxRlFMQnlqNWlXT2tQcDhWLS1URT0SIGQxYmFlYmJjMzI3YTgzOTU1NGQ3Mjk1OWVkNmIwY2YzGhAIARIGNS40Mi4wGgQxMjM4