Pandas基础知识(二)——DataFrame对象

一个初学者小菜鸟的笔记,欢迎纠正!

目录

DataFrame对象

创建DataFrame对象

列表方式创建DataFrame对象

DataFrame的重要性

 DataFrame的取值

条件取值:

 DataFrame的常用函数:

DataFrame的常用函数:

自定义函数apply

 索引对象: 



DataFrame对象

  • DataFrame对象是Pandas库中的一种数据结构,类似于二维表,由行和列组成。每列可以是不同的值类型(数值、字符串、布尔值等)
  • Series一样支持多种数据类型。
  • DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)

创建DataFrame对象

 格式: pd.DataTrame(data,index,columns,dtype)

  • columns 为列索引
  • index 为行索引
  • dtype为每一列数据的数据类型
  • 列表方式创建DataFrame对象

  • DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)
  • import pandas as pd
    data = [['苹果',5,100],['梨',4,50],['香蕉',2,80]]
    columns = ['名称','单价','数量']
    df = pd.DataFrame(data = data,columns = columns)
    print(df)
    
    '''输出:
    
       名称  单价   数量
    0  苹果   5  100
    1   梨   4   50
    2  香蕉   2   80
    '''

  •  
    df = pd.DataFrame([['苹果',5,10],['梨',4,50],['香蕉',2,80]],columns = ['名称','单价','数量'],index = [1,2,3])
    print(df)
    
    
    '''输出:
    
       名称  单价  数量
    1  苹果   5  10
    2   梨   4  50
    3  香蕉   2  80
    '''
  • 字典方式创建DataFrame对象
  • data = {
        '名称':['苹果','梨','香蕉'],
        '单价':[5,4,2],
        '数量':[100,50,80]
    }
    df = pd.DataFrame(data=data)
    print(df)
    
    
    '''输出:
    
       名称  单价   数量
    0  苹果   5  100
    1   梨   4   50
    2  香蕉   2   80
    '''

DataFrame的重要性

 DataFrame的取值

通用方法:loc按索引取值,iloc按下标取值(少用)

格式:df.loc[ 行索引或范围, 列索引或范围 ]

其中,范围用列表来表示,且可以用冒号: 表示全范围

返回结果: 如果行和列都是范围,结果为dataframe

行和列其中一个是范围,结果为Series

行和列都是一个值,结果为单个元素

 例子:

data = {'姓名':['张三','李四','王五'],'年龄':[21,22,20],'成绩':[86,80,90]}
df = pd.DataFrame(data)
print(df)


'''输出:

   姓名  年龄  成绩
0  张三  21  86
1  李四  22  80
2  王五  20  90
'''
  • 取所有行的年龄列
print(df.loc[:,'年龄'])  #取所有行的年龄列

'''输出:

0    21
1    22
2    20
'''
  • 取第一行的所有列
print(df.loc[1,:])  #取第一行的所有列

'''输出:

姓名    李四
年龄    22
数量    80
'''
  • 取1 2 行的姓名、成绩列
print(df.loc[[1,2],['姓名','成绩']])  #取1 2 行的姓名、成绩列

'''输出:

   姓名  成绩
1  李四  80
2  王五  90
'''
  • 取第一行的姓名
print(df.loc[1,'姓名'])   #取第一行的姓名

'''输出: 李四
'''

提示:

当行的范围为:时,可以直接写成字典取值的形式   

 df.loc[:,'年龄']    可以写成    df['年龄']

当列的范围为:时,可将列范围省略(loc不可省略)   

 df.loc[1,:]    可以写成    df.loc[1]

条件取值:

 :条件取值:格式相同,只是把范围写成比较的式子

print(df.loc[df['年龄'] > 20])  #取年龄大于20的行的所有列

'''输出:

 姓名  年龄  成绩
0  张三  21  86
1  李四  22  80

'''
print(df.loc[df['年龄'] > 20,['姓名','年龄']])  #取年龄大于20的行的姓名、年龄

'''输出:

   姓名  年龄
0  张三  21
1  李四  22

'''
print(df.loc[:,df.loc[0] == 86])  #取第0行的值为90的列的所有行

'''输出:

   成绩
0  86
1  80
2  90

'''

 DataFrame的常用函数:

  •  求和sum、求平均值mean、求最大值max、最小值min,这些函数用法相同,其中参数填0则计算列,填1则计算行,不填则视为0,得到的结果是Series
df = pd.DataFrame([[1,2,3],[4,5,6]],columns = ['a','b','c'])
print(df)

'''输出:
   a  b  c
0  1  2  3
1  4  5  6

'''
  •  计算各列值的和
print(df.sum(0)) #计算各列值的和

'''输出:
a    5
b    7
c    9

'''
  • #计算各行值的和
print(df.sum(1))  #计算各行值的和

'''输出:
0     6
1    15

'''

DataFrame的常用函数:

  • 自定义函数apply

给给df增加一个新的列‘和’,它的值为abc列的值的和

df = pd.DataFrame([[1,2,3],[4,5,6]],columns = ['a','b','c']) 

def func(x):  #这里的x代指df里的每一行
    x['和'] = x['a'] + x['b'] + x['c']
    return x
df = df.apply(func,axis=1)  #axis=1表示以行为单位放入func
print(df)

'''输出:
   a  b  c   和
0  1  2  3   6
1  4  5  6  15

'''

将bc列的值取绝对值

df = pd.DataFrame([[-1,-2,3],[-4,-5,6]],columns = ['a','b','c']) 

def func(x):  #这里的x代指df里的每一行列
    x = abs(x)
    return x
df[['a','b']] = df[['a','b']].apply(func,axis=0)  #axis=1表示以列为单位放入func
print(df)

'''输出:
   a  b  c
0  1  2  3
1  4  5  6

'''

 索引对象: 

 索引对象可以理解为表的主键,DataFrame默认是没有索引对象的,且默认从0开始计数,可以使用set_index函数设置某个字段标签为索引对象

​
df = pd.DataFrame([[1,2,3],[4,5,6]],columns = ['a','b','c']) 
print("默认索引:")
print(df)

df1 = df.set_index('a')
print("a作索引:")
print(df1)


'''输出:

默认索引:
   a  b  c
0  1  2  3
1  4  5  6

a作索引:
   b  c
a      
1  2  3
4  5  6

'''

​

猜你喜欢

转载自blog.csdn.net/weixin_63292027/article/details/128065632