码农的世界程序员程序园

腾讯广告算法大赛随手记8——技巧汇总(持续更新)

2019-04-29  本文已影响272人  山东大葱哥

前言

很多小伙伴经常问道的一些技巧问题汇总如下:

欢迎点赞(免费的)

大葱哥不定期发布关于大赛的文章,欢迎大家关注。
觉得喜欢就给点个赞,如果赞达到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'  # 就是这个参数
                        )

数据目标分析

image.png
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

sns.distplot(test_sampledf['曝光次数'])

image.png
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

上一篇下一篇

猜你喜欢

热点阅读