Pandas —— 唯一值unique( ),计数值value_counts( )及成员资格isin( )
首先将数据变成DataFrame的形式
a = pd.DataFrame(traindata)
a['age'].value_counts()
a['age'].unique()
a['age'].isin([20,21,22])
#去重
python中的pandas模块中对重复数据去重步骤:
1)利用DataFrame中的duplicated方法返回一个布尔型的Series,显示各行是否有重复行,没有重复行显示为FALSE,有重复行显示为TRUE;
2)再利用DataFrame中的drop_duplicates方法用于返回一个移除了重复行的DataFrame。
print df.duplicated().value_counts()
df.drop_duplicates()
#Seaborn画图
其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。
import matplotlib.pyplot as plt
import seaborn as sns #要注意的是一旦导入了seaborn,matplotlib的默认作图风格就会被覆盖成seaborn的格式
%matplotlib inline # 为了在jupyter notebook里作图,需要用到这个命令
sns.distplot(df['age'])
#loc pandas.loc 选取指定列进行操作
1.loc意义:通过行标签索引行数据
例: loc[n]表示索引的是第n行(index 是整数)
loc[‘d’]表示索引的是第’d’行(index 是字符)
2. .iloc :通过行号获取行数据,不能是字符
3. ix——结合前两种的混合索引
三者区别:
ix / loc 可以通过行号和行标签进行索引,比如 df.loc['a'] , df.loc[1], df.ix['a'] , df.ix[1]
而iloc只能通过行号索引 , df.iloc[0] 是对的, 而df.iloc['a'] 是错误的
建议:
当用行号索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc , ix 尽量别用。
#空数据的填充
traindata.isnull().sum() 看是否有缺失值
traindata.age = traindata.age.fillna(traindata.age.mean()) 用均值填补缺失值
缺失值填充方法汇总
pandas判断缺失值一般采用 isnull(),然而生成所有数据的true、false矩阵,对于庞大的数据很难一眼看出缺失数据的位置。
缺失值查看
测试数据采用了随机生成。
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(10,6))
>>> #生成区域随机数
>>> df.iloc[1:3,1] = np.nan
>>> df.iloc[5,3] = np.nan
>>> df.iloc[7:9,5] = np.nan
>>> df
0 1 2 3 4 5
0 -0.524651 -0.306484 0.921319 -1.752106 -0.593152 -0.109011
1 0.350563 NaN -0.511227 -0.893392 -0.362926 -0.567714
2 -0.696586 NaN -0.387368 0.431769 0.015262 -1.002748
3 0.029329 0.645159 0.880687 0.002313 0.000143 0.410978
4 1.086453 -0.183210 0.465487 0.204141 -0.827070 -0.227329
5 0.449833 0.870347 -0.285700 NaN -0.116068 -0.061469
6 0.054838 -0.000641 -2.127298 -0.375447 0.463457 0.263546
7 2.932326 -2.227659 -0.559444 0.080580 1.731467 NaN
8 1.417988 0.083318 -0.041332 1.350390 -1.236223 NaN
9 -1.549584 0.156260 0.846521 -0.087683 -0.171236 0.334471
- 判断数据是否存在缺失值:
isnull()
>>> #判断是否存在缺失值(矩阵中True表示此位置为缺失值、False表示非缺失值)
>>> df.isnull()
0 1 2 3 4 5
0 False False False False False False
1 False True False False False False
2 False True False False False False
3 False False False False False False
4 False False False False False False
5 False False False True False False
6 False False False False False False
7 False False False False False True
8 False False False False False True
9 False False False False False False
- 判断哪些”列”存在缺失值:
isnull().any()
>>> df.isnull().any()
0 False
1 True
2 False
3 True
4 False
5 True
dtyp