美文网首页
pandas dataframe中的数据选择1

pandas dataframe中的数据选择1

作者: 筝韵徽 | 来源:发表于2019-01-04 18:25 被阅读107次
    import pandas as pd
    import numpy as np
    

    使用[], loc ,iloc 选择数据

    先看看 DataFrame 组成有哪些 ,如下:

    
    df=pd.read_csv('data/sample_data.csv',index_col=0)
    df
    
    image.png
    index = df.index
    columns = df.columns
    values = df.values
    index
    
    Index(['Jane', 'Niko', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'], dtype='object')
    
    columns
    
    Index(['state', 'color', 'food', 'age', 'height', 'score'], dtype='object')
    
    values
    
    array([['NY', 'blue', 'Steak', 30, 165, 4.6],
           ['TX', 'green', 'Lamb', 2, 70, 8.3],
           ['FL', 'red', 'Mango', 12, 120, 9.0],
           ['AL', 'white', 'Apple', 4, 80, 3.3],
           ['AK', 'gray', 'Cheese', 32, 180, 1.8],
           ['TX', 'black', 'Melon', 33, 172, 9.5],
           ['TX', 'red', 'Beans', 69, 150, 2.2]], dtype=object)
    
    type(index)
    
    pandas.core.indexes.base.Index
    
    type(columns)
    
    pandas.core.indexes.base.Index
    
    type(values)
    
    numpy.ndarray
    

    DataFrame 有index -行索引,columns-列索引,values-数据(数组)组成。pandas 基于numpy库

    从DataFrame 每个列都是以Series 类型返回

    df['food']
    
    Jane          Steak
    Niko           Lamb
    Aaron         Mango
    Penelope      Apple
    Dean         Cheese
    Christina     Melon
    Cornelia      Beans
    Name: food, dtype: object
    
    type(df['food'])
    
    pandas.core.series.Series
    
    s=df['food']
    
    s.index
    
    Index(['Jane', 'Niko', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'], dtype='object')
    
    s.values
    
    array(['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'],
          dtype=object)
    

    Series 左边是Index与其对应DataFrame的index一致,右边是数据

    注意:df['food'] 返回的Series 类型 df[['food']]返回的是DataFrame类型

    dd= df[['food']]
    
    type(dd)
    
    pandas.core.frame.DataFrame
    

    选择多个列

    df[['food','color','score']]
    
    ![ image.png

    关注一下返回来的列的显示顺序

    总结

    1. 以上是根据列名字作为key 索引,选择列
    2. df['food'] 以series 类型返回单列数据,df[['food']] 以DataFrame形式返回单列数据
    3. 多选列 df[['food','color']]
    4. 当然可以以df['Jane'] 返回行,但是尽量不这么用,因为会造成迷惑,不知道是选择的列还是行。

    .loc 选择行,列

    row = df.loc['Jane']
    row
    
    state        NY
    color      blue
    food      Steak
    age          30
    height      165
    score       4.6
    Name: Jane, dtype: object
    
    type(row)
    
    pandas.core.series.Series
    

    以series返回单行,其中左边index为源DataFrame列名,右边为数据

    选择则多行 以DataFrame形式返回

    df.loc[['Jane','Niko']]
    
    image.png

    选择从Niko到Dean 这个范围的数据

    df.loc['Niko':'Dean']
    
    image.png
    df
    
    image.png
    df.loc['Jane':'Cornelia':2]
    
    image.png

    上一例是带步长的切片选择
    注意这个切片闭区间,包括最后Cornelia
    对比python切片,python 中切片是[),前闭后开区间

    em=[1,2,3,4]
    em[0:3]
    
    [1, 2, 3]
    

    相关文章

      网友评论

          本文标题:pandas dataframe中的数据选择1

          本文链接:https://www.haomeiwen.com/subject/rbmkrqtx.html