数据分析中的‘疑难杂症‘小结(一)
1 关于什么是逐块读取数据(chunker)?为什么要逐块读取?
1.1 文件读取时,可以使用nrows参数来设置读取的行数
例如:data = pd.read_csv(‘data.csv‘,nrows = 5)
1.2 分块的背景
之所以要分块是因为DataFrame是一个重量级的数据结构,当一个dataframe占据较大内存时并对其进行操作时会由于占用内存过大而导致处理速度极速下降。所以要通过设置chunksize参数来返回一个固定行数的迭代器,每次读取只消耗相应行数对应的dataframe的内存即可,从而有效解决内存消耗过多的问题。
1.3 举例:以每1000行数据为一个数据块,逐块读取
chunker = pd.read_csv(‘train.csv‘,chunksize = 1000)
2.快速判断数据是否为空,空返回True,非空返回False
例如: df.isnull().head()
3. 条件判断
在对DataFrame格式数据进行条件筛选时,如果涉及到多个条件,条件之间需要使用&
或|
进行连接,而不能使用and
和or
进行连接。
例如:midage = df[(df["Age"]>10)& (df["Age"]<50)]
4. reset_index的作用
reset_index作用是将索引重新排序,切记要设置drop = True使得旧索引不会被插入原序列
例如:midage = midage.reset_index(drop=True)
5.loc和iloc的区别
loc可以指定字符串为索引参数,iloc只能接受整数作为参数
6. sort_values的作用
对DataFrame的数据进行排序,其中by参数控制指向要排列的列,ascending参数指向排序的方式。
例如:frame.sort_values(by=‘c‘, ascending=True)
7.对多列排序的认识
在使用sort_values进行多列排序时,前一列相同的时候。比较后一列,前一列不同,则不管后面,直接按前一列进行排序。
8.迅速查找数据中每列为空的行数之和
例如:df.isnull().sum()
9.检索每列空缺值
检索空值使用np.nan
最好,也可以使用.isnull()
。最好不要使用None
是因为空缺值的数据类型为float64用None
一般索引不到。
例如:df[df[‘Age‘] == np.nan] = 0 / df[df[‘Age‘].isnull()] = 0