数据分析三剑客

本文详细介绍了Python数据分析的重要库Numpy和Pandas的使用,包括Numpy的数组操作、聚合与排序,Pandas的Series和DataFrame数据结构,以及数据清洗、级联、合并等数据处理技巧,通过实例展示了数据处理的常见方法。
摘要由CSDN通过智能技术生成

前言

大数据时代,数据的重要性不言而喻,掌握数据者得天下。很多同学可能对一堆数据不知如何进行处理分析得到有用的信息,本文主要基于anaconda 简单介绍 Numpy 模块的使用,重点演示 Pandas 的应用。
  • 数据分析:把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
  • 数据分析三剑客:Numpy,Pandas,Matplotlib
  • Numpy与Padas是数据结构、Matplotlib绘图使用

0. 环境准备

# 环境变量 for zsh,并为 anaconda 的pip命别名
export PATH=$PATH:/Applications/anaconda3/bin
alias cpip="/Applications/anaconda3/bin/pip"
source ~/.zhsrc

1. numpy

  • NumPy(Numerical Python):Python语言的一个扩展程序库,支持大量的维度数据与矩阵运算,针对数组提供大量的数学函数库。

1. 使用np.array()创建

  • 数组
import numpy as np
# 一维数组
np.array([1,2,3])
# 二维数组
np.array([[1,2,3], [4,5,6]])
# 返回值优先级:str > float > int
  • matplotlib绘图
import matplotlib.pylab as plt
# 返回一个数组,图片是三维数据
img_arr = plt.imread('./cat.jpg')
plt.imshow(img_arr)
plt.imshow(img_arr-100)

2. np的数组(4)

  • linspace
# 平均生成 num 个 start-stop数据
np.linspace(start, stop, num)
  • arange:等差数列
# start 默认是 0, step默认是 1, 给定 step 必须有start
np.arange([start,] stop[, step,], dtype=None)
# 不包含 10
np.arange(0, 10, 2)
  • random.randint():随机数
# [low, high),high=None表示 [0-low), size=(1,2,3...)表示维度
np.random.randint(randint(low, high=None, size=None, dtype='l')
# 固定随机性,随机因子(系统时间)
np.random.seed(10)
np.random.randint(0,100, size=(4,5))
  • random.random(size)
# 默认大小是 0-1
np.random.random(size=(4,5))

3. ndarray属性(3)

arr.shape                   # (4,5),返回的是数组的形状
arr.size                    # 元素个数
arr.dtype                   # ('int64'),数据类型

4. 操作(4)

  • 索引
arr[1]                      # 第一个元素,索引从 0 开始
arr[2, 3]                   # 第二行第三列元素
  • 切片
arr[0:2]                    # 前两行
arr[:, 0:2]                 # , 左边是行,右边是列
arr[::-1]                   # 行倒序
arr[:, ::-1]                # 列倒序
arr[:, ::-1, :]
  • 变形:参数是一个tuple
arr.reshape()
# 容量必须刚刚好
arr.reshape((20,))
arr.reshape((1, 20))
arr.reshape(1, 20)
# 自动计算行数
arr.reshape((-1, 4))
  • 级联
    • 数据的拼接,注意行或列的长度
# axis=0 表示作用于行(纵向拼接),axis=1作用于列(横向拼接)
np.concatenate((arr, arr), axis=0)
  • 算术运算
    • 广播机制:如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失维度和(或)轴长度为1的维度上进行。
b = np.array([[1],[2],[3]])
a = np.array([1,2,3])
b-a
--> array([[ 0, -1, -2],
       [ 1,  0, -1],
       [ 2,  1,  0]])

5. ndarray聚合

  • np.sum/mean
arr.sum(axis=None)              # 计算所有元素的和
arr.sum(axis=0)                 # 作用于列,数据并到一行。列的和
arr.sum(axis=1)                 # 作用于行,数据并到一列。行的和
arr.mean(axis=None/0/1)         # 平均数
  • 其他
np.sqrt(arr)                    # 开方
np.prod(arr)                    # 所有元素相乘
np.min(arr)                     # 最小值
np.max(arr)                     # 最大值
np.std(arr)                     # 标准差
np.var(arr)                     # 方差
np.median(arr)                  # 中数
np.power(arr,2)                 # 幂运算
np.argmin(arr)                  # 最小值的下标
np.argmax(arr)                  # 最大值的下标
np.inf                          # 无穷大
np.exp(10)                      # 以e为底的指数,e**10
np.log(10)                      # 对数,e为底

6. ndarray排序

  • sort排序
# axis默认-1:表示按照上次的排序规则排序
# axis=0:表示按照列元素排序,1表示行元素排序
np.sort(arr, axis=-1, kind='quicksort', order=None)

# 列元素排序,列有序,arr被修改
arr.sort(axis=0)
# 列元素排序,列有序,不改变原数据
np.sort(arr, axis=0)
Note(2)
  1. axis=0:表示针对进行计算或排序,列有序
  2. axis=1:表示针对进行计算或排序,行有序

2. pandas

​ SQL中的select是根据列的名称来选取;Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取。相关函数如下:

loc                     # 基于列label,可选取特定行(根据行index)
iloc                    # 基于行/列的position(默认的索引,整型)
at                      # 根据指定行index及列label,快速定位DataFrame的元素
iat                     # 与at类似,不同的是根据position来定位的
ix                      # 为loc与iloc的混合体,既支持label也支持position
  • 导入需要的包
import pandas as pd
from pandas import Series, DataFrame
import numpy as np

1. Series

1. 创建和去重
  • 是一种类似与一维数组的对象
    • values:一组数据(ndarray类型)
    • index:相关的数据索引标签
  • 创建:由列表或numpy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值