python-数据分析-numpy、pandas、matplotlib的常用方法

一、numpy

import numpy as np

1.numpy 数组 和 list 的区别

输出方式不同
在这里插入图片描述

里面包含的元素类型
在这里插入图片描述

2.构造并访问二维数组

使用 索引/切片 访问ndarray元素

切片 左闭右开

np.array(list)

在这里插入图片描述

3.快捷构造高维数组

  • np.arange()

  • np.random.randn() - - - 服从标准正态分布- - - 数学期望 μ - - - 标准方差 s
    在这里插入图片描述
    使用matplotlib.pyplot模块验证标准正态分布
    在这里插入图片描述

  • np.random.randint(起始数,终止数(行,列))

4.改变数组的形状 几行几列 reshape

在这里插入图片描述

二、pandas

数据分析 - - - 数据清洗 - - - 控制过滤 - - - 异常值捕获

map分组 聚合

import numpy as np
import pandas as pd

pandas善于处理二维数据

1.数据结构 Series 和 DataFrame

Series

series类似于通过numpy产生的一维数据,但series包含索引(可以自己定)
在这里插入图片描述

在这里插入图片描述

DataFrame

DataFrame是一种二维表格数据结构

创建方法:

  1. 通过列表创建

    行索引是index,列索引是columns

    在这里插入图片描述

    先创建一个空的DataFrame,通过列表生成DataFrame

    在这里插入图片描述

  2. 通过字典创建

    在这里插入图片描述
    简单创建
    在这里插入图片描述
    将字典键变成行索引 - - - from_dict - - - orient(朝向)或者使用 T
    在这里插入图片描述

    data = {'a':[1,3,5],'b':[2,4,6]}
    pd.DataFrame(data = data)pd.DataFrame.from_dict(data,orient='index')
    

    在这里插入图片描述

  3. 通过二维数组创建

    在这里插入图片描述

    np.arange(12)	# array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
    

2.修改索引

set_index 把常规行变成索引列

不会修改原始数据,若希望修改,使用 inplace=True

data.set_index(‘index’, inplace=True)

在这里插入图片描述

修改列名称 rename

修改列名称,使用columns - - - 行 index
使用字典来表达映射关系 - - - {原始数据:新数据}
在这里插入图片描述

将行索引变成常规列 reset_index()

若想修改原始数据 使用reset_index(replace=True)
在这里插入图片描述

3.Excel或csv数据的读取和写入

pd.read_excel(file_name, sheet_name=0, index_col=0)
从左到右,第一个sheet索引是0,该函数返回该页内容 - - - 会将第一行变为列索引 - - - 行索引从0开始
index_col=0 :将第一列变成行索引
header=0:将第一行变成列索引 - - - header=[0,1] 将前两行变成列索引

xxx.to_excel(file_name):将数据写到新的Excel文件

pd.read_csv(file_name, sep=','):读取csv文件,sep默认逗号分隔
index_col - - - header
xxx.to_csv(file_name)

4.pandas数据的读取和筛选

df = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],index=['r1','r2','r3'],columns=['c1','c2','c3'])

在这里插入图片描述

  • 读取 列 xxx[‘xxx’]
    在这里插入图片描述
  • 读取 行 xx.loc[‘xxx’]

在这里插入图片描述

  • df.head()
    默认查看前5行,出入几查看几行

  • 查看特殊的数据 按照特定条件筛选

    在这里插入图片描述

5.数据整体情况查看

  • df.shape - - - 查看数据有几行几列
  • df.describe() - - - 查看一些统计指标 – 每一列的个数 均值 标准方差 最小值 最大值
  • df.info() - - - 查看表格数据的信息 - - - 每一列的个数 是否有空值 每一列的类型

在这里插入图片描述

  • df.value_counts() - - - df.loc[‘r2’].value_counts()
    查看某行或某列有哪些数据,以及这些次数出现的频次
    在这里插入图片描述

6.数据运算

  • 从已有的列,通过数据运算创造一个新的列
    在这里插入图片描述
  • sum 求和 mean 均值 axis=0 is 列(默认) axis=1 is 行
    求列方向的聚合值

7.数据映射 map()

map()根据列对数据进行映射

map是一个循环遍历的过程

people = pd.DataFrame(data={'身高':np.random.randint(130,180,10),'age':np.random.randint(18,23,10)
})

在这里插入图片描述
在这里插入图片描述

def map_high(x):if x >= 170:return '高'else:return '低'people['高/低'] = people['身高'].map(map_high)

在这里插入图片描述

在这里插入图片描述

8.空值的填充和查找

NaN空值·

写入空值

在这里插入图片描述

填充空值 fillna()

表格数据如果显示NaN,表示此处为空值fillna()函数,可以填充空值
inplace=True表示写入到数据内存

people.fillna(value=0, inplace=True)

将空值NaN使用value替换

在这里插入图片描述

查找空值 isnull()

是NaN,返回True - - - True is 1
不是返回False - - - False is 0

在这里插入图片描述
xxx.isnull().sum() 对布尔值进行列方向的求和 - - - - 求出每一列空值的个数

三、matplotlib

import numpy as np
import pandas as pdimport matplotlib.pyplot as plt
%matplotlib inline

1.折线图 plt.plot()

在这里插入图片描述

color 线的颜色
linewidth 线的宽度 像素
linestyle 线的风格

在这里插入图片描述
dashed 虚线 dashdot 虚线和点 dotted 点

在这里插入图片描述
在这里插入图片描述

# 可以省略,但建议写上,强制将前面的绘图代码渲染出来
plt.show()
x = [1,2,3]
y = [2,4,6]
plt.plot(x,y)a = [1,3,5]
b = [1,2,3]
plt.plot(a,b)
# 可以省略,但建议写上,强制将前面的绘图代码渲染出来
plt.show()

在这里插入图片描述

2.柱状图 plt.bar()

条形图的横轴可以是字符串,起标识作用

x = ['A','B','C','D']
y = [13,17,15,14]
# plt.bar(x,y, color=['red','blue'])
plt.bar(x,y,color=np.random.random((4,3)))

在这里插入图片描述

3.散点图 plt.scatter()

回归问题

# 横轴数据
x = [1.3, 4,5.8,7.4]
# 纵轴数据
y = [20,30,40,50]
# 大小  也可以表达第三维数据
size = np.array([1,4,9,16])
plt.scatter(x,y,s=size*10,c=(1,2,3,4))

在这里插入图片描述

四、pandas 自带的绘图函数

DataFrame

# 从10到100随机生成一个数据
np.random.randint(10,100)   # 74
# 10行3列
np.random.randint(10,100,size=(10,3))

在这里插入图片描述

df = pd.DataFrame(data=np.random.randint(10,100, size=(10,3)),columns=['A','B','C'])
df.plot(kind='bar')

kind默认是line
hist 直方图 - - - pie 饼图 - - - box 箱体图 - - - area 面积图
在这里插入图片描述
在这里插入图片描述
T转置操作
在这里插入图片描述
Series

df = pd.Series(data=np.random.randint(1,10,size=5),index=['A','B','C','D','E'])
df.plot(kind='bar',color='red')

在这里插入图片描述

1.添加文字说明 标题 坐标轴

np.random.random(3)
# array([0.62461037, 0.88015921, 0.78706271])
# 从0到2π拆分成100个数,等差数列
x = np.linspace(0,2*np.pi, num=100)
y = np.sin(x)
# label 是图例要展示的内容
plt.plot(x,y,color=np.random.random(3),label='line of sin',linestyle='--')
# 允许展示图例 loc参数可选
plt.legend(loc='lower right')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Y=sinX')

在这里插入图片描述

plt.plot(x,np.sin(x),label='sin')
plt.plot(x,np.cos(x),label='cos')
plt.legend(loc='upper right')

在这里插入图片描述

2.label中文报错解决方法

使用matplotlib画图,默认不支持中文显示

plt.rcParams		# 可以查看一些默认属性
plt.rcParams['font.sans-serif']='SimHei'	# 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False	# 解决符号'-'显示为方框的问题plt.plot(x,np.sin(x),label='正弦函数')
plt.plot(x,np.cos(x),label='余弦函数')
plt.legend(loc='upper right')
plt.title('函数')

在这里插入图片描述

五、绘制多个图表 subplot()

三个参数

plt.subplot(221) 两行两列第一个

# 调整图表大小
plt.figure(figsize=(12,8))ax1 = plt.subplot(221)
ax1.plot(x,np.sin(x))ax2 = plt.subplot(222)
ax2.plot(x,np.cos(x))ax3 = plt.subplot(223)
ax3.bar(['a','b','c'],[1,2,3])ax4 = plt.subplot(224)
# ax4.pie(sizes=[30,40,30],labels=['A','B','C'],colors=['red','blue','yellow'])
ax4.pie(np.array([10, 20, 30, 40]))plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/114789.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高阶数据结构】map和set的介绍和使用 {关联式容器;键值对;map和set;multimap和multiset;OJ练习}

map和set的介绍和使用 一、关联式容器 关联式容器和序列式容器是C STL中的两种不同类型的容器。 关联式容器是基于键值对的容器,其中每个元素都有一个唯一的键值,可以通过键值来访问元素。关联式容器包括set、multiset、map和multimap。 序列式容器是…

常静相伴:深度解析C++中的const与static关键字

个人主页:北海 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C/C🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!&#x1f9…

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server

前言 基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s 等方案的测试验证。 考虑过使用二手服务器,比如 Dell R730, 还搞了一套配置清单,如下: Dell R7303.5 尺寸规格硬盘CPU: 2686v4*2 内存&a…

DBO优化SVM的电力负荷预测,附MATLAB代码

今天为大家带来一期基于DBO-SVM的电力负荷预测。 原理详解 文章对支持向量机(SVM)的两个参数进行优化,分别是:惩罚系数c和 gamma。 其中,惩罚系数c表示对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。c越小&#xff0…

链表OJ练习(1)

一、移除链表元素 本题为力扣原题203 题目介绍&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 列表中的节点数目范围在 0~10000内 1<Node.val<50 0<val<50 …

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十一:通用表单组件封装实现

一、本章内容 本章实现通用表单组件,根据实体配置识别实体属性,并自动生成编辑组件,实现对应数据填充、校验及保存等逻辑。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址:

OpenCV

文章目录 OpenCV学习报告读取图片和网络摄像头1.1 图片读取1.2 视频读取1.1.1 读取视频文件1.1.2读取网络摄像头 OpenCV基础功能调整、裁剪图像3.1 调整图像大小3.2 裁剪图像 图像上绘制形状和文本4.1 图像上绘制形状4.2图像上写文字 透视变换图像拼接颜色检测轮廓检测人脸检测…

【Nacos】使用Nacos进行服务发现、配置管理

Nacos Nacos是 Dynamic Naming and Configuration Service 的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 版本说明&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <properties><java.version>…

传统分拣弊端明显,AI机器视觉赋能物流行业包裹分类产线数智化升级

随着电子商务的快速发展&#xff0c;物流行业的包裹数量持续增长&#xff0c;给物流企业带来了巨大的运营压力。目前&#xff0c;国内大型物流运转中心已开始采用机器视觉自动化设备&#xff0c;但多数快递公司处于半自动化状态&#xff0c;中小型物流分拣中心目前仍靠人工录入…

AI机器视觉赋能电池缺陷检测,深眸科技助力新能源行业规模化发展

新产业周期下&#xff0c;新能源行业风口已至&#xff0c;现代社会对于新能源电池产品需求量加大&#xff0c;对产品的质量安全也更加重视。当前&#xff0c;传统的检测方法已经不能满足新能源电池行业的发展&#xff0c;越来越多的厂商开始应用创新机器视觉技术与产品于生产环…

Python 实战之ChatGPT + Python 实现全自动数据处理/可视化详解

本文目录 一、引言 二、成果演示——口述式数据可视化 三、远原理述 四、实现过程 &#xff08;一&#xff09;环境配置 &#xff08;二&#xff09;申请OpenAI账号 &#xff08;一&#xff09;调用ChatGPT API &#xff08;二&#xff09;设计AI身份&#xff0c;全自动处理数据…

java基于微信小程序的讲座预约系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈第三章 系统分析3.1初步需求分析 3.2 系统用例分析3.2.1 公告管理用例分析3.2.2 系…

华为云新生代开发者招募

开发者您好&#xff0c;我们是华为2012UCD的研究团队 为了解年轻开发者的开发现状和趋势 正在邀请各位先锋开发者&#xff0c;与我们进行2小时的线上交流&#xff08;江浙沪附近可线下交流&#xff09; 聊聊您日常开发工作中的产品使用需求 成功参与访谈者将获得至少300元京…

实现智能指针shared_ptr(难度3)(源码与测试用例)

本作业主要考察&#xff1a;复制控制/动态内存管理/模板编程/基于引用计数的智能指针原理/测试驱动开发 实现代码完成下面的my_shared_ptr以及main函数中的测试用例 本实现主要是利用复制控制来增加引用计数实现智能指针。 #include <iostream> #include <vector&g…

骨传导耳机十大品牌怎么选,骨传导耳机十大品牌排行榜分享

作为一个拥有20多款骨传导耳机来说&#xff0c;我也算是资深的使用者了&#xff0c;在骨传导耳机刚开始兴起的时候&#xff0c;我就开始接触了&#xff0c;近几年越来越多的骨传导耳机品牌诞生&#xff0c;我也是入手了不少&#xff0c;所以也算是对骨传导耳机非常熟悉了&#…

Flutter的未来与趋势,23年还学吗?

随着移动应用市场的不断扩大&#xff0c;跨平台开发框架的需求也越来越大。Flutter框架可以帮助开发者在不同平台上快速开发高质量的移动应用程序&#xff0c;这种趋势将进一步推动Flutter的发展和普及。 作为一名前端开发工程师&#xff0c;学习Flutter框架是非常有必要的。因…

亲测微信小程序备案流程,微信小程序如何备案,微信小程序备案所需准备资料

微信小程序为什么要备案&#xff0c;微信官方给出如下说明&#xff1a; 1、若微信小程序未上架&#xff0c;自2023年9月1日起&#xff0c;微信小程序须完成备案后才可上架&#xff1b; 2、若微信小程序已上架&#xff0c;请于2024年3月31日前完成备案&#xff0c;逾期未完成备案…

CSP的理解与绕过

文章目录 前言CSP简介CSP如何工作CSP指令CSP指令值 例题[AFCTF 2021]BABY_CSP 前言 刚学习完xss&#xff0c;把xsss-labs靶场都通了打算试试水&#xff0c;遇到此题[AFCTF 2021]BABY_CSP&#xff0c;借此机会学习下CSP CSP简介 Content Security Policy (CSP)内容安全策略&am…

华为OD七日集训第1期复盘 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)

目录 一、活动内容如下第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、双指针第5天、递归回溯第6天、二分查找第7天、贪心算法 && 二叉树 二、可观测性工程1、简介2、主要内容 大家好&#xff0c;我是哪吒。 最近一直在刷华为OD机试的算法题&#xff0c;坚持…