Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)

DataFrame

   DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成,设计初衷是将Series的使用场景从一维拓展到多维DataFrame既有行索引,也有列索引、

  --- 行索引:  index

 --- 列索引: columns

--- 值:  values(numpy的二维数组)

 DataFrame的创建

  1.   最常用的方法是传递一个字典来创建。

     DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
     此外,DataFrame会自动加上每一行的索引(和Series一样)。
    同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

from pandas import DataFrame
import numpy as np

'''通过字典进行创建'''
dic = {
    "height": [175, 180, 169, 177],
    "age": np.random.randint(18, 25, size=4),
    "sex": ['女', '男', '女', '男']
}
"""
    DataFrame(data=None, index=None, columns=None, dtype=None,copy=False)
    参数解释:  data: 为创建数据的字典   
              index : 不赋值的时,行索引就是从0开始的整数
                      赋值给一个列表,列表的元素即为行索引
              columns : 不赋值时,列名就是字典中键
                      赋值给一个列表,列名就是列表中的元素,
                      如果元素比字典的键多的话,这一列的就为NaN
                      
              
"""
# columns中如果元素比字典的键多的话,这一列的就为NaN
df = DataFrame(dic, index=list('ABCD'), columns=['height', 'age', 'sex', 'weight'])
print(df)
"""
   height  age sex weight
A     175   18   女    NaN
B     180   20   男    NaN
C     169   19   女    NaN
D     177   23   男    NaN
"""

2. 打印DataFrame的形状   .shape

# 打印DataFrame的形状
print(df.shape)
"""
(4, 4)
"""

3.给DataFramed的行索引重新赋值  .index

# 重新给DataFrame的行索引赋值
df.index = [1, 2, 3, 4]
print(df)
"""
   height  age sex weight
1     175   22   女    NaN
2     180   23   男    NaN
3     169   22   女    NaN
4     177   21   男    NaN
"""

4. 修改DataFrame的列名(给DataFrame的列名重新赋值)

# 修改DataFrame的列名
df.columns = [0, 2, 4, 6]
print(df)
"""
     0   2  4    6
1  175  24  女  NaN
2  180  23  男  NaN
3  169  21  女  NaN
4  177  22  男  NaN
"""

 

 DataFrame的索引

1.对列进行索引

     - 通过类似字典的方式

      - 通过属性的方式

  可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。

# 通过字典的形式进行检索   【检索列返回值,是Series类型】
print(df['age'])
"""
A    20
B    20
C    18
D    22
Name: age, dtype: int3
"""
# 通过属性的方式进行检索
# 对于DataFrame而言,列名就相当于属性
# DataFrame 是统计数据时,用的表格,某一个事物属性,每一个属性对应的DataFran中的列名
print(df.age)
"""
A    21
B    22
C    18
D    21
Name: age, dtype: int32
"""

2.对行进行索引
    -- 使用.ix[]来进行行索引   (过时)
    -- 使用.loc[]加index来进行行索引

    -- 使用.iloc[]加整数来进行行索引

     同样返回一个Series,index为原来的

# 行索引
'''显示索引'''
# 对于行的检索,返回值也为Series
print(df.loc['A'])
"""
Name: age, dtype: int32
height    175
age        19
sex         女
weight     55
Name: A, dtype: object
"""

# 中括号括起来,代表的是条件, 即检索多行,返回的数据就是DataFrame
print(df.loc[['A', 'B']])
"""
   height  age sex  weight
A     175   24   女      55
B     180   21   男      78
"""

'''
    对于切片而言没有列切片(因为列是属性 )
'''
# 可以进行切片索引,左闭右闭
print(df.loc['A':'C'])
"""
   height  age sex  weight
A     175   21   女      55
B     180   20   男      78
C     169   19   女      71
"""

'''隐式索引(左闭右开)'''
# DataFrame自身有Bug,索引是汉字,有时无法检索结果
print(df.iloc[1:3])
"""
   height  age sex  weight
B     180   18   男      78
C     169   19   女      71
"""

3.对元素索引的方法  (查询到具体的数据)

  -- 使用列索引

  -- 使用行索引   (iloc[3,1]) 相当于两个参数; iloc[[3,3]] 里面的[3,3] 看做一个参数

  -- 使用values属性 (二维numpy数组) 

'''对元素进行索引'''
# 查询到具体额数据
# 找到 列名为sex的,行索引为B的数据
print(df['sex']['B'])  # 男
# 可以直接修改具体的值 (再进行修改值的时候,会抛出一个警告,让我们去copy一份,
# 根据具体的情况可以忽略,程序是可以正常执行的)
df['sex']['B'] = '女博士'
print(df)
"""
   height  age  sex  weight
A     175   22    女      55
B     180   20  女博士      78
C     169   18    女      71
D     177   23    男      98
"""

'''使用loc取出具体的元素'''
# 检索行的时候,参数可以多个,但是列,无法完成这样的操作
print(df.loc['C']['height'])  # 169
print(df.loc['C', 'height'])  # 169

'''可以使用values取出某个数据'''
# 使用values取出第一行的第三个(从0开始,左闭右闭)
print(df.values[0,2])     # 55

【注意】 直接用中括号时:
             ---索引表示的是列索引
             ----切片表示的是行切片

  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值