首页 > 编程语言 >Python 数据分析

Python 数据分析

时间:2023-02-21 06:55:23浏览次数:42  
标签:数据分析 randint Python random print ones np data

Prerequisite

PS:只是做部分记录,具体的内容全记载在语雀,但不方便放出来

  • NumPy 是一个用于数值运算的 Python 库,专门对数值运算进行优化,最大的优势是运行高效。
  • Matplotlib 是常用的数据可视化的工具包,用来绘制各种图表,更好地展示数据。
  • Pandas 是 Python 重要的数据分析工具包,也是目前非常流行的 Python 数据分析工具。最初它被作为金融数据分析工具由全球资产管理公司 AQR 在 2008 年 4 月开发,最终在 2009 年底开源出来。

PS:Pandas 的底层数据结构采用 NumPy 来实现,我们也可以把 pandas 理解成是对 NumPy 的封装,从而让数据分析的一些功能的实现变得更轻松方便。

Numpy

对列表分片后的数据进行更改不会影响原数据,但对多维数组分片后的数据进行更改会影响到原数据

# 列表
lst_data = [1, 2, 3]
lst_data2 = lst_data[:]
lst_data2[0] = 6
print(lst_data)
# 输出:[1, 2, 3]

# 多维数组
arr_data = np.array([1, 2, 3])
arr_data2 = arr_data[:]
arr_data2[0] = 6
print(arr_data)
# 输出:[6 2 3]

可以进行广播 和 无法进行广播

# 可以进行广播
# 示例一
data = np.array([[1, 2], [3, 4], [5, 6]])
ones = np.ones(2)
print(data.shape)
print(ones.shape)
# 输出:
# (3, 2)
# (2,)

# 实例二
ones = np.ones((2, 3))
data = np.array([1, 2, 1])
print(ones + data)
# [[2. 3. 2.] [2. 3. 2.]]

data 的形状是 (3, 2),ones 的形状是 (2,)。根据规则在较小维度的 shape 元组前补 1,直到和较大维度的 shape 元组长度相同,补 1 后 ones 的形状是 (1, 2)。

接着将元素在值为 1 的维度上进行复制,最后 ones 的形状变成了 (3, 2),和 data 的形状相同,因此可以进行计算。

# 无法进行广播
data = np.array([[1, 2], [3, 4], [5, 6]])
ones = np.ones(3)
print(data.shape)
print(ones.shape)
# 输出:
# (3, 2)
# (3,)

当 ones 的形状是 (3,) 时,补 1 后变成 (1, 3),最后变成 (3, 3)。形状与 data 不相同,无法进行计算。如果尝试执行 data + ones,会报错
布尔索引,顾名思义就是用布尔值作为索引去获取需要的元素

import numpy as np

data = np.array([[1, 2], [3, 4], [5, 6]])
print(data > 3)
"""
[[False False]
 [False  True]
 [ True  True]]
"""
data = np.array([[1, 2], [3, 4], [5, 6]])
print(data[data > 3])
# 输出:[4 5 6]
data = np.array([[1, 2], [3, 4], [5, 6]])
print(data[(data > 3) & (data < 5)])
# 输出:[4]
data = np.array([[1, 2], [3, 4], [5, 6]])
# 大于 3 或者小于 2
print(data[(data > 3) | (data < 2)])
# 输出:[1 4 5 6]
# 大于 3 或者不小于 2(即大于等于 2)
print(data[(data > 3) | ~(data < 2)])
# 输出:[2 3 4 5 6]

在 numpy 中多个条件的布尔索引正确写法是:and 改用 &,or 改用 |,not 改用 ~,并且每个条件要用括号括起来
np.random.randint() 和 random.randint()

import numpy as np

# 不传入形状时
print(np.random.randint(0, 5))
# 输出:3

# 形状为一维数组时
print(np.random.randint(0, 5, 3))
# 输出:[4 0 1]

# 形状为二维数组时
print(np.random.randint(0, 5, (2, 3)))
# 输出:
# [[0 2 1]
#  [4 2 0]]

np.random.randint() 和 np.random.rand() 传入的参数不一样;
numpy 中的 np.random.randint() 方法和 Python 中的 random.randint() 类似,不同之处在于,random.randint(m, n) 生成的是 [m, n] 之间的整数,而 np.random.randint(m, n) 生成的是 [m, n) 之间的整数,这点一定注意要区分。
genfromtxt() 方法用于文件的读取

import numpy as np

data = np.genfromtxt('a.csv', delimiter=',', encoding='utf-8')
print(data)
'''
1,2,3
4,5,6
'''
"""
[[1.  2.  3.]
 [ 4.  5.  6.]]
"""

Matplotlib

使用 Matplotlib 的前置是学完了 Numpy

标签:数据分析,randint,Python,random,print,ones,np,data
From: https://www.cnblogs.com/CourserLi/p/17023254.html

相关文章

  • 在python中将4维数组中获取3维数组的方法
    在python中将4维数组中获取3维数组的方法得到了这个数组,它的大小是(26,16,16,16)。我需要绘制最后3个维度与不同参数的关系图,但我不清楚如何在不造成灾难的情况下切割第一个......
  • 2.1python认知
    2.1python认知####(1)python简介89年开发的语言,创始人范罗苏姆(GuidovanRossum),别称:龟叔(Guido).python具有非常多并且强大的第三方库,使得程序开发......
  • Python函数
    函数定义def函数名(参数列表):["注释块"](可选)语句块(代码块)return[返回值](可选)函数本身也是一个变量,该变量类型就是可调用类型,属性只读。参数列表和返......
  • python+playwright 学习-1.环境准备与快速开始
    前言说到web自动化,大家最熟悉的就是selenium了,selenium之后又出现了三个强势的框架Puppeteer、CyPress、TestCafe,但这3个都需要掌握JavaScript语言,所以只是少部分......
  • Python3.11 修改 pip 安装包安装位置
    操作步骤修改pip安装路径命令行输入pipconfigsetglobal.targetE:\DevEnv\Repository\Python\site-packages来修改pip安装包路径或者命令行输入py-mpipcon......
  • pip3 install opencv-contrib-python 会在Running setup.py bdist_wheel for opencv-p
    尝试1:pip的版本太低,升级了不行 尝试2:我用的豆瓣源,换成清华大学的,不行  尝试3:切换ubuntu原装python3.6.9的版本一、用miniconda;不行,整不了,piplist和我原来装的环......
  • python pip install numpy & scipy from repository tinghua
    python.exe-mpipinstall--upgradepippython-mpipinstall--upgradepippipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple--upgradepippipinstal......
  • 用python实现数据处理,绘图的综合案例
    首先创建一个类classRecord:def__init__(self,date,order_id,money,province):self.date=date#订单日期self.order_id=order_id#订......
  • python可变类型与不可变类型
    一、可变数据类型和不可变数据类型可变和不可变都是基于内存地址来说的。不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这......
  • python多种赋值方式
    一、链式赋值例1a=10b=10c=10d=10print(f'a:{a},b:{b},c:{c},d:{d}')输出a:10,b:10,c:10,d:10例2a=b=c=d=10print(f'a:{a},b:{b},c:......