一、今日完成的任务

  • 初识pandas库与缺失数据的补全
  • 可迭代对象
  • 打开数据(csv文件、excel文件)
  • 查看数据(尺寸信息、查看列名等方法)
  • 查看缺失值神器——isnull( )函数

今日学习用时2h
每日源码在gitee仓库:https://gitee.com/yhc_2023/learning-python
今日提到的示例代码,在仓库“day4.ipynb”中;相关数据集在仓库“data.csv“和”data.xlsx“中

二、学到的东西

1. 什么是pandas库和csv文件

(1)Pandas是 Python 中一个强大的数据分析库,特别适合处理表格状数据(像 Excel 那样的行列结构)。
它的名字来自 “Panel Data”(面板数据)
学习机器学习绕不开它的!它是数据科学 / AI 项目的基础工具包之一!
(2)csv文件
CSV(Comma-Separated Values) 是一种常见的数据表格存储格式,每行代表一行数据,每个字段用逗号分隔。

它就像一个“纯文本的 Excel 表格”,轻便又通用,非常适合用来交换数据

比如内容长这样:

在这里插入图片描述

2. 数据的读取

——用pandas库的 read_csv( )

例子:

import pandas as pd
data = pd.read_csv(r'data.csv')

注意加一个“r”是为了,避免地址中出现“\n”这样的转义字符被读取成换行


我们可以查看一下上面这个被读取出来的“data”到底是啥类型

type(data)   #查看类型

返回结果:在这里插入图片描述

DataFrame是pandas库里核心的数据类型之一——它代表一个完整的表格。

另外一个是Series,表示一列数据(有索引)


例子:
① DataFrame

data = {
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35]
}
df = pd.DataFrame(data)
print(df)

输出结果:在这里插入图片描述

② Series

import pandas as pd

s = pd.Series([10, 20, 30])
print(s)

输出结果:在这里插入图片描述

3.pandas的小魔法——isnull( )函数

isnull() 是 Pandas 中用来判断某个元素是否为“缺失值”的函数。缺失值通常表现为 NaN(Not a Number)。


  ps:在机器学习中,我们拿到数据文件之后一般都需要数据清洗,补充缺失值,防止后面扫描数据文件的时候碰到缺失值会出各种各样的问题


isnull( )返回一个和原表结构一样的布尔值表格:

  • 如果是缺失值 → 返回 True
  • 否则 → 返回 False

例子:

data.isnull()    #查看缺失值

输出结果(只截了部分,右边太长截不开):
在这里插入图片描述

4.查看前十行——head(10)

data.head(10)

输出结果(只截了部分):
在这里插入图片描述

5.读取excel文件

ps!!:pandas读取excel需要安装openpyxl库。
每个人环境不一样,我用的anaconda prompt,直接在自己创建的内核里pip install openpyxl

excel文件在我的gitee库里

data = pd.read_excel('data.xlsx')

返回结果(部分的截图):
在这里插入图片描述

6.DataFrame有关的属性和方法

(1)data.info() —— 快速查看数据结构

data.info()       # 列名、非空值、数据类型

输出结果:
在这里插入图片描述
其中给出的信息:
① 总行数:7500代表一共有7500个样本
② Dtype : 每列的数据类型
③ memory:内存占用
④ Non-Null Count :非空值数量

(2)data.shape —— 行数和列数

data.shape   # (行数, 列数) data的属性

输出结果:在这里插入图片描述

(3)data.columns —— 查看所有列名

data.columns      # 所有列名 

输出结果:
在这里插入图片描述
🐱如果你想把列名变成列表:

list(data.columns)

输出结果:
在这里插入图片描述
(4)查看某一列的数据类型

data["Annual Income"].dtype     # Annual Income是data.csv里的一个列名

输出结果:在这里插入图片描述

(5)data.describe() —— 快速统计数值列

data.describe()   # 数值列的基本统计量

输出结果(只截取部分列,右边太长了不放了):
在这里插入图片描述
其中:
① count :非空值数量
② mean : 平均值
③ count 非空值数量
④ mean :平均值
⑤ std :标准差(衡量数据波动范围)
⑥ min: 最小值
⑦ 25% :下四分位数(Q1)
⑧ 50% :中位数(Q2)
⑨ 75% :上四分位数(Q3)
⑩ max :最大值

Q1Q2Q3和标准差后面补充里有介绍是什么

(6)每列缺失值计数

data.isnull().sum()      # sum方法可以求每一列的和

输出结果:
在这里插入图片描述

三、明日学习计划

  • 缺失值的补充: 众数、中位数填补空值
  • 利用循环补全所有列的空值
  • 怎么画出箱型图(boxplot)把 Q1~Q3 和标准差一起可视化
  • 样本标准差和总体标准差
  • 离散特征的独热编码

@浙大疏锦行

四、补充

1. enumerate( )函数

正式定义:enumerate 是 Python 的一个内置函数,常用于,在遍历序列时同时获得索引和元素值.
注意:
① 可以输出两个数,数据下标和数据本身
其中,enumerate遍历的数据必须是可迭代对象,比如列表、元组、字符串
② 此函数常用在for 循环当中
③ 例子:

seq = ['I','love','cats']
for i,elem in enumerate(seq):
	print i,elem

输出结果:在这里插入图片描述

2.什么是可迭代对象,什么是迭代器

(1)可迭代对象就是:能被一个一个取出来的对象。
比如:list, str, tuple, set, dict ,range . 都可以用for循环一个一个地遍历他们

🐱如果想要判断一个对象是不是可迭代,用 iter( )

例子:

iter("abc")  #✔ !返回一个迭代器
iter("123")  #❌!报错,int 不iterable

(2) 迭代器就是:一个“可以记住你上次取到哪里的”对象。
——它可以被next( )一次次地取出内容,知道”下一个“在哪。

例子:

it = iter([10,20,30])
print(next(it))  #10
print(next(it))  #20
print(next(it))  #30
print(next(it))  #报错:stopIteration, 就是说明到底了

3.非数值数据也能用 describe( )查看列的汇总统计

给describe加一个参数就行:include='all'

例子:

df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Alice', 'Charlie', None]
})

print(df.describe(include='all'))

输出结果:

         Name
count        4
unique       3
top      Alice
freq         2

其中:
① count : 非空数量
② unique :不同值的数量
③ top : 最常见的值
④ freq :这个值出现了几次


4.Q1 / Q2 / Q3 是什么

——它们是 四分位数(quartiles),把数据分成四个部分:

在这里插入图片描述
例如:

70, 78, 85, 88, 90, 92, 95

  • Q1:第一个 25% 的“临界值” → 78
  • Q2:中位数(50%)→ 88
  • Q3:75% 的位置 → 92

5.标准差

🐱标准差表示数据的“波动程度”或“离平均值有多远”。

  • 标准差小 → 数据集中(差不多)
  • 标准差大 → 数据分散(差异大)

标准差的计算公式:

在这里插入图片描述
pandas里默认使用”样本标准差“(除以 n-1)


^_^ 感谢你看到这里,学习辛苦啦!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐