第一章:第二节pandas基础

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

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

1.4 知道你的数据叫什么

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

开始前导入numpy和pandas

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

'''
#我们举的例子
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1 = pd.Series(sdata)
example_1
'''
'''
#我们举的例子
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
'''


1.4.2 任务二:根据上节课的方法载入"train.csv"文件
#写入代码
df = pd.read_csv("train.csv")

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

1.4.3 任务三:查看DataFrame数据的每列的名称
#写入代码
df.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')
1.4.4任务四:查看"Cabin"这列的所有值[有多种方法]
#写入代码
df['Cabin']
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有一列是多余的,我们需要将这个多余的列删去

#写入代码
df_test = pd.read_csv("test_1.csv")
df_test
Unnamed: 0PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkeda
00103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS100
11211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C100
22313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS100
33411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S100
44503Allen, Mr. William Henrymale35.0003734508.0500NaNS100
.............................................
88688688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS100
88788788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S100
88888888903Johnston, Miss. Catherine Helen "Carrie"femaleNaN12W./C. 660723.4500NaNS100
88988989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C100
89089089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ100

891 rows × 14 columns

#写入代码
df_test = df_test.drop('a',axis = 1)

【思考】还有其他的删除多余的列的方式吗?

# 思考回答





1.4.6 任务六: 将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素
#写入代码
df_test.drop(['PassengerId','Name','Age','Ticket'],axis = 1)
Unnamed: 0SurvivedPclassSexSibSpParchFareCabinEmbarked
0003male107.2500NaNS
1111female1071.2833C85C
2213female007.9250NaNS
3311female1053.1000C123S
4403male008.0500NaNS
..............................
88688602male0013.0000NaNS
88788711female0030.0000B42S
88888803female1223.4500NaNS
88988911male0030.0000C148C
89089003male007.7500NaNQ

891 rows × 9 columns

【思考】对比任务五和任务六,是不是使用了不一样的方法(函数),如果使用一样的函数如何完成上面的不同的要求呢?

【思考回答】

如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了,所以这里没有用

1.5 筛选的逻辑

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

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

1.5.1 任务一: 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
#写入代码
df_test[df_test['Age' ]<  10]
Unnamed: 0PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
77803Palsson, Master. Gosta Leonardmale2.003134990921.0750NaNS
10101113Sandstrom, Miss. Marguerite Rutfemale4.0011PP 954916.7000G6S
16161703Rice, Master. Eugenemale2.004138265229.1250NaNQ
24242503Palsson, Miss. Torborg Danirafemale8.003134990921.0750NaNS
43434412Laroche, Miss. Simonne Marie Anne Andreefemale3.0012SC/Paris 212341.5792NaNC
..........................................
82782782812Mallet, Master. Andremale1.0002S.C./PARIS 207937.0042NaNC
83183183212Richards, Master. George Sibleymale0.83112910618.7500NaNS
85085085103Andersson, Master. Sigvard Harald Eliasmale4.004234708231.2750NaNS
85285285303Boulos, Miss. Nourelainfemale9.0011267815.2458NaNC
86986987013Johnson, Master. Harold Theodormale4.001134774211.1333NaNS

62 rows × 13 columns

1.5.2 任务二: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
#写入代码
midage = df_test[(df_test['Age']>10)&(df_test['Age']<50)]

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

1.5.3 任务三:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
#写入代码
midage = midage.reset_index (drop = True)
midage.head()
Unnamed: 0PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
00103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
11211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
22313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
33411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
44503Allen, Mr. William Henrymale35.0003734508.0500NaNS
midage.loc[[100],["Pclass","Sex"]]
PclassSex
1002male

【提示】在抽取数据中,我们希望数据的相对顺序保持不变,用什么函数可以达到这个效果呢?

1.5.4 任务四:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
#写入代码——.loc 具体值
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"的数据显示出来
#写入代码 iloc——索引
midage.iloc[[100,105,108],[3,4,5]]
PclassNameSex
1002Byles, Rev. Thomas Roussel Davidsmale
1053Cribb, Mr. John Hatfieldmale
1083Calic, Mr. Jovomale

【思考】对比ilocloc的异同

iloc——索引
loc—— 具体值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值