直线的秘密吧 关注:15贴子:6,021
  • 7回复贴,共1


IP属地:北京1楼2016-12-15 14:23回复
    pandas实际上是借助于numpy这个包,在这个包的依赖之上构建自己的数据结构和使用方法


    IP属地:北京2楼2016-12-15 14:27
    回复
      Series实际上就是numpy里面的array 加了一个索引,形成一个新的序列
      obj = Series([3,4,6,4,2,65,9])
      print obj
      print obj[1]
      print obj.index
      print obj.values
      obj = Series([3,4,6,4,2,65,9], index=['a','b','c','d','e','f','g'])
      print obj['b']
      print obj[obj > 5]
      print obj.name
      a = Series([1,2,3,4,7,8])
      print a
      a.index = ['a','b','c','d','e','f']
      print a
      可以自定index 可以直接筛选


      IP属地:北京3楼2016-12-17 21:43
      回复
        #这里的key会变成index
        sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
        print sdata
        aaa = Series(sdata)
        print aaa
        #会进行筛选,states就是指定的index名字,数据中没有的会变成None
        states = ['California', 'Ohio', 'Oregon', 'Texas']
        bbb = Series(sdata, index=states)
        ccc = pd.isnull(bbb)
        print ccc
        bbb.index.name="woshitest"
        bbb.name='woyeshi'
        #可以通过Series对象来进行筛选
        print bbb[pd.notnull(bbb)]
        #Series可以直接进行相加,必须有相同的index,不相同的index会直接变成None
        print bbb+bbb
        print aaa+bbb
        #如果直接变成数据框的话,字典里面的key会变成index
        print DataFrame(sdata,index=['a'])


        IP属地:北京5楼2016-12-17 22:27
        回复
          data = {'state':['china','usa','eng'],
          'year':[2005,2006,2007.2],
          'pop':[1.5, 1.6, 1.7]}
          frame = pd.DataFrame(data,index=['a','b','c'])
          print frame
          #对数据框进行列统计,各种统计学
          bbb = frame.describe()
          print bbb
          #可以对单列进行值得类型转换
          bbb['pop'] = bbb['pop'].astype(np.int)
          print bbb
          #可以直接对数据框整体,这个相当有用
          bbb = bbb.astype(np.int)
          print bbb


          IP属地:北京7楼2016-12-17 23:03
          回复
            #每一列都是Series对象
            print type(frame['state'])
            #列名竟然可以当做属性来使用
            print frame.state
            print frame.year
            print '-=-=-=-=-=-=-=-=-=-=-='
            #直接调用行数,列名会变成index
            print frame.ix[1]
            #也可以直接调用index名字
            print frame.ix['b']
            print frame.ix[1]['pop']
            print "type(frame.ix[1]):" + str(type(frame.ix[1]))


            IP属地:北京9楼2016-12-17 23:25
            回复
              #可以对整列进行赋值
              frame['pop'] ='abc'
              print frame
              #可以通过Series对数据框的列赋值
              val = Series([-1.2, -1.5], index=['a', 'c'])
              frame['state']=val
              print frame
              #给一个不存在的列赋值
              frame['eastern'] = frame.state == -1.5
              print frame
              print frame.columns
              #可以删除某一列
              del frame['eastern']
              print frame.columns
              #浅拷贝,拷贝值,修改之后不影响原数据框
              eee = frame.state.copy()
              print eee
              print '-------'
              print frame[:2]
              rrr = frame.drop(['b'], axis=0)
              print rrr
              print frame
              print frame.groupby('year').count()
              print frame['year'][:2]
              print len(frame.index)
              print frame.values
              print frame.ix['c',['state','year']]
              #可以在数据框的加法中,预先赋值,避免不相同行列出现None
              print frame.reindex(columns=['state','goo'], fill_value=0)


              IP属地:北京10楼2016-12-18 00:38
              回复
                import pandas as pd
                reader = pd.read_csv('data/servicelogs', iterator=True)
                loop = True
                chunkSize = 100000
                chunks = []
                while loop:
                try:
                chunk = reader.get_chunk(chunkSize)
                chunks.append(chunk)
                except StopIteration:
                loop = False
                print "Iteration is stopped."
                df = pd.concat(chunks, ignore_index=True)
                使用不同分块大小来读取再调用 pandas.concat 连接DataFrame,chunkSize设置在1000万条左右速度优化比较明显。


                IP属地:北京11楼2016-12-18 00:55
                回复