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
关注一下返回来的列的显示顺序
总结
- 以上是根据列名字作为key 索引,选择列
- df['food'] 以series 类型返回单列数据,df[['food']] 以DataFrame形式返回单列数据
- 多选列 df[['food','color']]
- 当然可以以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]
网友评论