pandas学习总结

pandas中:

  • string属于object类型
  • integer属于int类型
  • boolean属于bool类型
  • 还存在着float、datatime等类型

read_csv()方法只能读取不带中文的文件目录和文件名。若是存在中文需要open()方法打开,在进行读取,否则回报错

    import pandas
    f=open("H:\\机器学习\\机器学习\\01.python数据分析与机器学习实战\\视频课程\\资料\python库代码\\2-数据分析处理库pandas\\food_info.csv")
    a=pandas.read_csv(f)
    print(type(a))#<class 'pandas.core.frame.DataFrame'>
    print(a)

head:用来显示数据,在未指定显示数据的条数时,默认显示5条数据

        b=a.head()
        print(b) #只显示五条数据
        b=a.head(3)
        print(b)

shape:根据行数和列数来显示数据的长度和宽度

print(b.shape) #(3, 36)

loc:loc(index)根据索引显示指定位置的数据

        b=a.loc[0]
        print(b) #显示第0行的数据
        d=a.loc[2:4]
        print(d) #显示第2行到第4行的数据
        e=a.loc[[1,3,6]]
        print(e) #index此时是列表的形式,所以展示的是第1行、第3行、第6行的数据
还可以根据索引的方式将显示某列的数据
        b=a['NDB_No']
        print(b) #将会显示在该列的所有数据
同样,可以传入一个列表,显示多列的数据
        c=a[['NDB_No','Shrt_Desc']]
        print(c)

columns:用来显示每列的键值 index:用来显示每行的键值

print(a.columns) #会显示所有的列的键值,获得所有的列名

        #Index(['NDB_No', 'Shrt_Desc', 'Water_(g)', 'Energ_Kcal', 'Protein_(g)',
               'Lipid_Tot_(g)', 'Ash_(g)', 'Carbohydrt_(g)', 'Fiber_TD_(g)',
               'Sugar_Tot_(g)', 'Calcium_(mg)', 'Iron_(mg)', 'Magnesium_(mg)',
               'Phosphorus_(mg)', 'Potassium_(mg)', 'Sodium_(mg)', 'Zinc_(mg)',
               'Copper_(mg)', 'Manganese_(mg)', 'Selenium_(mcg)', 'Vit_C_(mg)',
               'Thiamin_(mg)', 'Riboflavin_(mg)', 'Niacin_(mg)', 'Vit_B6_(mg)',
               'Vit_B12_(mcg)', 'Vit_A_IU', 'Vit_A_RAE', 'Vit_E_(mg)', 'Vit_D_mcg',
               'Vit_D_IU', 'Vit_K_(mcg)', 'FA_Sat_(g)', 'FA_Mono_(g)', 'FA_Poly_(g)',
               'Cholestrl_(mg)'],
              dtype='object')

tolist:将获得的列名或行名列出来

    print(a.columns.tolist())

可以根据索引在整列数据找出来后进行运算操作(+,-,*,/等)

        b=a["Iron_(mg)"]/10
        print(b)#每列的数据将会除10

格式相同的两列数相操作是对应位置相操作

        d = a["Water_(g)"] * a["Energ_Kcal"]
        print(d) #对应位置相乘

在数据表原有的基础上添加一列数据

    a["Iron_(g)"] = d

max:求解一组数据的最大值

        max_calories = a["Energ_Kcal"].max()
        print(max_calories) #求该列数据的最大值

sort_value:

sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')       
        axis:axis:0按照行名排序;1按照列名排序, default 0,默认按照索引排序,即纵向排序,如果为1,则是横向排序    
        by:如果axis=0,那么by="列名";如果axis=1,那么by="行名"ascending:布尔型,True则升序,可以是[True,False],即True:升序,False:降序  
        inplace:布尔型,是否用排序后的数据框替换现有的数据框  
        kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心  
        na_position : {‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面 

isnull:返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值/NA,该对象的类型与源类型一样

        age=t["Age"]
        age_is_null=p.isnull(age)

        at=age[age_is_null]
        print(at) #打印缺失值

notnul:isnull的否定式
len:计算一组数据的个数
计算一组数据的平均值时可能数据中存在缺失值,因此要将缺失值去掉,在进行平均值计算,否则会出现nan

        age=t["Age"]
        age_is_null=p.isnull(age)
        is_age=age[age_is_null==False]
        average=sum(is_age)/len(is_age)
        print(average)
        或直接使用mean方法
        average2=age.mean()
        print(average2)

pivot_table:

    DataFrame.pivot_table(data, values=None, index=None, columns=None, aggfunc=’mean’, fill_value=None, margins=False, dropna=True, margins_name=All’)
        data: DataFrame对象 
        values: 显示的列的名字,可以应用aggfunc中的函数 
        index: 索引 
        columns: 可选的,通过额外的方法来分割你所关心的实际值,然而aggfunc被应用到values上, aggfunc默认的是mean
    average4=t.pivot_table(index="Pclass",values="Age")
    print(average4)
    #
    Pclass      Age     
    1       38.233441
    2       29.877630
    3       25.140620

    同样可以求一起对多列进行计算
    average4=t.pivot_table(index="Pclass",values=["Age","Survived"])
    print(average4)

dropna:将缺省值删除

        b=t.dropna(axis=0,subset=["Age"])
        print(b) #将Age的缺省值删去

reset_index:reset_index(drop=True)
由于sort_values方法可以对表格中的数据进行排序,排序后可能导致前面的index混乱
所以可以使用reset_index重新对索引进行排序

        new= t.sort_values("Age",ascending=False)
        c= new.reset_index(drop=True)

apply:

DataFrame.apply(func, axis=0, broadcast=False, raw=False,
reduce=None, args=(), **kwds) 在给定轴方向应用函数 可以使用apply函数调用自定义的函数
func : function|要应用在行和列的函数 axis : {0 or ‘index’, 1 or ‘columns’},
default 0|选择是行还是列 args : tuple|函数的参数

    def not_null_count(column):
        column_null = pd.isnull(column)
        null = column[column_null]
        return len(null)

    column_null_count = t.apply(not_null_count)
    print(column_null_count)

pandas中主要有两种数据结构,分别是:SeriesDataFrame

Series是一种类似于一维数组的对象,由下面两个部分组成: values:一组数据(ndarray类型)
index:相关的数据索引标签

猜你喜欢

转载自blog.csdn.net/ShaoDu/article/details/81603313
今日推荐