0%

DataAnalysis-Describe

1 概述

这门课程得主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作。知道了课程的目的之后,我们接下来我们要正式的开始数据分析的实战教学,完成kaggle上泰坦尼克的任务,实战数据分析全流程。 这里有两份资料: 教材《Python for Data Analysis》和 baidu.com & google.com(善用搜索引擎)

2 数据载入及初步观察

2.1 载入数据

数据集下载 https://www.kaggle.com/c/titanic/overview

  • 导入模块

    1
    2
    import numpy as nnp
    import pandas as pd

2.2 加载数据

  • 相对路径

    1
    >>> data = pd.read_csv('./train.csv', encoding = 'utf-8')
  • 绝对路径

    1
    >>> data = pd.read_csv(r"D:\Demo\University\XMU\Python\Artificial-intelligence\Data analysis\第一单元项目集合\train.csv", encoding = 'utf-8')
  • read_table 读取

    1
    2
    # 设置 sep
    >>> data = pd.read_table('./train.csv', sep = ',')
  • 获取当前路径

    1
    2
    3
    4
    >>> import os
    >>> print(os.getcwd())

    D:\Demo\University\XMU\Python\Artificial-intelligence\Data analysis\第一单元项目集合
  • 逐块读取

    每500行为一个数据模块,逐块读取

    1
    2
    3
    4
    5
    6
    7
    # 设置 chunksize 参数
    >>> chunker = pd.read_csv('train.csv', chunksize=500)
    >>> for df in chunker:
    print(type(df), df.shape)

    <class 'pandas.core.frame.DataFrame'> (500, 12)
    <class 'pandas.core.frame.DataFrame'> (391, 12)

2.3 数据预处理

2.3.1 更改表头

索引改为乘客ID(对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据): PassengerId => 乘客ID
Survived => 是否幸存
Pclass => 乘客等级(1/2/3等舱位)
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱
Embarked => 登船港口

  • 方式一

    1
    2
    3
    4
    5
    >>> maps = {'PassengerId': '乘客ID', 'Survived': '是否幸存', 'Pclass': '乘客等级(1/2/3等舱位)',
    'Name': '乘客姓名', 'Sex': '性别', 'Age': '年龄', 'SibSp': '堂兄弟/妹个数',
    'Parch': '父母与小孩个数', 'Ticket': '船票信息', 'Fare': '票价',
    'Cabin': '客舱', 'Embarked': '登船港口'}
    >>> data.rename(columns=maps, inplace=True)
  • 方式二

    1
    2
    3
    4
    >>> data = data = pd.read_csv('./train.csv', encoding = 'utf-8')
    >>> columns = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数',
    '父母子女个数','船票信息','票价','客舱','登船港口']
    >>> data.columns = columns
  • 方式三

    1
    2
    3
    4
    >>> df = pd.read_csv('train.csv',
    names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄', '兄弟姐妹个数',
    '父母子女个数','船票信息','票价','客舱','登船港口'],
    index_col='乘客ID',header=0)

2.3.2 初步观察

导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等。

  • 查看信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    >>> data.info()

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 891 entries, 0 to 890
    Data columns (total 12 columns):
    # Column Non-Null Count Dtype
    --- ------ -------------- -----
    0 乘客ID 891 non-null int64
    1 是否幸存 891 non-null int64
    2 仓位等级 891 non-null int64
    3 姓名 891 non-null object
    4 性别 891 non-null object
    5 年龄 714 non-null float64
    6 兄弟姐妹个数 891 non-null int64
    7 父母子女个数 891 non-null int64
    8 船票信息 891 non-null object
    9 票价 891 non-null float64
    10 客舱 204 non-null object
    11 登船港口 889 non-null object
    dtypes: float64(2), int64(5), object(5)
    memory usage: 83.7+ KB
  • 开头和结尾

    1
    >>> data.head(10)

    乘客ID

    是否幸存

    仓位等级

    姓名

    性别

    年龄

    兄弟姐妹个数

    父母子女个数

    船票信息

    票价

    客舱

    登船港口

    0

    1

    0

    3

    Braund, Mr. Owen Harris

    male

    22.0

    1

    0

    A/5 21171

    7.2500

    NaN

    S

    1

    2

    1

    1

    Cumings, Mrs. John Bradley (Florence Briggs Th...

    female

    38.0

    1

    0

    PC 17599

    71.2833

    C85

    C

    2

    3

    1

    3

    Heikkinen, Miss. Laina

    female

    26.0

    0

    0

    STON/O2. 3101282

    7.9250

    NaN

    S

    3

    4

    1

    1

    Futrelle, Mrs. Jacques Heath (Lily May Peel)

    female

    35.0

    1

    0

    113803

    53.1000

    C123

    S

    4

    5

    0

    3

    Allen, Mr. William Henry

    male

    35.0

    0

    0

    373450

    8.0500

    NaN

    S

    5

    6

    0

    3

    Moran, Mr. James

    male

    NaN

    0

    0

    330877

    8.4583

    NaN

    Q

    6

    7

    0

    1

    McCarthy, Mr. Timothy J

    male

    54.0

    0

    0

    17463

    51.8625

    E46

    S

    7

    8

    0

    3

    Palsson, Master. Gosta Leonard

    male

    2.0

    3

    1

    349909

    21.0750

    NaN

    S

    8

    9

    1

    3

    Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)

    female

    27.0

    0

    2

    347742

    11.1333

    NaN

    S

    9

    10

    1

    2

    Nasser, Mrs. Nicholas (Adele Achem)

    female

    14.0

    1

    0

    237736

    30.0708

    NaN

    C

    1
    >>> data.tail(15)

    乘客ID

    是否幸存

    仓位等级

    姓名

    性别

    年龄

    兄弟姐妹个数

    父母子女个数

    船票信息

    票价

    客舱

    登船港口

    876

    877

    0

    3

    Gustafsson, Mr. Alfred Ossian

    male

    20.0

    0

    0

    7534

    9.8458

    NaN

    S

    877

    878

    0

    3

    Petroff, Mr. Nedelio

    male

    19.0

    0

    0

    349212

    7.8958

    NaN

    S

    878

    879

    0

    3

    Laleff, Mr. Kristo

    male

    NaN

    0

    0

    349217

    7.8958

    NaN

    S

    879

    880

    1

    1

    Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)

    female

    56.0

    0

    1

    11767

    83.1583

    C50

    C

    880

    881

    1

    2

    Shelley, Mrs. William (Imanita Parrish Hall)

    female

    25.0

    0

    1

    230433

    26.0000

    NaN

    S

    881

    882

    0

    3

    Markun, Mr. Johann

    male

    33.0

    0

    0

    349257

    7.8958

    NaN

    S

    882

    883

    0

    3

    Dahlberg, Miss. Gerda Ulrika

    female

    22.0

    0

    0

    7552

    10.5167

    NaN

    S

    883

    884

    0

    2

    Banfield, Mr. Frederick James

    male

    28.0

    0

    0

    C.A./SOTON 34068

    10.5000

    NaN

    S

    884

    885

    0

    3

    Sutehall, Mr. Henry Jr

    male

    25.0

    0

    0

    SOTON/OQ 392076

    7.0500

    NaN

    S

    885

    886

    0

    3

    Rice, Mrs. William (Margaret Norton)

    female

    39.0

    0

    5

    382652

    29.1250

    NaN

    Q

    886

    887

    0

    2

    Montvila, Rev. Juozas

    male

    27.0

    0

    0

    211536

    13.0000

    NaN

    S

    887

    888

    1

    1

    Graham, Miss. Margaret Edith

    female

    19.0

    0

    0

    112053

    30.0000

    B42

    S

    888

    889

    0

    3

    Johnston, Miss. Catherine Helen "Carrie"

    female

    NaN

    1

    2

    W./C. 6607

    23.4500

    NaN

    S

    889

    890

    1

    1

    Behr, Mr. Karl Howell

    male

    26.0

    0

    0

    111369

    30.0000

    C148

    C

    890

    891

    0

    3

    Dooley, Mr. Patrick

    male

    32.0

    0

    0

    370376

    7.7500

    NaN

    Q

  • 判断是否为空

    1
    >>> data.isnull().head()

    乘客ID

    是否幸存

    仓位等级

    姓名

    性别

    年龄

    兄弟姐妹个数

    父母子女个数

    船票信息

    票价

    客舱

    登船港口

    0

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    True

    False

    1

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    2

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    True

    False

    3

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    4

    False

    False

    False

    False

    False

    False

    False

    False

    False

    False

    True

    False

  • 描述性统计

    1
    >>> data.describe()

    乘客ID

    是否幸存

    仓位等级

    年龄

    兄弟姐妹个数

    父母子女个数

    票价

    count

    891.000000

    891.000000

    891.000000

    714.000000

    891.000000

    891.000000

    891.000000

    mean

    446.000000

    0.383838

    2.308642

    29.699118

    0.523008

    0.381594

    32.204208

    std

    257.353842

    0.486592

    0.836071

    14.526497

    1.102743

    0.806057

    49.693429

    min

    1.000000

    0.000000

    1.000000

    0.420000

    0.000000

    0.000000

    0.000000

    25%

    223.500000

    0.000000

    2.000000

    20.125000

    0.000000

    0.000000

    7.910400

    50%

    446.000000

    0.000000

    3.000000

    28.000000

    0.000000

    0.000000

    14.454200

    75%

    668.500000

    1.000000

    3.000000

    38.000000

    1.000000

    0.000000

    31.000000

    max

    891.000000

    1.000000

    3.000000

    80.000000

    8.000000

    6.000000

    512.329200

  • 重复

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> data.duplicated()

    0 False
    1 False
    2 False
    3 False
    4 False
    ...
    886 False
    887 False
    888 False
    889 False
    890 False
    Length: 891, dtype: bool

2.4 保存数据

1
>>> df.to_csv('train_chinese.csv', encoding = 'ansi')

【总结】数据的加载以及入门,接下来就要接触数据本身的运算,我们将主要掌握numpy和pandas在工作和项目场景的运用。

3 探索性数据分析

复习: 前面已经学习了Pandas基础,知道利用Pandas读取csv数据的增删查改。这一章节学习的是 探索性数据分析,主要介绍如何利用Pandas进行排序、算术计算以及计算描述函数describe()的使用。

3.1 加载数据

1
2
3
4
#载入之前保存的train_chinese.csv数据,关于泰坦尼克号的任务,我们就使用这个数据
>>> data = pd.read_csv('train_chinese.csv')
data_en = pd.read_csv('train.csv')
data.head(1)
�˿�ID �Ƿ��Ҵ� ��λ�ȼ� ���� �Ա� ����.1 �ֵܽ��ø��� ��ĸ��Ů���� ��Ʊ��Ϣ Ʊ�� �Ͳ� �Ǵ��ۿ�
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.25 NaN S

可以发现直接读取会产生乱码,因此需要设置编码格式

1
2
>>> data = pd.read_csv('train_chinese.csv', encoding = 'ansi')
data.head()
乘客ID 是否幸存 仓位等级 姓名 性别 年龄 兄弟姐妹个数 父母子女个数 船票信息 票价 客舱 登船港口
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S

3.2 了解数据

详细请参考教材《Python for Data Analysis》第五章

3.2.1 排序

  • 理论

    具体请看《利用Python进行数据分析》第五章 排序和排名 部分

    1
    2
    3
    4
    5
    # 构建数据
    >>> frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
    index=['2', '1'],
    columns=['d', 'a', 'b', 'c'])
    >>> frame

    d

    a

    b

    c

    2

    0

    1

    2

    3

    1

    4

    5

    6

    7

    1
    # 索引升序frame.sort_index(axis = 0, ascending = True)

    d

    a

    b

    c

    1

    4

    5

    6

    7

    2

    0

    1

    2

    3

    Note:

    1. axis: 控制索引的维度,默认为 axis = 0 即行索引。将 axis 设置为 1 可以更改为按列排序.
    2. ascending: 控制升序 / 降序。默认为 ascending = True,即升序排列。
    3. 此外,可以通过设置 by 参数,选择多列进行排序。如 by = ['a', 'c']
  • 实操

    data 数据按票价和年龄两列进行综合排序(降序排列)

    1
    >>> data.sort_values(by=['票价', '年龄'], ascending=False).head(3)

    乘客ID

    是否幸存

    仓位等级

    姓名

    性别

    年龄

    兄弟姐妹个数

    父母子女个数

    船票信息

    票价

    客舱

    登船港口

    679

    680

    1

    1

    Cardeza, Mr. Thomas Drake Martinez

    male

    36.0

    0

    1

    PC 17755

    512.3292

    B51 B53 B55

    C

    258

    259

    1

    1

    Ward, Miss. Anna

    female

    35.0

    0

    0

    PC 17755

    512.3292

    NaN

    C

    737

    738

    1

    1

    Lesurer, Mr. Gustave J

    male

    35.0

    0

    0

    PC 17755

    512.3292

    B101

    C

    排序后,如果我们仅仅关注年龄和票价两列。根据常识我知道发现票价越高的应该客舱越好,所以我们会明显看出,票价前20的乘客中存活的高达14人。

3.2.2 算数计算

具体参照《利用Python进行数据分析》第五章 算术运算与数据对齐部分

1
2
3
4
5
6
>>> frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
columns=['a', 'b', 'c'],
index=['one', 'two', 'three'])
>>> frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
columns=['a', 'e', 'c'],
index=['first', 'one', 'two', 'second'])
1
>>> frame1_a
a b c
one 0.0 1.0 2.0
two 3.0 4.0 5.0
three 6.0 7.0 8.0
1
>>> frame1_b
a e c
first 0.0 1.0 2.0
one 3.0 4.0 5.0
two 6.0 7.0 8.0
second 9.0 10.0 11.0
  • 加法

    1
    2
    # 将frame_a和frame_b进行相加
    >>> frame1_a + frame1_b

    a

    b

    c

    e

    first

    NaN

    NaN

    NaN

    NaN

    one

    3.0

    NaN

    7.0

    NaN

    second

    NaN

    NaN

    NaN

    NaN

    three

    NaN

    NaN

    NaN

    NaN

    two

    9.0

    NaN

    13.0

    NaN

3.2.3 极值

查看最大的家族有多少人(‘兄弟姐妹个数’+‘父母子女个数’)

1
2
3
>>> max(data['兄弟姐妹个数'] + data['父母子女个数'])

10
1
2
3
4
5
6
7
8
9
10
11
>>> data['父母子女个数'].describe()

count 891.000000
mean 0.381594
std 0.806057
min 0.000000
25% 0.000000
50% 0.000000
75% 0.000000
max 6.000000
Name: 父母子女个数, dtype: float64

4 Pandas 基础

  • DataFrame and Series

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    example_1 = pd.Series(sdata)
    example_1

    Ohio 35000
    Texas 71000
    Oregon 16000
    Utah 5000
    dtype: int64
    1
    2
    3
    4
    >>> temp = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
    'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
    example_2 = pd.DataFrame(temp)
    example_2

    state

    year

    pop

    0

    Ohio

    2000

    1.5

    1

    Ohio

    2001

    1.7

    2

    Ohio

    2002

    3.6

    3

    Nevada

    2001

    2.4

    4

    Nevada

    2002

    2.9

    5

    Nevada

    2003

    3.2

4.1 数据特征

  • 列名称

    1
    2
    3
    >>> data_en.columns

    Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')
  • 查看某些的信息

    1
    2
    3
    >>> data_en['Cabin'].head(3)

    0 NaN1 C852 NaNName: Cabin, dtype: object
    1
    2
    3
    >>> data_en.Cabin.head(3)

    0 NaN1 C852 NaNName: Cabin, dtype: object

4.2 删除多余的列

1
2
>>> test_1 = pd.read_csv('test_1.csv')
test_1.head(3)
Unnamed: 0 PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked a
0 0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S 100
1 1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C 100
2 2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S 100

经过我们的观察发现一个测试集 test_1.csv 有两列是多余的,需要将多余的列删去。

  • del

    1
    2
    3
    # 删除多余的列
    >>> del test_1['a']
    >>> test_1.head(3)

    Unnamed: 0

    PassengerId

    Survived

    Pclass

    Name

    Sex

    Age

    SibSp

    Parch

    Ticket

    Fare

    Cabin

    Embarked

    0

    0

    1

    0

    3

    Braund, Mr. Owen Harris

    male

    22.0

    1

    0

    A/5 21171

    7.2500

    NaN

    S

    1

    1

    2

    1

    1

    Cumings, Mrs. John Bradley (Florence Briggs Th...

    female

    38.0

    1

    0

    PC 17599

    71.2833

    C85

    C

    2

    2

    3

    1

    3

    Heikkinen, Miss. Laina

    female

    26.0

    0

    0

    STON/O2. 3101282

    7.9250

    NaN

    S

  • drop

    1
    >>> test_1.drop('a', axis = 1, inplace = True)# test_1 = test_1.drop('a', axis = 1)test_1.head(3)

    Unnamed: 0

    PassengerId

    Survived

    Pclass

    Name

    Sex

    Age

    SibSp

    Parch

    Ticket

    Fare

    Cabin

    Embarked

    0

    0

    1

    0

    3

    Braund, Mr. Owen Harris

    male

    22.0

    1

    0

    A/5 21171

    7.2500

    NaN

    S

    1

    1

    2

    1

    1

    Cumings, Mrs. John Bradley (Florence Briggs Th...

    female

    38.0

    1

    0

    PC 17599

    71.2833

    C85

    C

    2

    2

    3

    1

    3

    Heikkinen, Miss. Laina

    female

    26.0

    0

    0

    STON/O2. 3101282

    7.9250

    NaN

    S

    Note:

    • inplace :是否替换原始的数据,也可以使用第二行的代码进行替代或存储为新的变量。默认为 False,即不替换
    • axis:在行/列的维度进行操作。
      • 0: Row
      • 1: Column
  • Replace

    1
    >>> test_1 = test_1.iloc[:, 1:-2]

    可以通过 lociloc 方法进行取位置来替换原始的数据。

4.3 隐藏信息

1
>>> data_en.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)
Survived Pclass Sex SibSp Parch Fare Cabin Embarked
0 0 3 male 1 0 7.2500 NaN S
1 1 1 female 1 0 71.2833 C85 C
2 1 3 female 0 0 7.9250 NaN S

上述也可用下述代码实现:

1
>>> columns = data_en.columns.drop(['PassengerId','Name','Age','Ticket'])data_en.drop(columns, axis=1).head(3)
PassengerId Name Age Ticket
0 1 Braund, Mr. Owen Harris 22.0 A/5 21171
1 2 Cumings, Mrs. John Bradley (Florence Briggs Th... 38.0 PC 17599
2 3 Heikkinen, Miss. Laina 26.0 STON/O2. 3101282

Note:

drop 方法将数据从原数据中去掉,如果不设置 inplace = True 参数的话,默认是用一个临时变量存储新得到的数据。

4.3.1 数据筛选

表格数据中,最重要的一个功能就是要具有可筛选的能力,选出我所需要的信息,丢弃无用的信息。

  • 判别式

    1
    >>> data_en[data_en["Age"]<10].head(3)

    PassengerId

    Survived

    Pclass

    Name

    Sex

    Age

    SibSp

    Parch

    Ticket

    Fare

    Cabin

    Embarked

    7

    8

    0

    3

    Palsson, Master. Gosta Leonard

    male

    2.0

    3

    1

    349909

    21.075

    NaN

    S

    10

    11

    1

    3

    Sandstrom, Miss. Marguerite Rut

    female

    4.0

    1

    1

    PP 9549

    16.700

    G6

    S

    16

    17

    0

    3

    Rice, Master. Eugene

    male

    2.0

    4

    1

    382652

    29.125

    NaN

    Q

    1
    2
    >>> midage = data_en[(data_en["Age"]>10) & (data_en["Age"]<50)]
    >>> midage.head(3)

    PassengerId

    Survived

    Pclass

    Name

    Sex

    Age

    SibSp

    Parch

    Ticket

    Fare

    Cabin

    Embarked

    0

    1

    0

    3

    Braund, Mr. Owen Harris

    male

    22.0

    1

    0

    A/5 21171

    7.2500

    NaN

    S

    1

    2

    1

    1

    Cumings, Mrs. John Bradley (Florence Briggs Th...

    female

    38.0

    1

    0

    PC 17599

    71.2833

    C85

    C

    2

    3

    1

    3

    Heikkinen, Miss. Laina

    female

    26.0

    0

    0

    STON/O2. 3101282

    7.9250

    NaN

    S

4.3.2 数据提取

将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

1
2
3
>>> midage = midage.reset_index(drop=True)
# midage.reset_index(inplace = True, drop=True)
>>> midage.head(3)
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S

Note:

reset_index() 的作用是重置索引值,drop 参数表示是否去掉原始的索引值。

  • loc 方法

    1
    >>> midage.loc[[100],['Pclass','Sex']]

    Pclass

    Sex

    100

    2

    male

    1
    >>> midage.loc[[100,105,108],['Pclass','Name','Sex']]

    Pclass

    Name

    Sex

    100

    2

    Byles, Rev. Thomas Roussel Davids

    male

    105

    3

    Cribb, Mr. John Hatfield

    male

    108

    3

    Calic, Mr. Jovo

    male

  • iloc 方法

    1
    >>> midage.iloc[[100,105,108],[2,3,4]]

    Pclass

    Name

    Sex

    100

    2

    Byles, Rev. Thomas Roussel Davids

    male

    105

    3

    Cribb, Mr. John Hatfield

    male

    108

    3

    Calic, Mr. Jovo

    male

【总结】: loc 方法的操作对象是 label 标签,而 iloc 方法的操作对象是标签的索引值。

此外如果要对 DataFrame 对象中的数据进行重赋值操作的话,如果使用的是 loc 方法,当赋值的 label 在数据表中不存在时,会默认新建一列,而 iloc 方法只能在数据表中现有的索引内容中进行覆写,索引值不能超过现有的 shape 值。

-------------This blog is over! Thanks for your reading-------------