七月老师python课程_七月在线python数据分析入门课

本文介绍了Python数据分析的基础,包括Numpy的数组操作、Pandas的数据处理以及Matplotlib的数据可视化。通过实例展示了如何使用这些库进行数据处理和绘图,适合初学者入门。
摘要由CSDN通过智能技术生成

python目前生信的流行语言,其优点不仅在于面向对象编程,适合作为入门语言,还在于学好python可以转行!!!跳出生物坑!!!偶然机会接触七月在线的python数据分析课程,作为入门课程性价比也是极高的,第一节课便对数据分析所必备各种库做了简介

常见库的安装和学习

1.Numpy简介

NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

核心数据结构:ndarray

例子:矩阵计算优化

import numpy as np

# 使用普通一维数组生成NumPy一维数组

data = [6, 7.5, 8, 0, 1]

arr = np.array(data)

print(arr)

print(arr.dtype) # 类型

print('')

# 使用普通二维数组生成NumPy二维数组

data = [[1, 2, 3, 4], [5, 6, 7, 8]]

arr = np.array(data)

print(arr)

print(arr.shape) # 维度

print('')

# 使用zeros/empty

print(np.zeros(10)) # 生成包含10个0的一维数组

print(np.zeros((3, 6))) # 生成3*6的二维数组

print(np.empty((2, 3, 2))) # 生成2*3*2的三维数组,所有元素未初始化。

print('')

# 使用arrange生成连续元素

print(np.arange(15)) # [0, 1, 2, ..., 14]

numpy同样支持索引和切片,但与python的list不同,numpy为引用优先

# 使用切片访问和操作数组

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

print(arr[1:6]) # 打印元素arr[1]到arr[5],和list切片不同,这里是引用。

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

print(arr[:2]) # 打印第1、2行

print(arr[:2, 1:]) # 打印第1、2行,第2、3列

print(arr[:, :1]) # 打印第一列的所有元素

arr[:2, 1:] = 0 # 第1、2行,第2、3列的元素设置为0

print(arr)

2.pandas简介

Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

核心数据结构:Series, DataFrame和index对象

缺失数据处理

例子:pandas处理Excel文件

2.1series

pandas可以指定索引序列

print '指定Series的index'

obj2 = Series([4, 7, -5, 3], index = ['d', 'b', 'a', 'c'])

print obj2

print obj2.index

print obj2['a']

obj2['d'] = 6

print obj2[['c', 'a', 'd']]

print obj2[obj2 > 0] # 找出大于0的元素

print 'b' in obj2 # 判断索引是否存在

print 'e' in obj2

print

print '使用字典生成Series'

sdata = {'Ohio':45000, 'Texas':71000, 'Oregon':16000, 'Utah':5000}

obj3 = Series(sdata)

print obj3

print

print '使用字典生成Series,并额外指定index,不匹配部分为NaN。'

states = ['California', 'Ohio', 'Oregon', 'Texas']

obj4 = Series(sdata, index = states)

print obj4

print

print 'Series相加,相同索引部分相加。'

print obj3 + obj4

print

print '指定Series及其索引的名字'

obj4.name = 'population'

obj4.index.name = 'state'

print obj4

print

2.2 DataFrame

即为行列均有表头

# 用字典生成DataFrame,key为列的名字。

data = {'state':['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],

'year':[2000, 2001, 2002, 2001, 2002],

'pop':[1.5, 1.7, 3.6, 2.4, 2.9]}

print(DataFrame(data))

print(DataFrame(data, columns = ['year', 'state', 'pop'])) # 指定列顺序

print('')

frame2['eastern'] = (frame2.state == 'Ohio') # 如果state等于Ohio为True

print(frame2)

print(frame2.columns)

print('')

3.matplot简介

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

import numpy as np

import matplotlib.pyplot as plt

# 基本配置

plt.figure(figsize = (10, 10), dpi = 80)

plt.xlim(-4.0, 4.0) # 坐标上下限

plt.ylim(-1.0, 1.0)

'''

plt.xticks(np.linspace(-4, 4, 9, endpoint = True))

plt.yticks(np.linspace(-1, 1, 5, endpoint = True))

'''

# 更直观的记号

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$'])

# 画曲线

X = np.linspace(-np.pi, np.pi, 256,endpoint = True)

Cos,Sin = np.cos(X), np.sin(X)

plt.plot(X, Cos, color = 'blue', linewidth = 1.0, linestyle = '-', label = 'cos') # label添加图例

plt.plot(X, Sin, color = 'green', linewidth = 1.0, linestyle = '-', label = 'sin')

plt.legend(loc='upper left') # 图例位置左上角

# 移动坐标

ax = plt.gca()

ax.spines['top'].set_color('none')

ax.spines['right'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

# 给特殊点加注释

t = 2*np.pi/3

plt.plot([t, t],[0, np.cos(t)], color = 'blue', linewidth = 2.5, linestyle = '--')

plt.scatter([t, ],[np.cos(t),], 50, color ='red')

plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',

xy = (t, np.cos(t)), xycoords = 'data',

xytext = (-90, -50), textcoords = 'offset points', fontsize = 16,

arrowprops = {'arrowstyle':'->', 'connectionstyle':'arc3,rad=.2'})

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")

plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',

xy = (t, np.sin(t)), xycoords = 'data',

xytext = (+10, +30), textcoords = 'offset points', fontsize = 16,

arrowprops = {'arrowstyle':'->', 'connectionstyle':'arc3,rad=.2'})

# 显示图片

plt.show()

4.SciPy简介

SciPy是一种使用NumPy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展。

例子:最小二乘拟合

import numpy as np

from scipy.optimize import leastsq

import matplotlib.pyplot as plt

def func(x, p):

"""

数据拟合所用的函数: A*sin(2*pi*k*x + theta)

"""

A, k, theta = p

return A*np.sin(2*np.pi*k*x+theta)

def residuals(p, y, x):

"""

实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数

"""

return y - func(x, p)

x = np.linspace(0, -2*np.pi, 100)

A, k, theta = 10, 0.34, np.pi/6 # 真实数据的函数参数

y0 = func(x, [A, k, theta]) # 真实数据

y1 = y0 + 2 * np.random.randn(len(x)) # 加入噪声之后的实验数据

p0 = [7, 0.2, 0] # 第一次猜测的函数拟合参数

# 调用leastsq进行数据拟合

# residuals为计算误差的函数

# p0为拟合参数的初始值

# args为需要拟合的实验数据

plsq = leastsq(residuals, p0, args=(y1, x))

print("真实参数:", [A, k, theta])

print("拟合参数", plsq[0]) # 实验数据拟合后的参数

plt.plot(x, y0, label = 'Standard data')

plt.plot(x, y1, label = 'Test data with noise')

plt.plot(x, func(x, plsq[0]), label = 'Result data')

plt.legend()

plt.show()

学习数据获取

Tushare(免费、开源的python财经数据接口包)http://archive.ics.uci.edu/ml/​archive.ics.uci.edu

python学习还是需要自己敲代码实操才能加深理解,对于代码不需要死记硬背,重在理解,接下来的学习也希望与大家共勉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值