博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二、Python开发---34、pandas(2)

Posted on 2020-03-05 22:26  兰智杰  阅读(176)  评论(0编辑  收藏  举报

DataFrame

  1、通过二维数组创建

import pandas as pd
import numpy as np
df01=pd.DataFrame([['tony','marry','tom'],[18,20,25]])
print(df01)
'''
输出为        0      1    2
        0  tony  marry  tom
        1    18     20   25
'''
arr=np.array([
                ['小雪',16],
                ['刘星',12],
                ['夏东海',35]
             ])
df02=pd.DataFrame(arr,index=['one','two','three'],columns=['name','age'])
print(df02)
'''
输出为          name age
        one     小雪  16
        two     刘星  12
        three  夏东海  35
'''
print('值:',df02.values)
'''
输出为 值: [['小雪' '16']
            ['刘星' '12']
            ['夏东海' '35']]
'''
print('index:',df02.index)  #输出为 index: Index(['one', 'two', 'three'], dtype='object')

  2、通过字典创建

import pandas as pd
data={
        'apart':['101','102','103','104'],
        'month':['8月','9月','12月','6月'],
        'year':[2000,1999,2019,1998],
        'age':[18,20,15,23]
      }
df03=pd.DataFrame(data,index=['01','02','03','04'])
print(df03)
'''
输出为      apart month  year  age
        01   101    8月  2000   18
        02   102    9月  1999   20
        03   103   12月  2019   15
        04   104    6月  1998   23
'''

索引对象

  不管是Series还是DataFrame对象,都有索引对象,索引对象负责管理轴标签和其它元数据(eg:轴名称等等),通过索引可以从Series、DataFrame中获取值或者对某个索引值进行重新赋值,Series或者DataFrame的自动对齐功能是通过索引实现的

  数据抓取方式:

  列:
    直接通过列索引获取指定列的数据——df04.名称df04[‘名称’]

# 抓取列数据
import pandas as pd
df04=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
print(df04)
'''
输出为        姓名   成绩
        0    tom    22
        1  marry    18
        2   tony    20
'''
print(df04.姓名)              #等价于df04['姓名']
'''
输出为   0      tom
        1    marry
        2     tony
        Name: 姓名, dtype: object
'''

    添加数据给列,原始数据几条就匹配添加几条,新添加的多了报数据大小不匹配——df[‘名称’]=[值]

# 添加列数据
import pandas as pd
df05=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df05['性别']=['','','']
print(df05)
'''
输出为        姓名   成绩   性别
        0    tom    22    男
        1  marry    18    女
        2   tony    20    男
'''

    删除数据,利用pop函数——df06.pop(‘名称’)

# 删除列数据
import pandas as pd
df06=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
print(df06)
'''
输出为        姓名  成绩
        0    tom    22
        1  marry    18
        2   tony    20
'''
df06.pop('成绩')
print(df06)
'''
输出为        姓名
        0    tom
        1  marry
        2   tony
'''

    修改列数据,直接通过字段名称赋值修改——df[‘名称’]=[值]

# 修改列数据
import pandas as pd
df07=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df07['成绩']=[99,88,100]
print(df07)
'''
输出为        姓名   成绩
        0    tom    99
        1  marry    88
        2   tony    100
''' 

  行:

    通过ix获取行数据

    通过loc获取——df.loc[] df.loc[0,’’]==df.loc[0][’’]

# 获取行数据
import pandas as pd
df08=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
print('ix:',df08.ix[0])         #系统弃用
'''
输出为  ix:  姓名    tom
            成绩     22
            Name: 0, dtype: object
'''
print('loc:',df08.loc[1])       
'''
输出为 loc:  姓名     marry
            成绩       18
            Name: 1, dtype: object
'''
print('iloc:',df08.loc[1])
'''
输出为 iloc:  姓名    marry
             成绩       18
             Name: 1, dtype: object
'''

 

    添加行——df.ix[]=[] df.loc[]=[]

# 添加行
import pandas as pd
df08=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df08.ix[3]=['bob',10]           #系统弃用
df08.loc[4]=['gun',100]
print(df08)
'''
输出为       姓名   成绩
        0    tom     22
        1  marry     18
        2   tony     20
        3    bob     10
        4    gun    100
'''

 

    修改行——df.ix[]=[] df.loc[]=[]

# 修改行
import pandas as pd
df08=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df08.loc[2]=['Gun',100]
print(df08)
'''
输出为        姓名   成绩
        0    tom    22
        1  marry    18
        2    Gun    100
'''

 

  总结:不管是ix、loc 都是通过index取值