zoukankan      html  css  js  c++  java
  • python:pandas中dataframe的基本用法汇总

    更加详细的内容可以查看:https://blog.csdn.net/hhtnan/article/details/80080240 (基本函数整理)

    一.  DataFrame的创建

      创建一个空的dataframe 

    df=pd.DataFrame(columns={"a":"","b":"","c":""},index=[0])

      out:

         a    c    b
    0  NaN  NaN  NaN
    

     用list的数据创建dataframe:

    a = [['2', '1.2', '4.2'], ['0', '10', '0.3'], ['1', '5', '0']]
    df = pd.DataFrame(a, columns=['one', 'two', 'three'])
    print df

      out:

      one  two three
    0   2  1.2   4.2
    1   0   10   0.3
    2   1    5     0
    

       用numpy的矩阵创建dataframe

    array = np.random.rand(5,3)
    df = pd.DataFrame(array,columns=['first','second','third'])

      用dict的数据创建DataFrame

    data = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] }
    df = pd.DataFrame(data)
    
    dict = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] }
    df = pd.DataFrame.from_dict(dict,orient='index').T
    

       

      读取csv或者excel文件为DataFrame格式

    df=pd.read_csv('D:/Program Files/example.csv')
    

      excel一个表格中可能有多个sheet,sheetname可以进行选取

    df = df.read_excel('D:/Program Files/example.xls',sheetname=0)
    

      


    二. DataFrame的一些描述和类型

       describe会显示dataframe的一些基本统计数据,数量、均值、中位数、标准差等

       head会显示dataframe的前几行,后几行:

    print df.describe()
    print df.head()
    print df.tail(10)

      单独计算某列的统计值

    df['one'].sum()
    df['one'].mean()
    df['one'].count()
    df['one'].max()
    df['one'].min()
    

      查看dataframe的数据类型:

    print (df.dtypes)
    

      查看dataframe的数据数目:

    print (df.size)
    

      查看dataframe的形状:

    print (df.shape)
    

      返回列数:

    print (df.ndim)
    

      查看横纵坐标的标签名:

    print (df.axes)
    

      


    三. DataFrame的切片

      iloc索引或切片(iloc中只能取整数值):

    print df.iloc[1,:] #第1行,所有列
    print df.iloc[:,[0,2]] #第0行,第0列和第2列
    print df['one'].iloc[2] #列名索引+行号
    

      loc索引或切片(loc中可以取str):

    print data.loc[0:1, ['one', three']] #
    

      筛选出dataframe中有某一个或某几个字符串的列:

    list=['key1','key2']
    df = df[df['one'].isin(list)]
    

      筛选出dataframe中不含某一个或某几个字符串的列,相当于反选

    df = df[~df['one'].isin(list)]
    

      


    四. 缺失值的处理

      缺失值可以删除也可以用均值或者0等数填充:

    df.fillna(df1.mean())
    df.fillna(0)
    

     删除缺失值时可以指定列:

    df = df.dropna(subset=['one','two'])
    

      


    五. 去重、删除行或列

      去重需要在subset指定哪一列的值进行筛选,如果不选择的话默认整行的值全部一样才去掉

      first表示保留第一个出现的值所在行,last表示保留最后一个出现的重复值所在的行,false表示重复的行全部删除

    df=df.drop_duplicates(subset='one',keep='first')
    

      去除有NaN值的行或列(axis=0去除行,=1去除列):

    df = df.dropna(axis=0)
    df = df.dropna(axis=1)
    

      去除某一列:

    df = df.drop(['one'],axis=1)
    

      去除含有某一个数的行:

    row_list = df[df.one == 2].index.tolist() # 获得含有该值的行的行号
    df = df.drop(row_list)
    

      


     六. DataFrame的修改

      修改数据类型

    df['one']=pd.DataFrame(df['one'],dtype=np.float)
    

      修改列名(需要写上所有列名,包括需要修改的和不需要修改的):

    df.columns = ['first','second','all']
    

      修改列名(只需写上需要修改的列)

    df.rename(columns = {'one':'first','two':'second'},inplace = True) #inplace=True表示修改df,若为False表示只返回一个修改后的数据
    

      重排序(by可以取多个列名,默认升序):

    df = df.sort_values(by=['one'],ascending = True)
    df = df.sort_index(axis = 0,ascending = True,by = 'one')
    df = df.sort(columns = ['one'],axis = 0,ascending = True)

      修改数据

    df.iloc[1,2] = 10

      用已有的列进行运算创建新的列

    df['new_colume'] = df['one'] + df['two']
    

      


    七. dataframe更改索引

      当删除掉不需要的行时,行索引会变的不连续,这时候可以重新设计新的索引

    df['index']=range(len(df['one']))
    df.set_index('index')
    

      设置时间序列为索引

    dd = pd.date_range(start='4/1/2018',periods=5)
    #dd = pd.date_range('4/1/2018','4/5/2018')
    df = df.set_index(dd)
    

      


     八. 添加新的行,将两个dataframe连接到一起

      axis表示连接的方向,axis=0表示两个dataframe的行数会增加,如果列名相同则直接共用列,如果列名不同会生成新的列;axis=1,表示会加上新的列

    df=pd.concat([df,df],axis=0) # 连接后行数是以前的2倍,列数不变

       在dataframe添加新的行

    df = df.append(df.loc[2,:],,ignore_index=True) 
    

      如果两个dataframe的列名是一样的,也可以用merge:

    df = pd.merge(df,df)
    

      


    九. DataFrame的输出

      输出为excel或者csv格式,csv文件里的数据被读取时数据类型默认为object,excel则会保留原有的数据类型

    df.to_excel('path/filename.xls')
    df.to_csv('path/filename.csv')

      输出为numpy的矩阵格式

    matrix = df.ax_matrix()

      输出为dict格式

    dict = df.to_dict(orient="dict")
    

      


  • 相关阅读:
    1014. 福尔摩斯的约会
    1009. 说反话
    1002. 写出这个数
    1031. 查验身份证
    1021. 个位数统计
    1006. 换个格式输出整数
    1058. A+B in Hogwarts
    1027. Colors in Mars
    1019. General Palindromic Number
    Windows 新装进阶操作指南
  • 原文地址:https://www.cnblogs.com/timotong/p/9678490.html
Copyright © 2011-2022 走看看