在我们拿到一份数据的时候我们需要快速的预览这份数据,对数据的全貌有一个了解,Pandas是一个非常好的工具。

    • nunique()可以返回所有列中唯一值的个数
    • store.nunique().sort_values(ascending=False)/store.shape[0]*100查看整个数据表中每列中的唯一值占比
    • 使用使用df.head()查看数据与的前五行和列名
    • pd.set_option('display.max_rows',10)设置每次查看数据最大行数为10行
    • 使用df.shape查看数据的列和行总数

      clolumns,shape,index这些都是属性不是方法,后面是不跟()的

    • np.sort(df['product_color'].dropna().unique())可以快速看到某列数据中的非空唯一值

    • df.info()可以快速查看整个数据中每列的数据类型,列名,有多少数据、null值有多少
    • df.describe()可以快熟查看整个数据中每列的平均值、中位数、众数等统计量
    • pandas中的croostab方法可以很快帮助我们对两列文本型的数据(分类型变量比如性别),将这两列的聚合成一个矩阵(DataFrame)并计数

      1. pd.crosstab(df.Nationality, df.Handedness)
      2. pd.crosstab(df.Sex, df.Handedness, normalize='index') #求百分比
      3. pd.crosstab(df.Sex, df.Handedness, margins = True) #加入合计类似于excel里面的透视表
      4. pd.crosstab(df.Sex, [df.Handedness, df.Nationality], margins = True) #复合
    • data[data[``' Income '``].isin([data[``' Income '``].``max``()])]查找income这列中最大值所在的行

    • df.drop(df[df[``' Income '``]==df[``' Income '``].``max``()].index,inplace=``True``)删除income这列中最大值所在的行(可以理解为删掉了收入最高的样本)
    • pd.options.display.max_columns = df.shape[1]设定使用head()预览数据的最大行数量

      1. for i in data.columns:
      2. print("{}: {} unique values".format(i,len(data[i].unique())))
    • 可以快速查看所有列中的唯一值数量,帮助我们分辨那些事分类型变量,那些连续型变量

    有时候我们想知道每个特征的最大值是哪些样本

    1. num_li = []
    2. school_li = []
    3. for i in df.columns:
    4. if df[i].dtype == 'float64':
    5. num_li.append(i)
    6. else:
    7. pass
    8. for x in num_li:
    9. tmp = df.sort_values(by=x, ascending=False).iloc[0]['学校名称']
    10. school_li.append(tmp)
    11. f = pd.DataFrame(school_li,index=num_li, columns=['highest school'])
    12. f

    下面的代码和上面等价

    1. df.set_index("学校名称",inplace= True)
    2. df.iloc[:,3:].idxmax()

    df.nlargest(10, '高端人才得分')能够返回某列特征的最大10个值

    数据预览 - 图1