机器学习篇—Pandas数据处理基础

Pandas 是非常著名的开源数据处理库,其基于 NumPy 开发,该工具是 Scipy 生态中为了解决数据分析任务而设计。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的函数和方法。本文是学习相关课程之后,做的些许笔记。😀😀😀

Pandas数据类型

pandas主要数据类型

//主要使用
Series(一维数组)
DataFrame(二维数组)
//次要使用
Panel(三维数组)
Panel4D(四维数组)
PanelND(更多维数组)

导入pandas库

%matplotlib inline
import pandas as pd

创建Pandas基本数据结构

Series

pandas.Series(data=None, index=None)
//数据只有列索引
//data 可以是字典,或者NumPy 里的 ndarray 对象
//index 是数据索引,索引是Pandas数据结构中的一大特性,它主要的功能是帮助我们更快速地定位数据
示例:
//通过字典创建series结构
a=pd.Series({'x':6,'y':66,'z':666})
结果:
x      6
y     66
z    666
dtype: int64 //此处默认为int64数据类型
//通过ndarray对象创建series结构
示例:
a=pd.Series(np.random.randint(1,6,6))
结果:
0    2
1    5
2    1
3    4
4    5
5    4
dtype: int64

DataFrame

//数据不但具有行索引,且具有列索引。
pandas.DataFrame(data=None, index=None, columns=None)
//一维数组、列表、字典或者 Series 字典。
示例1:Series 字典。
a=pd.DataFrame({'x':pd.Series((1,2,3)),'y':pd.Series((4,5,6))})
结果:
	x	y
0	1	4
1	2	5
2	3	6
示例2:列表
a=pd.DataFrame({'one': [1, 2, 3],'two': [4, 5, 6]})
结果:
   one two
0	1	4
1	2	5
2	3	6
示例3:带字典的列表
a = pd.DataFrame([{'x': 1, 'y': 4}, {'x': 2, 'y': 5}, {'x': 3, 'y': 6}])
结果:
	x	y
0	1	4
1	2	5
2	3	6                   
//二维或者结构化的 numpy.ndarray。
示例:
pd.DataFrame(np.random.randint(1,6,6).reshape(2,3))
结果:
	0	1	2
0	3	2	5
1	1	2	2
//一个 Series 或者另一个 DataFrame。

DataFrame与Series二者的核心区别:Series没有列索引

Pandas读取数据

读取数据 CSV 文件

pandas.read_csv()
//括号内直接传入一个相对路径,或者是网络 URL。

// CSV 存储时是一个二维的表格,Pandas 会自动将其读取为 DataFrame 类型
//pd.read_ 前缀开始的方法还可以读取各式各样的数据文件,且支持连接数据库。

DataFrame 的基本操作

DataFrame 结构大致由 3 部分组成,分别是列名、索引和数据。

//基本操作
data.head() //默认显示前五条,数字可变
data.tail(6) //显示后面六条
data.describe() //当于对数据集进行概览,会输出该数据集每一列数据的计数、最大值、最小值等
data.values() //将 DataFrame 转换为 NumPy 数组。
data.index  // 查看索引
data.columns  // 查看列名
data.shape  // 查看形状

数据选择data.iloc方法

//数据预处理,将需要的某些行、列,或者数据块保留下来,输出到下一个流程中去。
data.iloc[[row],[column]] //如果有切片则不需加中括号。
参数可有:
//整数。例如:6
//整数构成的列表或数组。例如:[6,7,8]
//布尔数组。
//可返回索引值的函数或参数。
示例:
data.iloc[6] //选取数据表的第六行数据
data.iloc[:6] //选取数据表的前6行数据
data.iloc[[1,6]] //选取数据表的16行数据
data.iloc[0:6,[3,6]]  //选取数据表的1-6行、36列的并集数据

数据选择data.loc[]方法

//直接根据标签对应的名称选择
data.loc[]方法
//单个标签。例如:6'a',这里的 6 指的是标签而不是索引位置。
//列表或数组包含的标签。例如:['A', 'B', 'C']//切片对象。例如:'A':'D',注意这里和上面切片的不同,首尾都包含在内。
//布尔数组。
//可返回标签的函数或参数。

//具体实现与.iloc类似

数据删除

//.drop 开头的方法都与数据删减有关。
//指定 labels 标签参数,然后再通过 axis 指定按列或按行删除
data.drop(labels=['标签1','标签2'], axis=1)	

数据去重

//一般用法
data.drop_duplicates()

data.drop_duplicates()详解

删除数据表中的空白值

data.dropna()

data.dropna()详解
数据填充

//Pandas将不同类型数据的缺失均采用 NaN(Not a Number)标记。
在时间序列里,时间戳的丢失采用 NaT 标记。

//检测缺失值
data.isna() & data.notna()方法

示例:
data=pd.DataFrame(np.random.rand(6,6),columns=list('ABCDEF')) //创建二维表
data.insert(value=pd.Timestamp('2020.2.28'),loc=0,column='time') //插入一个队列,并设置时间
结果:

		time		A			B			C			D			E			F
0	2020-02-28	0.231797	0.948753	0.325789	0.013904	0.071974	0.819722
1	2020-02-28	0.646224	0.754195	0.879891	0.272166	0.926701	0.311031
2	2020-02-28	0.959402	0.361284	0.521741	0.255729	0.855924	0.154783
3	2020-02-28	0.783390	0.014677	0.257843	0.484230	0.675610	0.372432
4	2020-02-28	0.586522	0.214158	0.353357	0.431891	0.363954	0.268139
5	2020-02-28	0.894166	0.309564	0.888381	0.261137	0.641602	0.100818
data.iloc[[1,3,5],[1,3,5]]=np.nan //246行与246列的并集设置为缺失值

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

data.isna()

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

data.fillna(0) //0填充

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

//通过参数,将缺失值前面或者后面的值填充给相应的缺失值
data.fillna(method='pad') //前面
data.fillna(method='bfill') //后面

前面填充结果:
在这里插入图片描述

data.fillna(df.mean()['A':'E'])//A到E列缺失的,用该列的平均值填充

在这里插入图片描述
插值填充

data.interpolate() //尽量去还原数据本身

//如果你的数据增长速率越来越快,可以选择 method='quadratic'二次插值。
//如果数据集呈现出累计分布的样子,推荐选择 method='pchip'//如果需要填补缺省值,以平滑绘图为目标,推荐选择 method='akima'//环境中需要安装Scipy库

Pandas数据可视化

调用 Matplotlib 接口绘制常见的图形

data_interpolate = data.interpolate()
data_interpolate.plot()//默认线形图
//其他图形指定kind参数即可
示例:
data_interpolate.plot(kind='bar')

其他常用

//数据计算,例如:DataFrame.add 等。
//数据聚合,例如:DataFrame.groupby 等。
//统计分析,例如:DataFrame.abs 等。
//时间序列,例如:DataFrame.shift 等。

在这里插入图片描述
Pandas官网链接:Pandas官网链接

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值