数据处理基础

  • numpy基础
    • 1.numpy创建数组及基础属性
    • 2.数组的特点
    • 3.创建常见数组
    • 4.数组数据类型
    • 5.生成随机数
    • 6.一维数组索引
    • 7.布尔索引
    • 8. 多维数组的索引
    • 9.实际问题
    • 10.数组的转置和换轴
    • 11.Numpy矩阵介绍
    • 12.通用函数介绍
    • 13数组广播机制
    • 14Numpy读写二进制文件
    • 15Numpy读写文本文件
  • pandas基础
    • 1Pandas简介
    • 2.pandas读取文本文件
    • 3存储数据框
    • 4.pandas读取excel文件
    • 5将数据框存储为excel文件
    • 6.构建数据框
    • 7.查看数据框的常用属性
    • 8. 按行列顺序访问数据框中的元素
    • 9.按行列名称访问数据框中的元素
    • 10.修改数据框中的元素
    • 11.删除数据框的元素
    • 12.描述分析数据框中的元素
    • 13.转换成时间类型数据
    • 14.时间类型数据的常用操作
    • 15.groupby分组操作
    • 16.agg操作
    • 17.透视表
    • 18.交叉表

numpy基础

1.numpy创建数组及基础属性

numpy是数据处理的基础,pandas也是基于numpy的,首先是numpy数组的创建。
一般我们默认导入了一下库

import numpy as np
import pandas as pd

1.numpy创建数组及基础属性

arr=np.array([[1,2,3],[4,5,6],[7,8,9]])

本文使用的编译环境是jupyter notebook,python3.7。如果想要安装jupyter可以参考我的另一篇文章点击此处不过只要是python3的版本都可以运行,也可以选择自己喜欢的编译器,不影响程序运行

numpy的核心特征之一就是N-维数组对象----ndarray。一个ndarray的每个元素均为相同类型
numpy的基础属性:shape ,dtype ,ndim, size
每一个数组都有一个shape属性用来表征数组每一维度的数量;每个数组都有一个dtype属性用来描述数组的数据类型。ndim返回数组的维数。size返回数组元素个数。

2.数组的特点

数组可以进行矢量运算,比如如果想把list的每个元素平方,用list ** 2这样的运算会报错,而数组不会

3.创建常见数组

除了np.array还有很多函数可以创建新数组,例如np.zeros可以一次行创建全0数组,ones可以一次性创建全1数组,empty则可以创建没有初始化的数组(np.empty有时会返回未初始化的垃圾值)。
eye创建对角线全为1的二维数组
np.logspace(start=开始值,stop=结束值,num=元素个数,base=指定对数的底, endpoint=是否包含结束值)base默认为10
np.linspace()创建等差数列 ,(start=开始值,stop=结束值,num=元素个数)

np.diag() 创建对角数组

arange是Python内建函数range的数组版
Numpy没有特别指明的话,默认的数据结构是float64

4.数组数据类型

数据类型,即dtype也称元数据,表示数据的数据

数据类型的转化,可以用astype方法显式的转换数组的数据类型,也可以直接用函数转换。

5.生成随机数

生成无约束条件的随机数
生成指定shape的均匀随机数
生成符合正太分布的随机数
random具体函数用法

6.一维数组索引

单个元素索引

连续元素切片特点是左闭右开

只取了前两位,因为取不到2
注意[]内都是切片的,返回的维度不会发生改变,如上图,而将索引和切片混合就可以得到低纬度的切片。如
同时注意切片和索引的区别(切片会保留原数据的结构)
虽然返回的是同一个元素,但是维度不同,切片返回的是一个数组,是一个矢量

7.布尔索引

举个例子就非常容易明白了
只有索引为True的会返回,所以可以根据这一特点筛选想要的数据
注意Python的关键字and和or对布尔数组并没有用,请使用&(and)和 |(or)来代替。

8. 多维数组的索引

  1. 多维数组的索引
    首先用reshape函数重构一个多维数组
    这是一个二维数组,假如我们要取12这个元素,那么我们要找出12所在的行列索引,中间用逗号隔开

    对二维数组的切片与一维数组类似
    也可以逻辑索引和切片混合

9.实际问题

9.实际问题
求解距离距离矩阵
代码

10.数组的转置和换轴

转置是一种特殊的数据重组形式,可以返回底层数据的视图而不需要复制任何内容。
还有就是数组的展平ravel函数flatten函数等

还有一些其他的用法
这里只介绍部分用法
数组的换轴,transpose方法可以接收包含轴编号的元组,具体用法点击此处

11.Numpy矩阵介绍

首先是矩阵的生成

  • mat函数mat可以从字符串或者列表中生成,其中字符串的表示中,矩阵的行与行之间用分号隔开,行内的元素之间用空格隔开(也可以用逗号)。
  • numpy.matrix(data, dtype=None, copy=True)如果date是字符串则将其解释为以逗号或空格分隔列的矩阵,以及分隔行的分号。
  • numpy.bmat详情点击

矩阵运算

矩阵的属性

12.通用函数介绍

一元通用函数:

函数名 描述
abs,fabs 逐元素的计算整数 浮点数或复数的绝对值
sqrt 计算每个元素的平方根
exp 计算每个元素的自然指数值

二元通用函数

函数名 描述
multiply 将数组的对应元素相乘
add 将数组的对应元素相加
subtract 在第二个数组中,将第一个数组中的包含的元素去除

这部运算涉及到下面要讲的广播机制

13数组广播机制

广播描述了算法如何在不同形状的数组之间进行运算,它是一个强大的功能。
广播机制的原则是:如果对于每个结尾维度(及从尾部开始的),轴长度都匹配或者其中一个是1,两个数组就是可以兼容广播的。
下面举一个反例

一维数组【1,2,3】会向下进行广播,变成和二维数组相同的shape,然后对应元素相加
然后是二维数组的广播
注意这两数组都是二维数组,不过第二个数组只有一列,数组向右进行广播

14Numpy读写二进制文件

实际情况中使用较少
保存多个数组到一个文件中,注意不能直接print输出文件内容,而要指明查看的文件中的具体数据对象

15Numpy读写文本文件

delimiter:指定文件分割符

pandas基础

1Pandas简介

pandas有两个常用的数据结构:Serise和DataFrame。
Serise是一种一维的有数据标签的数组型对象,DataFrame二维数据表,既有行索引也有列索引
pandas在数据分析处理中有非常重要的地位,具有一下特点:

2.pandas读取文本文件

1.文本文件读取
一般使用pd.read_csv读取csv文件,read_table读取文本文件。两者的参数基本相同
注意读取文件的时候一定要清楚文件的分割符是什么,以及文件的编码格式:utf-8,utf-16,gbk,gb2312,gb18030。后三种是多用于中文的解码
如果编码格式不对的话就会出现乱码的情况,如下
加上编码格式
如果数据中没有列名称读取数据可以设置参数header=None

数据量过大,以下图片均为部分数据展示

3存储数据框

数据保存会默认传递index
左边比原数据多了一列从0开始的index

如果想保留原数据可以设参数index=None
不要列名称可以使用header=None
读取和存储的时候都有header参数,注意区分

4.pandas读取excel文件

1.excel文件读取
想要读取不同的表只需要设置参数sheet_name

5将数据框存储为excel文件

这样保存数据左边也会出现一列从0开始的index,可以加参数index
s

6.构建数据框

一维序列,类比列表,但是每个元素具有名称。如果从DataFrame中取出一列返回的数据结构就是Series。
也可以直接用字典构建Series
创建DataFrame,可以用列表充当data
可以指定index和列名称(columns)

也可以用字典创建DataFrame,这样的话字典的键就会充当类名称,值就是数据源

还可以创建一些特殊的DataFrame,如果不传入data参数,就会创建缺失值型的数据框
还可以创建全零

7.查看数据框的常用属性

查看DataFrame的常见属性

8. 按行列顺序访问数据框中的元素

首先就是单列数据访问
访问任意两列
如果你只需要看数据的前几行可以
看数据的后几行

如果想访问数据框中某个特定的元素,iloc函数指明元素所在的行列
取某一行或者某一列
行列顺序访问也可使用切片的方法
注意获取到的数据的数据结构
因为df.iloc[:,0:1] 左右都是索引,维度不变。

9.按行列名称访问数据框中的元素

当数据框的数量较大的时候,按顺序访问较为麻烦,这时后可以采用按行列名称访问数据框中的元素。
先构建一个新的数据框
使用loc函数进行名称的访问
注意按照行列名称进行访问的时候,切片df.loc['a':'c','C']是闭区间,从‘a’到‘c’,因为按位置索引的时候可以判断3前面的数是2,而计算机无法判断‘c’前面的一个数是什么。

10.修改数据框中的元素

例如

对整列数据进行修改,有两种方式

增加数据

11.删除数据框的元素

删除某行或某列需要用到pandas提供的方法drop
注意默认inplace=False,不对原数据修改
如果想要修改原数据
删除行

12.描述分析数据框中的元素

数值型特征的描述性统计-----Numpy中的描述性统计函数。
pandas库基于Numpy,自然也可以用这些函数对数据框进行描述性统计。
首先构建数据框
每一行的均值
用pandas自带的方法的形式
了解数据的整体分布情况
还可以统计每一列元素的计数结果,也就是统计这一列每个元素的出现次数

13.转换成时间类型数据

pands时间相关的类
在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准时间类型。pandas继承了NumPy库和datetime库的时间相关模块,提供了6种时间相关的类。
Timestamp作为时间类中最基础的,也是最为常用的类型,在多数情况下,时间相关的字符串都会转换成为Timestamp。pandas提供了to_datetime函数,能够实现这一目标
首先我们的数据是点击此处
提取码p53u
'lock_time’不是我们想要的时间类型

除了将数据字原始DataFrame中直接转换为Timestamp格式外,还可以将数据单独提取出来将其转换
为DatetimeIndex或者PeriodIndex。
转换为PeriodIndex的时候需要注意,需要通过freq参数指定时间间隔,常用的时间间隔有Y为年,M为月,D为日,H为小时,T为分钟,S为秒。两个函数可以用来转换数据还可以用来创建时间序列数据,其参数非常类似。
参数设置

14.时间类型数据的常用操作

Timestamp类常用属性
在多数涉及时间相关的数据处理,统计分析的过程中,需要提取时间中的年份,月份等数据,使用对应的Timestamp类属性就能够实现这一目的。

比如获取当前时间的年份,对单个数据的操作是

如果想要对一列进行操作
还可以进行时间的加减

15.groupby分组操作

首先读入我们的数据,数据在上面的网盘链接里
从中提取三列数据,以’order_id’为分组依据
分组后的结果是不能直接访问的,需要进行agg操作

16.agg操作

比如对数据进行求均值

还可以同时进行多种操作
还可以采用字典的形式,对不同列进行不同的函数处理
你也可以自定义函数操作

17.透视表

透视表是数据分析中进行数据分类聚合的重要工具
index:行索引
aggfunc:聚合方法(np.sum等)默认是np.mean

columns是列索引
values是要统计的数据
透视表的详解可以看这里和这里

18.交叉表

透视表一般用于统计出现的次数

pandas 的更多操作点击

数据分析:numpy和pandas基础操作详解相关推荐

  1. html5 php 数据库操作,HTML_HTML5本地数据库基础操作详解,下面分别介绍本地数据库的各 - phpStudy...

    HTML5本地数据库基础操作详解 下面分别介绍本地数据库的各个API及其使用方法. 1.利用openDatabase创建数据库 我们可以利用openDatabase方法创建数据库.openDataba ...

  2. 怎么将pom文件mysql驱动修改版本_JDBC-MySql基础操作详解

    如何使用IJ idea进行一些JDBC的基础操作呢?对此我总结了一下. 一:步骤 1,导入驱动jar包. 2,注册驱动. 3,获取数据库连接对象 Connection. 4,定义sql 5,获取执行s ...

  3. python画笔粗细函数_Python 画图基础操作详解

    python 画图介绍 本文以实用为第一目标,保证读者在看完此文之后可以迅速上手 python 画图,掌握所有画图的基本技巧.(收藏的同时点个赞呗ヽ(•̀ω•́ )ゝ)库加载 我们使用 matplot ...

  4. matlab画图怎么把横纵坐标调换_Python 画图基础操作详解

    python 画图介绍 本文以实用为第一目标,保证读者在看完此文之后可以迅速上手 python 画图,掌握所有画图的基本技巧.(收藏的同时点个赞呗ヽ(•̀ω•́ )ゝ) 库加载 我们使用 matplo ...

  5. pandas join操作详解

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 经常有同学私信或留言询问相关问题,V号bitcarmanlee.github ...

  6. GDB调试基础操作详解【GDB调试】

    什么是bug 什么是调试 什么是调试器 注意 启动调试与程序执行 启动调试并传递启动参数 方式一:启动gdb调试时添加参数 方式二:启动gdb调试之后执行r之前设置参数 方式三:启动gdb调试之后执行 ...

  7. C# asp .net GridView控件基础操作详解

    1.创建 通过VS创建的.net aspx项目通过左栏工具箱搜索可以获得GridView控件. 2.基本操作 单击控件右上角的扩展符号,获得扩展栏 首先是配置数据源,数据源同样通过工具栏的SqlDat ...

  8. python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)

    最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...

  9. python基础-变量,变量类型,字符串str,元组tuple,列表list,字典dict操作详解(超详细)

    python基础--变量 (文章较长,若需要单独看某一个点,可点击目录直接跳转) 文章目录 python基础--变量 1. 变量 2. 变量类型 2.1数字类型 2.2 字符串 2.3 列表 2.4 ...

最新文章

  1. python怎么导入包-如何理解Python中包的引入
  2. 关于服务器返回信息的Unicode转码的方法
  3. 不同路径Python解法
  4. 数据结构选择题(c语言)
  5. mysql 逗号金额比较,如何使用MySQL比较两个逗号分隔的字符串列表
  6. 解决Django Rest Framework中的跨域问题
  7. 难得一见的DIY针孔相机
  8. HTML期末大作业~酒店网站模板(HTML+CSS+JavaScript)
  9. CI框架 where 跟 OR 怎么连用
  10. 减脂单吃全麦面包太乏味?全麦面包的N种吃法合集
  11. 保险选择思路-笔记之5大险种深度解析
  12. 搭建微信订阅号后台服务
  13. Linux搭建tor网络环境
  14. 多屏互动之Windows与Mac下的非自带的远程桌面应用
  15. Linux驱动-platform设备驱动
  16. 不连接显示器或者HDMI欺骗器来 使用Moonlight串流游戏
  17. msg消息及自定义msg消息
  18. 376招募线上被试 | 你对“中文句子”的记忆情况如何?
  19. 使用七牛的sdk上传报错:incorrect region
  20. 源代码——传智播客页面

热门文章

  1. win7 共享无线wifi
  2. 计算机动画实践教学反思,动画的制作教学反思
  3. Kaldi中DNN的实现
  4. 经典签名 100条经典个性签名
  5. 基于推荐系统的校园美食交流系统
  6. JAVA博物馆交流平台计算机毕业设计Mybatis+系统+数据库+调试部署
  7. 终于实现了使用Java代码实现处理图片成圆角或圆形并抗锯齿有效的代码了
  8. Oracle 11g + Oracle客户端 +PLSQL Developer 安装教程
  9. 关于数据库中字段空值的SQL排序的问题
  10. js 发送http请求