【基础汇总】——python数据分析必备三大工具

前言

之前写了那么多的关于金融数据分析的实战案例,我想是时候将这些例子中的使用到的python基础知识进行总结了……

想要学好数据分析,必须掌握的numpy、pandas、matplotlib三大数据分析相关库的知识,收藏这一篇万字长文就足够了!!!

一、numpy

numpy为python提供了大量高效实现复杂数组和矩阵运算的函数

1、数组创建

import numpy as np
# 32位整数型数组
a = np.array([1,2,3])
print('a = ', a)
print('数组元素类型:', a.dtype)

Out:	a = [1 2 3]
		数组元素类型:int32
# 浮点数型数组
b = np.array([1.2, 2.3, 3.4])
print('b = ', b)
print('数组元素类型:', b.dtype)

Out:	b = [1.2 2.3 3.4]
		数组元素类型:float64
# 复数型数组
c = np.array([[1,2],[3,4]], dtype=np.complex64)
print('c = ', c)
print('数组元素类型:', c.dtype)

Out:	c =  [[1.+0.j 2.+0.j]
 		[3.+0.j 4.+0.j]]
		数组元素类型:complex64
# 二维数组
d = np.array([(1.2, 2.3),(3, 4)])
print('d = ', d)
print('数组元素类型:', d.dtype)

Out:	d =  [[1.2 2.3]
 		[3.  4. ]]
		数组元素类型: float64
# 生成3*4的二维数组,并用0填充
e = np.zeros((3,4))
print('e = ', e)
print('数组元素类型:', e.dtype)

e =  [[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
数组元素类型: float64
# 生成2*3*4的三维数组,并用1填充,元素类型限定为int16
f = np.ones((2,3,4), dtype=np.int16)
print('f = ', f)
print('数组元素类型:', f.dtype)

f =  [[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

 [[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]]
数组元素类型: int16
# 生成数组h,取值范围[0,2),步长0.3
h = np.arrange(0, 2, 0.3)
print('h = ', h)
print('数组元素类型:', h.dtype)

h =  [0.  0.3 0.6 0.9 1.2 1.5 1.8]
数组元素类型: float64

numpy使用ndarray类对象来处理多维数组,ndarray一些可以直接访问的属性:

属性名 含义
ndarray.ndim 数组轴的个数
ndarray.shape 数组的形状
ndarray.size 数组中元素的总数
ndarray.dtype 数组中元素的数据类型
ndarray.itemsize 数组中每个元素的字节大小
ndarray.data 实际数组元素的缓冲区
# 数组x,取值范围[0,14),步长1,
x = np.arange(15).reshape(3,5)
print('x = ', x)
print('数组轴的个数:',x.ndim)
print('数组的形状:',x.shape)
print('数组中元素的总数:',x.size)
print('数组中元素的数据类型:',x.dtype)
print('数组中每个元素的字节大小:',x.itemsize)
print('实际数组元素的缓冲区:',x.data)

x =  [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
数组轴的个数: 2
数组的形状: (3, 5)
数组中元素的总数: 15
数组中元素的数据类型: int32
数组中每个元素的字节大小: 4
实际数组元素的缓冲区: <memory at 0x0000024C2033D708>

numpy数组输出基本规则:一维数组输出成行,二维数组输出为矩阵,三维数组输出为矩阵列表。

2、数组运算

a = np.array([20,30,40,50])
b = np.arange(4)
print('a = ',a)
print('b = ',b)

a =  [20 30 40 50]
b =  [0 1 2 3]
# 数组减法运算
c = a - b
print('c = (a - b) = ',c)

c = (a - b) =  [20 29 38 47]
# 数组元素乘方
b_2 = b**2
print('b_2 = b * b = ',b_2)

b_2 = b * b =  [0 1 4 9]
# 数组元素求正弦值
a_sin = np.sin(a)
print('a_sin = sin(a) = ',a_sin)

a_sin = sin(a) =  [ 0.91294525 -0.98803162  0.74511316 -0.26237485]
# 数组元素条件运算
a_cond = (a<35)
print('a_cond = (a<35) = ',a_cond)
# 输出数组中满足条件的元素
print('a数组中小于35的元素是:',a[a<35])

a_cond = (a<35) =  [ True  True False False]
a数组中小于35的元素是: [20 30]
# 数组加法、乘法运算
# 'a+=b'相当于'a=a+b'
# 其他运算同理
f = np.ones((2,3),dtype=np.int)
g = np.random.random((2,3))
print('f = ',f)
print('g = ',g)
f*=3
g+=f
print('f = ',f)
print('g = ',g)

f =  [[1 1 1]
 [1 1 1]]
g =  [[0.48818655 0.14805382 0.24190023]
 [0.23753093 0.87251939 0.53028234]]
f =  [[3 3 3]
 [3 3 3]]
g =  [[3.48818655 3.14805382 3.24190023]
 [3.23753093 3.87251939 3.53028234]]
# 数组的和、最大值、最小值
print('g.sum()=',g.sum())
print('g.min()=',g.min())
print('g.max()=',g.max())

g.sum()= 20.518473272469617
g.min()= 3.1480538249037986
g.max()= 3.872519388164515
# 按指定的轴axis进行运算
print('axis=0,表示按列进行运算,g.max(axis=0)=',g.max(axis=0))
print('axis=1,表示按行进行运算,g.max(axis=1)=',g.max(axis=1))

axis=0,表示按列进行运算,g.max(axis=0)= [3.48818655 3.87251939 3.53028234]
axis=1,表示按行进行运算,g.max(axis=1)= [3.48818655 3.87251939]
# 对数组进行排序
h = np.random.random(15)
print('h = ',h)
print('排序后的h = ',np.sort(h))

h =  [0.05010685 0.16184821 0.59109447 0.98844731 0.68039122 0.13331593
 0.61283281 0.49090379 0.30930569 0.0817642  0.30148594 0.18140083
 0.03374513 0.75961934 0.990532  ]
排序后的h =  [0.03374513 0.05010685 0.0817642  0.13331593 0.16184821 0.18140083
 0.30148594 0.30930569 0.49090379 0.59109447 0.61283281 0.68039122
 0.75961934 0.98844731 0.990532  
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

貮叁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值