zoukankan      html  css  js  c++  java
  • pandas的基本功能

    一、重新索引

         (1)reindex方式

    obj = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
    print(obj)
    obj.reindex(range(6), method='ffill')#使用ffill可以实现前向值填充
    print(obj)

        对于DataFrame,reindex只传递一个序列时,会重新索引结果的行。

     frame = pd.DataFrame(np.arange(9).reshape((3, 3)),index=['a', 'c', 'd'],columns=['Ohio', 'Texas', 'California'])
     print(frame)
     frame2 = frame.reindex(['a', 'b', 'c', 'd'])
     print(frame)

       (2)对于DataFrame列,可以用columns关键字重新索引

    states = ['Texas', 'Utah', 'California']
    frame.reindex(columns=states)
    

     二、丢弃指定轴上的项,drop方法

        (1)Series

    obj = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])
    obj.drop('c')
    obj.drop(['c','d'])

        (2)DataFrame

    data = pd.DataFrame(np.arange(16).reshape((4, 4)),
    index=['Ohio', 'Colorado', 'Utah', 'New York'],
    columns=['one', 'two', 'three', 'four'])
    
    #删除行
    data.drop(['Ohio', 'Colorado'])
    
    #删除列,通过传递axis=1或axis='columns'可以删除列的值
    data.drop('two',axis=1)
    data.drop(['two', 'four'], axis='columns')
    obj.drop('c', inplace=True)#就地修改对象,不会返回新的对象,小心使用inplace,它会销毁所有被删除的数据。

     三、索引、选取和过滤  

    #Series
    obj = pd.Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
    obj['b']
    obj[1]
    obj[2:4]
    obj[['b', 'a', 'd']]
    obj[[1, 3]]
    obj[obj < 2]#过滤
    obj['b':'c']#利用标签的切片运算与普通的Python切片运算不同,其末端是包含的
    obj['b':'c'] = 5#用切片可以对Series的相应部分进行设置
    
    #DataFrame
    data = pd.DataFrame(np.arange(16).reshape((4, 4)),
    index=['Ohio', 'Colorado', 'Utah', 'New York'],
    columns=['one', 'two', 'three', 'four'])
    
    data['two']
    data.two
    data[['three', 'one']]
    data[:2]
    data[data['three'] > 5]
    

    四、用loc和iloc进行选取

    data.loc['Colorado', ['two', 'three']]
    data.iloc[2, [3, 0, 1]]
    data.loc[:'Utah', 'two']
    data.iloc[:, :3][data.three > 5]
    

    五、算术运算和数据对齐

    #Series
    s1 = pd.Series([7.3, -2.5, 3.4, 1.5], index=['a', 'c', 'd', 'e'])
    s2 = pd.Series([-2.1, 3.6, -1.5, 4, 3.1], index=['a', 'c', 'e', 'f', 'g'])
    s1+s2#重叠索引处进行算术运算,不重叠的索引处引入了NA值。
    
    #DataFrame
    df1 = pd.DataFrame(np.arange(9.).reshape((3, 3)), columns=list('bcd'),index=['Ohio', 'Texas', 'Colorado'])
    df2 = pd.DataFrame(np.arange(12.).reshape((4, 3)), columns=list('bde'),index=['Utah', 'Ohio', 'Texas', 'Oregon'])
    df1+df2#行和列索引都相同时进行相应的算术运算,任何一个不一样时就会引入缺失值
    
    #在算术方法中填充值
    df1 = pd.DataFrame(np.arange(12.).reshape((3, 4)),columns=list('abcd'))
    df2 = pd.DataFrame(np.arange(20.).reshape((4, 5)),columns=list('abcde'))
    df2.loc[1, 'b'] = np.nan
    df1.add(df2,fill_values=0)#用0填充df1和df2的缺失值,然后再进行算术运算,结果中将不存在缺失值。
    
    #下边两行代码是等价的,r会翻转参数。
    1 / df1
    df1.rdiv(1)
    

    六、DataFrame和Series之间的运算

    frame = pd.DataFrame(np.arange(12.).reshape((4, 3)),columns=list('bde'),index=['Utah', 'Ohio', 'Texas', 'Oregon'])
    series = frame.iloc[0]
    frame - series#DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播
    series2 = pd.Series(range(3), index=['b', 'e', 'f'])
    frame + series2#如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的两个对象就会被重新索引以形成并集
    
    #如果你希望匹配行且在列上广播,则必须使用算术运算方法。
    series3 = frame['d']
    frame.sub(series3, axis='index')
    

    七、排序和排名

    #sort_index():按obj的索引排序,默认升序,降序可在括号加ascending=False
    obj = pd.Series(range(4), index=['d', 'a', 'b', 'c'])
    obj.sort_index()
    frame = pd.DataFrame(np.arange(8).reshape((2, 4)),index=['three', 'one'],columns=['d', 'a', 'b', 'c'])
    frame.sort_index()
    frame.sort_index(axis=1)
    frame.sort_index(axis=1, ascending=False)
    
    #sort_values():按值进行排序
    obj = pd.Series([4, 7, -3, 2])
    obj.sort_values()#在排序时,任何缺失值默认都会被放到Series的末尾
    frame = pd.DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})
    frame.sort_values(by='b')
    
    #rank():结果为个位置的排名值
    obj = pd.Series([7, -5, 7, 4, 2, 0, 4])
    obj.rank()
    obj.rank(method='first')#根据值在原数据中出现的顺序给出排名
    
    frame = pd.DataFrame({'b': [4.3, 7, -3, 2], 'a': [0, 1, 0, 1], 'c': [-2, 5, 8, -2.5]})
    frame.rank(axis='columns')
    

    八、汇总和计算描述统计

    Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。与此类似,cov用于计算协方差。

    obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
    uniques = obj.unique()#得到Series中的唯一值数组
    obj.value_counts()#计算Series中各值出现的频率
  • 相关阅读:
    jdbc和DBeaver客户端连接oracle很慢,初始化连接成功后速度正常
    centos7中vncserver连接失败
    postgres数据库建库、修改owner
    nested exception is org.apache.ibatis.binding.BindingException:
    postgresql导出表insert方式数据
    解决ecllipse注释模板不生效问题
    postgresql 修改表属性,包括新增、修改、删除列
    ssh本机可登陆远端服务器,但远端服务器无法登陆本机
    linux源码安装后,设置动态库路径和环境变量
    valgrind跟踪调试动态库*.so
  • 原文地址:https://www.cnblogs.com/yuhou/p/11283417.html
Copyright © 2011-2022 走看看