这特么是谁收集的数据:数据前处理摘要
好的数据都是相同的,不好的数据各有各让人抓狂的地方。
打开Speed Dating Match数据,先是import数据处理三板斧pands
, numpy
,matplot
。之后摩拳擦掌,立刻准备用pandas先把数据弄上床,数据就是手下待宰绵羊,可以肆意玩弄了。
df = pd.read_csv('Speed Dating Match.csv')
df.head()
what ?! 打不开!
简直不按套路出牌,查看错误才发现,原来read_csv只能默认打开utf-8
编码的文档。就像是解惯了背扣胸罩的愣头青,突然碰到前扣胸罩,一时不知如何下手。直叫女生扫兴,满脸不开心,本以为自己躺着慢慢享受就可以了,却又要来。(最近王二的书看多了,真是开口就是段子。)
于是只能求助谷姐了。
1. 这码打得,怎么无码看数据
第一个方案:让我们来看看你到底是什么
很简单,用编辑器打开,比如用我们的好伙伴notepad。 之后File -> Save As
,Save
菜单的旁边就是一个encoding
下拉菜单,而你当前的编码方式就已被选中,躺在那儿了。
之后在read_csv
函数加上参数,encoding='当前编码'
就行了。
第二个方案:霸王硬上弓,我一一试,不信就解不开
市面上的胸罩,背扣,前扣,还有侧扣,再怎么整也就三种。一个个试。
到背后摸一摸,光溜溜。
再转到前面摸一摸,没有。
侧面摸一摸,还是没有?这尼玛是运动内衣吗。
开个玩笑,一般情况下还是就这三种啦。
和这个也一样,市面上一般csv
文件的编码也就那么几种。一个个试,总有一款适合你。
-
utf-8
默认的编码打开方式,直接用就可以了。不行,试下一个。 -
iso-8859-1
也叫作latin-1
。一般来说,都是人口普查或者其他政府机构的统计数据使用。 -
utf-16
这个不多说。
还是不行,试试第一个方案,如果再不行,看看是不是那个混蛋恶作剧。悄悄的,把其他文件改成了csv文件。
完成这个之后,你就可以好好欣赏眼前的雪白了,嘿嘿嘿。
2. 哪个死缺德居然不填数据
很多数据里面出现一些nan也是正常的,毕竟,人都懒嘛。于是要不然用平均值填填,或其他默认值。要不然就直接丢掉不用,男子汉做事何必在意细节呢。
方法很简单,先找出有nan值的行。
nan_ind = pd.isnull(df.values).any(1).nonzero()[0]
再来把这些都丢掉就好了。
pd.drop(df.index(nan_ind), inplace=True)
3. 刷刷刷,去掉分隔符
有时候总会碰到,用各种分隔符分开的数据。每次都写一句针对不同分隔符的split的话,特别麻烦。肿么办?
为什么不写一个通用的函数呢,以后拿来用就可以了。
于是就可以用下面这个
def super_split(string):
import re, string
delimiters = '; |, |\*|\n' # 用脸打字中
# We can also use predifined punctuation
# delimiters = string.punctuation
# re.split("[%s]%delimiters, string)
return re.split(delimiters, string)
如果需要更多分隔符的话,改改delimiters,自己定制一个自己的也行。