第二课堂AI实践笔记2——pandas入门

1 第一章:数据加载

1.1 载入数据

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

1.1.1 任务一:导入numpy和pandas
# 引入环境
import pandas as pd
import numpy as np

【提示】如果加载失败,学会如何在你的python环境下安装numpy和pandas这两个库

1.1.2 任务二:载入数据

(1) 使用相对路径载入数据

df =pd.read_csv('./train.csv')
df


(2) 使用绝对路径载入数据

df =pd.read_csv(r'D:\Users\LENOVO\Desktop\pandas入门\train.csv')
df

【提示】相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录。  
【思考】知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下'.tsv'和'.csv'的不同,如何加载这两个数据集?                       

【回答】                                                                                                                           

  不同都是Pandas库中用于读取文本文件的函数,它们主要的区别在于默认的分隔符:read_table是以制表符 \t 作为数据的标志,也就是以行为单位进行存储,每一行字符串为一列;read_csv默认分隔符为逗号,每一个字符串为一列
效果一样:如果想让pd.read_csv()和pd.read_table()的效果一样,可以通过指定sep参数来实现。 pd.read_csv('filename.tsv', sep='\t')实现用pd.read_csv()来读取一个制表符分隔的文件;pd.read_table('filename.csv', sep=',')实现用pd.read_table() 来读取一个逗号分隔的文件
【总结】加载的数据是所有工作的第一步,我们的工作会接触到不同的数据格式(eg:.csv;.tsv;.xlsx),但是加载的方法和思路都是一样的,在以后工作和做项目的过程中,遇到之前没有碰到的问题,要多多查资料吗,使用google,了解业务逻辑,明白输入和输出是什么。

1.1.3 任务三:每1000行为一个数据模块,逐块读取

【思考】什么是逐块读取?为什么要逐块读取呢?
有chunksize参数可以进行逐块加载。它的本质就是将文本分成若干块,每次处理chunksize行的数据,最终返回一个TextParser对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。

【提示】大家可以chunker(数据块)是什么类型?用`for`循环打印出来出处具体的样子是什么?

1.1.4 任务四:将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据]

PassengerId => 乘客ID
Survived => 是否幸存
Pclass => 乘客等级(1/2/3等舱位)
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱
Embarked => 登船港口

【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?

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


#header=缺少后会出现英语表头任然存在的问题,即此为header=0的作用

1.2 初步观察

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

1.2.1 任务一:查看数据的基本信息

1.2.2 任务二:观察表格前10行的数据和后15行的数据

1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False

【总结】上面的操作都是数据分析中对于数据本身的观察

【思考】对于一个数据,还可以从哪些方面来观察?找找答案,这个将对下面的数据分析有很大的帮助
①使用df.shape可以查看DataFrame的形状,即行数和列数。
②使用df.dtypes可以查看每列的数据类型,了解数据是如何存储的。
③使用df.describe()可以查看数值型列的描述性统计信息,包括计数、均值、标准差、最小值、四分位数和最大值。
④使用df['column'].unique()可以查看某列的所有唯一值,了解该列的不同取值。              
⑤使用df['column'].value_counts()可以查看某列中各个值出现的次数,了解数据的分布情况。          # ’column是具体情况下需替换的具体某列

1.3 保存数据

1.3.1 任务一:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv

’   

# 注意:不同的操作系统保存下来可能会有乱码。大家可以加入`encoding='GBK' 或者 ’encoding = ’utf-8‘‘`
df.to_csv('train_chinese.csv')

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



1 第一章:pandas基础

1.4 知道你的数据叫什么

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

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

1.4.2 任务二:根据上节课的方法载入"train.csv"文件
1.4.3 任务三:查看DataFrame数据的每列的名称
1.4.4任务四:查看"Cabin"这列的所有值 [有多种方法]
1.4.5 任务五:加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除

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

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

#思考回答

1.  df = df.drop('column_name', axis=1)或者df.drop('column_name', axis=1, inplace=True)
#不仅可以删除列,还会返回被删除的列的数据。
2.  column_data = df.pop('column_name')
#删除包含任何缺失值的列
3.  df = df.dropna(axis=1, how='all')                                                                                                  #删除全部为缺失值的列

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

1.5 筛选的逻辑

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

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

1.5.1 任务一: 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
1.5.2 任务二: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
1.5.3 任务三:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

【思考】这个reset_index()函数的作用是什么?如果不用这个函数,下面的任务会出现什么情况?
①reset_index() 是 Pandas 库中的一个函数,通常用于 DataFrame 对象。调用这个函数后,会创建一个新的 DataFrame,其中包含原始 DataFrame 的数据以及索引列。在新的 DataFrame 中,原始的索引被转换为一列,并被命名为 ‘index’(除非通过 name 参数指定了其他名称)。
②如果你有一个 DataFrame,并且想要重置其索引,使其从0开始,你可以使用 reset_index() 方法,用于将 DataFrame 的索引(index)重置为默认整数索引。并且可以选择是否保留原来的索引作为新的列。这通常在分组操作之后使用,比如在使用 groupby() 方法后,每组的索引可能会变成分组键,而不是原始的整数索引。
③会出现的最简单情况:若为100 .150. 108顺序不为从小到大,不加该函数无法正确显示

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

【思考】对比`iloc`和`loc`的异同
相同:两者都用于从 DataFrame 或 Series 中选择数据。

  对于 DataFrame,两者都支持多维索引(行和列),尽管对于 Series,这简化为仅支持一维索引(因为 Series 只有行,没有列)。
不同:iloc是索引进行定位从0开始,iloc传入的列的索引为真正的索引,而loc传入的为列的名称



1.6 了解你的数据吗?
教材《Python for Data Analysis》第五章

1.6.1 任务一:利用Pandas对示例数据进行排序,要求升序
1.6.2 任务二:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从数据中你能发现什么
 1.6.3 任务三:利用Pandas进行算术计算,计算两个DataFrame数据相加结果
 1.6.4 任务四:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
 1.6.5 任务五:学会使用Pandas describe()函数查看数据基本统计信息
 1.6.6 任务六:分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据,你能发现什么?
  • 20
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇笔记主要介绍了Pandas模块的基本操作和使用方法。Pandas是Python中一个用于数据分析和处理的常用库,提供了高效的数据结构和数据分析工具,是进行数据处理和数据挖掘的重要工具之一。 一、Pandas数据结构 Pandas主要有两种数据结构:Series和DataFrame。 1. Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的标签(即索引)组成。Series的创建方式如下: ```python import pandas as pd # 通过列表创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 通过字典创建Series s = pd.Series({'a': 1, 'b': 2, 'c': 3}) ``` 2. DataFrame DataFrame是一种二维表格数据结构,由一组数据和一组行索引和列索引组成。DataFrame的创建方式有很多种,最常用的是通过字典创建。例如: ```python import pandas as pd data = {'name': ['Tom', 'Jerry', 'Mike'], 'age': [18, 20, 22], 'gender': ['M', 'M', 'F']} df = pd.DataFrame(data) ``` 二、Pandas的基本操作 1. 数据读取 Pandas可以读取多种格式的数据文件,如CSV、Excel、SQL等。常用的读取CSV文件的方式如下: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 2. 数据预处理 数据预处理是数据挖掘中非常重要的一部分,Pandas提供了很多方便的函数和方法来进行数据清洗和转换。常用的数据预处理函数和方法有: - 处理缺失值 ```python # 判断是否存在缺失值 df.isnull() # 删除缺失值 df.dropna() # 填充缺失值 df.fillna(value) ``` - 处理重复值 ```python # 删除重复值 df.drop_duplicates() ``` - 数据转换 ```python # 数据类型转换 df.astype() # 数据替换 df.replace() ``` 3. 数据分析 Pandas提供了各种数据分析和处理的方法和函数,常用的包括: - 统计函数 ```python # 计算平均值 df.mean() # 计算标准差 df.std() # 计算最大值和最小值 df.max(), df.min() ``` - 排序 ```python # 按照某列排序 df.sort_values(by='column_name') ``` - 数据聚合 ```python # 对某列数据进行分组求和 df.groupby('column_name').sum() ``` 以上是Pandas模块的基础内容,还有很多高级用法和技巧需要进一步学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值