Python数据分析(一)-Pandas「2」

    技术2022-07-12  83

    切片操作

    # 从第十行到二十行的所有值,间隔为2. s4=college[10:20:2] print(s4)

    结果: 在College中,第十行到第二十行的截图展示,可以对比看打印结果。

    # 获取具体某个列的具体信息 seriesapps=college['Apps'] # 对某一列进行切片处理,获取想要的值 seriesapps[1:10:2] //输出结果 1 2186 3 417 5 587 7 1899 9 582 Name: Apps, dtype: int64

    在College中,第一行到第十行,Apps的值信息,可以对比查看输出结果: 注:要想索引值不是数值,可以查看上一篇set_index,将某个具体的值设置为索引。

    copy()与drop()

    # 建立数据文本,以便多次修改,利用.copy之后不影响原数据 DataFrame=iris_data[:5].copy() # 去除掉不想显示的行数 print(DataFrame.drop(index=[1,3])) DataFrame=iris_data[:5].copy() # 去除掉不想要展示的列,需要借助conlumns. DataFrame.drop(columns=["花萼宽度","花瓣宽度"]) //输出结果。去掉不想要的行,以及不想要的列 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 2 4.9 3.0 1.4 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 花萼长度 花瓣长度 类别 1 5.1 1.4 setosa 2 4.9 1.4 setosa 3 4.7 1.3 setosa 4 4.6 1.5 setosa 5 5.0 1.4 setosa

    条件检索

    # 将空值信息筛选出来,具体isnull和isna的区别会详加说明 df=iris_data.loc[iris_data["花萼长度"].isnull()] print(df) df1=iris_data.loc[iris_data["花萼长度"].isna()] print(df1) df2=iris_data.loc[iris_data["类别"].isnull()] print(df2) df3=iris_data.loc[iris_data["类别"].isna()] print(df3) # 筛选:不为空的前四条信息 df2=iris_data.loc[iris_data["花萼长度"].notnull()] print(df2[:4]) # # 筛选:具体某一个字段包含具体值的前五条 df3=iris_data.loc[iris_data["花萼长度"].isin([5.0])] print(df3[:5]) //输出结果(一一对应) 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 1 NaN 3.5 1.4 0.2 NaN 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 1 NaN 3.5 1.4 0.2 NaN 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 1 NaN 3.5 1.4 0.2 NaN 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 1 NaN 3.5 1.4 0.2 NaN 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 5 5.0 3.6 1.4 0.2 setosa 8 5.0 3.4 1.5 0.2 setosa 26 5.0 3.0 1.6 0.2 setosa 27 5.0 3.4 1.6 0.4 setosa 36 5.0 3.2 1.2 0.2 setosa

    条件统计

    # 打印出类别为某个值的所有字段统计 print(iris_data.loc[iris_data["类别"]=="versicolor"].count()) c1=sum(iris_data["类别"]=="setosa") c2=sum(iris_data["类别"]=="versicolor") c3=sum(iris_data["类别"]=="virginica") # 直接一一输出具体的三个值 print(c1,c2,c3) # 根据“类别”的值分别进行统计,就是所有的值都会显示出来 iris_data["类别"].value_counts() //输出结果(一一对应,因为自己手动改动了一个值为happy,所以第三个的统计结果会出现四个值) 花萼长度 50 花萼宽度 50 花瓣长度 50 花瓣宽度 50 类别 50 dtype: int64 49 50 50 versicolor 50 virginica 50 setosa 49 happy 1 Name: 类别, dtype: int64

    条件赋值

    # 建立数据副本,以便多次修改 DataFrame=iris_data[:5].copy() # 选择出想要的数据然后对其中某个字段重新赋值 DataFrame.loc[DataFrame["花萼长度"]>4.8,"类别"]="大花萼" print(DataFrame) # 建立数据副本,以便多次修改 DataFrame=iris_data[:5].copy() # 选择出想要的数据然后对其所在的信息全部赋值为固定值,主要目的就是可以去除所谓的脏数据,这样更加容易将有用信息筛选出来 DataFrame.loc[DataFrame["花萼长度"]>4.8]="错误赋值" DataFrame //输出结果(一一对应输出) 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 1 4.2 3.5 1.4 0.2 happy 2 4.9 3.0 1.4 0.2 大花萼 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 大花萼 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 1 4.2 3.5 1.4 0.2 happy 2 错误赋值 错误赋值 错误赋值 错误赋值 错误赋值 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 错误赋值 错误赋值 错误赋值 错误赋值 错误赋值

    条件统计

    # count(非空值数)、unique(唯一值数)、top(频数最高者)、freq(最高频数) # unique值为四,就是因为有4个不同的值。count为总行数, iris_data["类别"].describe() # 统计总数(非空值) iris_data["类别"].count() # 某个字段的最大值为多少 print(iris_data["花萼长度"].max()) # 某个字段的的最小值为多少 print(iris_data["花萼长度"].min()) # 某个字段的平均值为多少 print(iris_data["花萼长度"].mean()) # 某个字段的中值为多少 print(iris_data["花萼长度"].median()) # 统计每列的最小值 print(iris_data.min()) # 统计每列的最大值 print(iris_data.max()) # 统计每列的平均值 print(iris_data.mean()) # 统计每列的中值 print(iris_data.median()) //输出结果(一一对应) count 150 unique 4 top versicolor freq 50 Name: 类别, dtype: object 150 7.9 4.2 5.837333333333335 5.8 花萼长度 4.2 花萼宽度 2 花瓣长度 1 花瓣宽度 0.1 类别 happy dtype: object 花萼长度 7.9 花萼宽度 4.4 花瓣长度 6.9 花瓣宽度 2.5 类别 virginica dtype: object 花萼长度 5.837333 花萼宽度 3.057333 花瓣长度 3.758000 花瓣宽度 1.199333 dtype: float64 花萼长度 5.80 花萼宽度 3.00 花瓣长度 4.35 花瓣宽度 1.30 dtype: float64 # 列出不同的值,其实describe()函数都能展示 print(iris_data['类别'].unique()) # 先列出不同的值,然后再排序,默认升序排列 np.sort(iris_data["花萼长度"].unique()) # 聚合操作,可以同时运行多个函数 iris_agg=iris_data.agg(['max','min','mean','median']) iris_agg # 分组,可以统计出每个值统计数量 iris_groupby=iris_data.groupby(["花萼长度"])["花萼长度"].count() iris_groupby //输出结果(一一对应) ['happy' 'setosa' 'versicolor' 'virginica'] array([4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6. , 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7. , 7.1, 7.2, 7.3, 7.4, 7.6, 7.7, 7.9]) 花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别 max 7.900000 4.400000 6.900 2.500000 virginica min 4.200000 2.000000 1.000 0.100000 happy mean 5.837333 3.057333 3.758 1.199333 NaN median 5.800000 3.000000 4.350 1.300000 NaN # 分组,可以统计出每个值统计数量 iris_groupby=iris_data.groupby(["花萼长度"])["花萼长度"].count() iris_groupby # 分组,根据花萼长度进行分组,但根据的并非其数量进行统计了,而是根据类别来统计 iris_review=iris_data.groupby(['花萼长度'])['类别'].agg(['min','max']) iris_review # 分组,根据花萼长度进行分组,根据花瓣长度大小值进行统计 iris_review1=iris_data.groupby(['花萼长度'])['花瓣长度'].agg(['min','max']) iris_review1
    Processed: 0.012, SQL: 9