IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【DW组队学习—动手学数据分析】第一章:第二节pandas基础-课程学习 -> 正文阅读

[人工智能]【DW组队学习—动手学数据分析】第一章:第二节pandas基础-课程学习

复习:数据分析的第一步,加载数据我们已经学习完毕了。当数据展现在我们面前的时候,我们所要做的第一步就是认识他,今天我们要学习的就是了解字段含义以及初步观察数据

1 第一章:数据载入及初步观察

1.4 知道你的数据叫什么

我们学习pandas的基础操作,那么上一节通过pandas加载之后的数据,其数据类型是什么呢?

开始前导入numpy和pandas

import numpy as np
import pandas as pd

1.4.1 任务一:pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子🌰[开放题]

Series

Series是一个一维标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。轴标签统称为index。
创建系列的基本方法是调用:
s = pd.Series(data, index=index)

  • 运算

    • s1+s2 #索引相同的元素相加,不同的则补充Nan
    • s*2 #所有元素*2
    • s+1 #所有元素+1
  • 常用方法

    • s.index #查看索引
    • s.values #查看数值
    • s.isnull() #查看为空的,返回布尔型
    • s.notnull()
    • s.sort_index() #按索引排序
    • s.sort_values() #按数值排序
#写入代码
#创建Series
s = pd.Series(['a','b','c','d']) #默认索引
s
0    a
1    b
2    c
3    d
dtype: object
s = pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"]) #指定索引
s
a   -0.667947
b    1.078895
c   -2.288428
d   -0.224024
e   -0.170859
dtype: float64
s = pd.Series({"b": 1, "a": 0, "c": 2}) #指定索引
s
b    1
a    0
c    2
dtype: int64
s = pd.Series(5.0, index=["a", "b", "c", "d", "e"]) #相同值
s
a    5.0
b    5.0
c    5.0
d    5.0
e    5.0
dtype: float64
#我们举的例子
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
DataFrame

dataframe是非常常见的一个表格型数据结构,每一列可以是不同的数值类型,有行索引、列索引。提到它就会自然想到Pandas这个包。平常用Python处理xlsx、csv文件,读出来的就是dataframe格式。
DataFrame 接受多种不同类型的输入:

  • 一维数组、列表、字典或系列的字典
  • 二维 numpy.ndarray
  • 结构化或记录ndarray
  • 一种 Series
  • 其他 DataFrame
#我们举的例子
data = {'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(data)
example_2
stateyearpop
0Ohio20001.5
1Ohio20011.7
2Ohio20023.6
3Nevada20012.4
4Nevada20022.9
5Nevada20033.2
d = {
    "one": pd.Series([1.0, 2.0, 3.0], index=["a", "b", "c"]),
    "two": pd.Series([1.0, 2.0, 3.0, 4.0], index=["a", "b", "c", "d"]),
    "three": pd.Series([1.0, 2.0, 3.0, 5.0], index = ["a", "b", "c", "e"])
}
df = pd.DataFrame(d)
df
onetwothree
a1.01.01.0
b2.02.02.0
c3.03.03.0
dNaN4.0NaN
eNaNNaN5.0

**Tip:**可以看到,当规定的index数量、名称不一致时,会用NaN补齐表格

df = pd.DataFrame(d, index = ["b", "a", "e"], columns=["two", "three"])
df
twothree
b2.02.0
a1.01.0
eNaN5.0

**Tip:**可以通过规定index、columns选取行/列组成表格

1.4.2 任务二:根据上节课的方法载入"train.csv"文件

#写入代码
train_data = pd.read_csv(r"train.csv")
train_data
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88888903Johnston, Miss. Catherine Helen "Carrie"femaleNaN12W./C. 660723.4500NaNS
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ

891 rows × 12 columns

也可以加载上一节课保存的"train_chinese.csv"文件。通过翻译版train_chinese.csv熟悉了这个数据集,然后我们对trian.csv来进行操作

1.4.3 任务三:查看DataFrame数据的每列的名称

df.columns可以查看表格列名

#写入代码
train_data.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

1.4.4任务四:查看"Cabin"这列的所有值[有多种方法]

【总结】查看列值的方法:
法一:df[列名]
法二:df.列名

#写入代码
cabin_data = train_data["Cabin"]
cabin_data
0       NaN
1       C85
2       NaN
3      C123
4       NaN
       ... 
886     NaN
887     B42
888     NaN
889    C148
890     NaN
Name: Cabin, Length: 891, dtype: object
#写入代码
cabin_data = train_data.Cabin
cabin_data
0       NaN
1       C85
2       NaN
3      C123
4       NaN
       ... 
886     NaN
887     B42
888     NaN
889    C148
890     NaN
Name: Cabin, Length: 891, dtype: object

1.4.5 任务五:加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除

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

#写入代码
test_1 = pd.read_csv(r"test_1.csv")
test_1.columns

#Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
#       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
#      dtype='object')
Index(['Unnamed: 0', 'PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age',
       'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked', 'a'],
      dtype='object')

【总结】删除列:
法一:df.columns.delete(删除列的位置),若删除多列用[列1位置,……]
法二:del df[列名]

#写入代码
test_1.columns.delete(-1)
Index(['Unnamed: 0', 'PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age',
       'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')
del test_1['a']
test_1.columns
Index(['Unnamed: 0', 'PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age',
       'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

1.4.6 任务六: 将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素

从行或列中删除指定的标签,采用以下语句:
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=‘raise’)

#写入代码
train_data.drop(columns = ['PassengerId','Name','Age','Ticket'])
train_data.head(3)
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS

可以看到,此处依然是全部列数,说明train_data本质并没有发生变化
drop操作后直接观察可以看到隐藏指定列的数据

train_data.drop(columns = ['PassengerId','Name','Age','Ticket']).head(3)
SurvivedPclassSexSibSpParchFareCabinEmbarked
003male107.2500NaNS
111female1071.2833C85C
213female007.9250NaNS

如果想要完全的删除数据,使用inplace=True,因为使用inplace就将原数据覆盖了

1.5 筛选的逻辑

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

下面我们还是用实战来学习pandas这个功能。

1.5.1 任务一: 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。

df[筛选条件]

#写入代码
train_data[train_data['Age']<10]
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
7803Palsson, Master. Gosta Leonardmale2.003134990921.0750NaNS
101113Sandstrom, Miss. Marguerite Rutfemale4.0011PP 954916.7000G6S
161703Rice, Master. Eugenemale2.004138265229.1250NaNQ
242503Palsson, Miss. Torborg Danirafemale8.003134990921.0750NaNS
434412Laroche, Miss. Simonne Marie Anne Andreefemale3.0012SC/Paris 212341.5792NaNC
.......................................
82782812Mallet, Master. Andremale1.0002S.C./PARIS 207937.0042NaNC
83183212Richards, Master. George Sibleymale0.83112910618.7500NaNS
85085103Andersson, Master. Sigvard Harald Eliasmale4.004234708231.2750NaNS
85285303Boulos, Miss. Nourelainfemale9.0011267815.2458NaNC
86987013Johnson, Master. Harold Theodormale4.001134774211.1333NaNS

62 rows × 12 columns

1.5.2 任务二: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage

使用**&**表示且

#写入代码
midage = train_data[(train_data["Age"] > 10) & (train_data["Age"] < 50)]
midage
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88588603Rice, Mrs. William (Margaret Norton)female39.00538265229.1250NaNQ
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ

576 rows × 12 columns

【提示】了解pandas的条件筛选方式以及如何使用交集和并集操作

1.5.3 任务三:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

【总结】索引:
法一:使用行名和列名,df.loc[[行名], [列名]]
法二:使用行序和列序,df.iloc[[行索引], [列索引]]

#写入代码
midage.loc[100, ["Pclass","Sex"]]
Pclass         3
Sex       female
Name: 100, dtype: object

但是,因为midage是对原表筛选得到的,它的行名依然是原表的行名,即其与现表的索引不一定对应,故要对行索引进行更新,使用如下命令:
df.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=’’)
其中,drop=True时,覆盖原索引进行更新;drop=False时,将原索引作为表格的一列数据,增加新索引

midage = midage.reset_index(drop = True)
midage
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
57188603Rice, Mrs. William (Margaret Norton)female39.00538265229.1250NaNQ
57288702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
57388811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
57489011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
57589103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ

576 rows × 12 columns

midage.loc[[100], ["Pclass","Sex"]]
PclassSex
1002male

1.5.4 任务四:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

#写入代码
midage.loc[[100,105,108], ["Pclass","Name","Sex"]]
PclassNameSex
1002Byles, Rev. Thomas Roussel Davidsmale
1053Cribb, Mr. John Hatfieldmale
1083Calic, Mr. Jovomale

1.5.5 任务五:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

#写入代码
midage.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')
midage.iloc[[100,105,108], [2, 3, 4]]
PclassNameSex
1002Byles, Rev. Thomas Roussel Davidsmale
1053Cribb, Mr. John Hatfieldmale
1083Calic, Mr. Jovomale
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:37:57  更:2021-11-19 17:39:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:28:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码