参考的教程是哔哩哔哩孙兴华UP主的视频,边学边做

BV1ji4y157uB

代码及所用的数据已上传至Github
learn_numpy_pandas_matplotlib

文章目录

  • Numpy
  • Pandas
  • Matplotlib

NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

以下粘贴部分代码,完整代码目录已上传至Github

Numpy

learn_numpy/demo02

import numpy as npa = np.array([1, 2, 3, 4, 5])
b = np.array(range(1, 6))
c = np.arange(1, 6)
print(f'a:{a}')
print(f'b:{b}')
print(f'c:{c}')
print('a.dtype:', a.dtype)
print('type(a):', type(a))
a1 = np.array([1, 2, 3, 4, 5], 'int64')
print(f'array中元素的数据类型:', a1.dtype)
print('array的维度/形状:', b.shape)
print('array的维度的数目:', a.ndim)
print('array中所有元素的数目:', a.size)

learn_numpy/demo05

import numpy as npa = np.random.randn()
print(f'一个随机数:{a}')
b = np.random.randn(3)
print(f'三个数:{b}')
c = np.random.randn(3, 2)
print(f'3行2列:\n{c}')
d = np.random.randn(3, 2, 4)
print(f'3块,每块是2行4列:\n{d}')
print('四舍五入(保留两位小数):', np.round(3.14159, 2))print('*' * 30)
a = np.array(range(1, 8), dtype=float)  # 修改数据类型
b = np.array(range(1, 8), dtype='float32')  # 修改数据类型和位数
print(a)
print(b)
print(a.dtype)
print(b.dtype)
print(type(a))
print(type(b))

learn_numpy/demo20

import numpy as np# lexsort(keys, axis=-1)
# lexsort()根据键值的字典序进行排序,支持对数组按指定行或列的顺序排序,间接排序,不修改原数组,返回索引。一般对一维数组使用argsort()。
# 默认按最后一行元素由小到大排序, 返回最后一行元素排序后索引所在位置。
x = np.array([[0, 12, 48], [4, 18, 14], [7, 1, 99]])
print(np.lexsort(x))
a = np.array([1, 5, 1, 4, 3, 4, 4])
b = np.array([9, 4, 0, 4, 0, 2, 1])
ind = np.lexsort((b, a))
print(ind)
print(list(zip(a[ind], b[ind])))
c = [[1, 5, 1, 4, 3, 4, 4], [9, 4, 0, 4, 0, 2, 1]]
print(np.lexsort(c))
print(x[np.lexsort(x.T)])  # 按最后一列顺序排序
print(x[np.lexsort(-x.T)])  # 按最后一列逆序排序
print(x[np.lexsort(x[:, ::-1].T)])  # 按第一列顺序排序
print(x.T[np.lexsort(x)].T)  # 按最后一行顺序排序
print(x.T[np.lexsort(x[::-1, :])].T)  # 按第一行顺序排序

Pandas

learn_pandas/demo10

import pandas as pdurl = './data_files/课件011/计算列.xlsx'
data = pd.read_excel(url, index_col='序号')
data['销售金额'] = data['单价'] * data['销售数量']
print(data)url = './data_files/课件011/计算列.csv'
data = pd.read_csv(url, index_col='序号')
data['销售金额'] = data['单价'] * data['销售数量']
print(data)url = './data_files/课件011/计算列.csv'
data = pd.read_csv(url, index_col='序号')
for i in range(1, 3):data['销售金额'].at[i] = data['单价'].at[i] * data['销售数量'].at[i]
print(data)

learn_pandas/demo25

import numpy as np
import pandas as pdpath = './data_files/课件028-029/透视.xlsx'
data = pd.read_excel(path)
# index需要聚合的列名,默认情况下聚合所有数据值的列
data2 = pd.pivot_table(data, index=['部门', '销售人员'])
# values在结果透视的行上进行分组的列名或其它分组键【就是透视表里显示的列】
data3 = pd.pivot_table(data, index=['部门', '销售人员'], values=['数量', '金额'])
# columns在结果透视表的列上进行分组的列名或其它分组键
data4 = pd.pivot_table(data, index=['部门', '销售人员'], values=['数量', '金额'], columns='所属区域')
# Aggfunc聚合函数或函数列表(默认情况下是mean)可以是groupby里面的任意有效函数
data5 = pd.pivot_table(data, index=['部门', '销售人员'], values=['数量', '金额'], columns='所属区域',aggfunc=[sum, np.mean])
'''
5、fill_value 在结果表中替换缺失值
例如:fill_value = 0
6、dropna 如果为True,将不含所有条目均为Na的列(默认为False)
dropna=True
7、margins 添加行/列小计和总计 (默认为False)
margins =True
'''
# print(data5)# 交叉表 crosstab
data6 = pd.crosstab([data.日期.dt.month, data.所属区域], data.部门, margins=True)
print(data6)

Matplotlib

叠加柱状图

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = pd.read_excel('./课件/04.堆叠柱状图.xlsx')
plt.bar(np.arange(9), data['语文'], color="red", label="语文", align='center')
plt.bar(np.arange(9), data['数学'], bottom=data['语文'], color="green", label="数学", align='center')
plt.bar(np.arange(9), data['英语'], bottom=data['语文'] + data['数学'], color="yellow", label="英语", align='center')
# 设置x轴标签
plt.xticks(np.arange(9), data['姓名'])
# 显示图例,上面中心位置,分成3列
plt.legend(loc='upper center', ncol=3)
# 设置y轴的刻度范围
plt.ylim([0, 300])
for x1, y1 in enumerate(data['语文']):plt.text(x1, y1 - 10, str(y1), ha='center', fontsize=20, color='black')
for x2, y2 in enumerate(data['语文'] + data['数学']):plt.text(x2, y2 - 10, str(y2), ha='center', fontsize=20, color='black')
for x3, y3 in enumerate(data['语文'] + data['数学'] + data['英语']):plt.text(x3, y3 - 10, str(y3), ha='center', fontsize=20, color='black')
plt.grid()  # 网格线
plt.savefig('./图片/叠加柱状图.jpg')
plt.show()


饼图

import pandas as pd
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = pd.read_excel('./课件/07.饼图.xlsx')
plt.pie(x=data.第一次, labels=tuple(data.姓名), explode=(0, 0.2, 0), colors=['r', 'g', 'b'], shadow=True,autopct='%.2f%%', startangle=90, counterclock=False, labeldistance=0.8, radius=1.3, pctdistance=0.3,textprops={'fontsize': 20, 'color': 'black'})
# 将饼图显示为正圆形,plt.axis( )
plt.axis('equal')
# 添加图例,plt.legend( )
# loc = 'upper right' 位于右上角
# bbox_to_anchor=[0.5, 0.5] # 外边距 上边 右边
# ncol=2 分两列
# borderaxespad = 0.3图例的内边距
plt.legend(loc="upper right", fontsize=10, bbox_to_anchor=(1.1, 1.05), borderaxespad=0.3, ncol=3)
plt.savefig('./图片/饼图.jpg', dpi=200, bbox_inches='tight')  # bbox_inches='tight' 忽略不可见的轴
plt.show()
'''
def pie(x, explode=None, labels=None, colors=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,radius=None, counterclock=True, wedgeprops=None, textprops=None,center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
x :(每一块)的比例,如果sum(x) > 1会使用sum(x)归一化;
labels :(每一块)饼图外侧显示的说明文字;
explode :(每一块)离开中心距离;
startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起;
shadow :在饼图下面画一个阴影。默认值:False,即不画阴影;
labeldistance :label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧;
autopct :控制饼图内百分比设置,可以使用format字符串或者format function '%1.1f'指小数点前后位数(没有用空格补齐);
pctdistance :类似于labeldistance,指定autopct的位置刻度,默认值为0.6;
radius :控制饼图半径,默认值为1;counterclock :指定指针方向;布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时
针。wedgeprops :字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。例如:wedgeprops={'linewidth':3}设置
wedge线宽为3。
textprops :设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。
center :浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。
frame :布尔类型,可选参数,默认值:False。如果是true,绘制带有表的轴框架。
rotatelabels :布尔类型,可选参数,默认为:False。如果为True,旋转每个label到指定的角度。
'''


散点图

import pandas as pd
import matplotlib.pyplot as pltpd.options.display.max_columns = None
plt.rcParams['font.sans-serif'] = ['SimHei']
data = pd.read_excel('./课件/16.散点图.xlsx')
plt.scatter(data.身高, data.体重, s=data.身高, c='b', marker='o', alpha=0.6, linewidths=20)
plt.savefig('./图片/散点图.jpg')
plt.show()# 带颜色的散点图
import numpy as npk = 500
x = np.random.rand(k)
y = np.random.rand(k)
size = np.random.rand(k) * 50  # 生成每个点的大小
# arctan2求反正切值
color = np.arctan2(x, y)  # 生成每个点的颜色大小
plt.scatter(x, y, s=size, c=color)
plt.colorbar()  # 添加颜色栏
plt.savefig('./图片/带颜色的散点图.jpg')
plt.show()# 显示所有列,同理:max_rows
pd.options.display.max_columns = None
plt.scatter(data.身高, data.体重, s=data.身高, c=data.身高)
plt.colorbar()  # 添加颜色栏
plt.show()


玫瑰图

树状图

import matplotlib.pyplot as plt
import squarify
import pandas as pdplt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False
数据 = pd.read_excel('./课件/29.树状图.xlsx')
自定义颜色 = ['r', 'y', 'b', 'g', 'yellow', 'cyan', 'coral']
图 = squarify.plot(sizes=数据.销售数量,  # 指定数据label=数据.名称,  # 指定标签color=自定义颜色,  # 自定义颜色alpha=0.6,value=数据.销售数量,  # 添加数据标签edgecolor='white',  # 设置边界框颜色为白色linewidth=3,  # 设置边框宽度text_kwargs={'fontsize': 16})  # 设置字体大小
图.set_title("销售情况", fontdict={'fontsize': 20})
plt.axis('off')  # 去掉坐标轴
plt.tick_params(top='off', right='off')  # 去掉刻度
plt.show()

以上只展示了部分代码及图片
学无止境,温故而知新

项目地址
learn_numpy_pandas_matplotlib

Numpy+Pandas+Matplotlib学习相关推荐

  1. Python numpy+pandas+matplotlib学习笔记

    Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...

  2. numpy pandas matplotlib 学习笔记

    3/9/2018 c >>>编写>>> numpy >>>升级>>> pandas https://www.bilibili.c ...

  3. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

  4. Numpy,Pandas,Matplotlib

    一 . numpy -- 数据分析:就是把一些看似杂乱无章的数据信息提炼出来,总结出所研究的内在规律 -- 数据分析三剑客:Numpy,Pandas,Matplotlib -- Numpy(Numer ...

  5. python科学计算之numpy+pandas+matplotlib+mysql

    简介 本文主要介绍了读取mysql中的数据,将其保存至numpy和pandas中,通过matplotlib进行可视化数据分析. 一.环境搭建 使用anaconda搭建科学计算环境,并安装相关软件包. ...

  6. [机器学习]Python中Numpy,Pandas,Matplotlib,Scipy,Seaborn介绍

    Python做数据挖掘很强大,最近几年很火的机器学习以及较为前沿的自然语言处理也会选用Python作为基础工具. 其中python做数据挖掘足够强大,不用怀疑. #1. Numpy介绍 Numpy是P ...

  7. python数据分析与机器学习(Numpy,Pandas,Matplotlib)

    机器学习怎么学? 机器学习包含数学原理推导和实际应用技巧,所以需要清楚算法的推导过程和如何应用. 深度学习是机器学习中神经网络算法的延伸,在计算机视觉和自然语言处理中应用更厉害一些. 自己从头开始做笔 ...

  8. numpy+pandas+matplotlib绘制误差条形图

    代码源于:Python数据分析与挖掘实战 绘制误差棒图: #-*- coding: utf-8 -*-import matplotlib.pyplot as plt import numpy as n ...

  9. numpy+pandas+matplotlib绘制对数函数图形

    代码来源: Python数据分析与挖掘实战 对x轴(y轴)使用对数刻度(以10为底),y轴(x轴)使用线性刻度,进行plot函数绘图 对数:如果a的x次方等于N(a>0,且a不等于0),那么数x ...

最新文章

  1. 在Ubuntu 14.04 64bit下玩转Qvod快播Linux山寨版本
  2. iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮
  3. (原创)7-1 银行业务队列简单模拟 (30 分)
  4. maven国内镜像配置
  5. 怎么让电脑运行速度变快_电脑运行慢怎么办 电脑运行慢解决方法【详解】
  6. “‘天池·TEENTOP杯’AI少年挑战赛”正式启动!
  7. epoll怎么实现的
  8. 后端传输流跨域_Java开发中解决Js的跨域问题过程解析
  9. Date实战案例:倒计时日历
  10. 淘宝PK京东:哥刷的不是广告,刷的是存在
  11. 计算机创业计划书800字大全,大学生创业计划书800字左右.docx
  12. [Pytorch系列-33]:数据集 - torchvision与CIFAR10/CIFAR100详解
  13. P(B|A)和P(AB)的理解
  14. 前端自动化构建工具:用Gulp4.0搭建一个基本的前端开发环境
  15. HP DL380 G3服务器重做RAID
  16. 双系统(ubuntu系统与window系统)时间不一致的解决办法
  17. 【HYSBZ - 4668】 冷战
  18. LeetCode 695. 岛屿的最大面积【c++/java详细题解】
  19. 《统计学习方法》极简笔记P2:感知机数学推导
  20. 开源文件文档在线预览项目解决方案kkFileView本地搭建运行与Docker部署运行

热门文章

  1. 修复typec otg数据线
  2. 二项分布的期望和方差
  3. Python读写串口编程
  4. 云计算:优势与未来趋势
  5. 伟大的父亲顶级富豪写给儿子的一封信
  6. 尼科彻斯定理(简单易懂)
  7. 乌云飘散后,一群白帽子这样成长
  8. 如何比较两个结构体是否相等
  9. html5花瓣掉落,用掉落的花瓣,可以玩出多少种让人惊艳的创意?
  10. YOLOV3-项目解析+关键点理解