当前位置: 首页 > news >正文

python实战应用讲解-【numpy专题篇】numpy应用案例(一)(附python示例代码)

目录

用Python分析二手车的销售价格

用Python构建GUI应用的铅笔草图

需要的包

实现步骤

完整代码


用Python分析二手车的销售价格

如今,随着技术的进步,像机器学习等技术正在许多组织中得到大规模的应用。这些模型通常与一组预定义的数据点一起工作,以数据集的形式提供。这些数据集包含了一个特定领域的过去/以前的信息。在将这些数据点送入模型之前,组织这些数据点是非常重要的。这就是我们使用数据分析的地方。如果反馈给机器学习模型的数据没有得到很好的组织,它就会给出错误的或不想要的输出。这可能会给组织带来重大损失。因此,利用适当的数据分析是非常重要的。

关于数据集:

在这个例子中,我们要使用的数据是关于汽车的。特别是包含关于二手车的各种信息数据点,如价格、颜色等。在这里我们需要明白,仅仅收集数据是不够的。原始数据是没有用的。在这里,数据分析在解开我们所需要的信息和获得对这些原始数据的新见解方面起着重要作用。

考虑一下这个场景,我们的朋友奥蒂斯想卖掉他的车。但他不知道他的车应该卖多少钱!他想使利润最大化,但他也希望它能以合理的价格卖给想拥有它的人。所以在这里,我们,作为一个数据科学家,我们可以帮助我们的朋友奥蒂斯。

让我们像数据科学家一样思考,明确定义他的一些问题。例如,是否有关于其他汽车的价格及其特点的数据?汽车的哪些特征会影响其价格?颜色?品牌?马力是否也会影响售价,或许,还有其他方面?

作为一个数据分析师或数据科学家,这些是我们可以开始思考的一些问题。为了回答这些问题,我们将需要一些数据。但这些数据是以原始形式存在的。因此,我们需要先对其进行分析。这些数据以.csv/.data的格式提供给我们

要下载本例中使用的文件,请点击这里。提供的文件是.data格式的。按照下面的过程,将.data文件转换为.csv文件。

将.数据文件转换为.csv的过程:

1.打开MS Excel
2.转到数据
3.选择来自文本
4.在逗号上打勾(只)。
5.以.csv格式保存到你的电脑上你想要的位置!

需要的模块:

  • pandas:Pandas是一个开源的库,允许你在Python中进行数据操作。Pandas提供了一种简单的方法来创建、操作和处理数据。
  • numpy:Numpy是用Python进行科学计算的基本软件包。Numpy可以作为一个高效的通用数据的多维容器。
  • matplotlib:Matplotlib是一个Python二维绘图库,它可以生成各种格式的出版质量的数字。
  • seaborn:Seaborn是一个基于matplotlib的Python数据可视化库。Seaborn提供了一个高级接口,用于绘制有吸引力的、信息丰富的统计图形。
  • scipy:Scipy是一个基于Python的数学、科学和工程开源软件的生态系统。

安装这些软件包的步骤:

  • 如果你使用Anaconda-jupyter/ Syder或其他任何第三方软件来编写你的Python代码,请确保在你的电脑的命令提示符中设置该软件的 “scripts文件夹 “路径。
  • 然后输入 – pip install package-name
    示例:
pip install numpy
  • 然后在安装完成后。(确保你已经连接到互联网!!)打开你的IDE,然后导入这些包。要导入,键入 – 导入软件包名称
    示例:
import numpy

以下代码中使用的步骤(简短描述):

  • 导入软件包
  • 设置数据文件的路径(.csv文件)。
  • 查找我们的文件中是否有任何空数据或NaN数据。如果有,则将其删除
  • 对你的数据进行各种数据清洗和数据可视化操作。这些步骤在每行代码旁边以注释的形式说明,以便更好地理解,因为最好能看到代码的侧面,而不是在这里完全解释,这将是毫无意义的。
  • 取得成果!

让我们开始分析数据。

第1步:导入所需的模块。

# importing section
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy as sp

第二步:让我们检查一下数据集的前五个条目。

# using the Csv file
df = pd.read_csv('output.csv') # Checking the first 5 entries of dataset
df.head()

输出:

第3步:为我们的数据集定义头文件。

headers = ["symboling", "normalized-losses", "make", "fuel-type", "aspiration","num-of-doors","body-style","drive-wheels", "engine-location","wheel-base","length", "width","height", "curb-weight","engine-type","num-of-cylinders", "engine-size", "fuel-system","bore","stroke", "compression-ratio","horsepower", "peak-rpm","city-mpg","highway-mpg","price"]df.columns=headers
df.head()

输出:

第4步:找到缺失的值(如果有)。

data = df# Finding the missing values
data.isna().any()# Finding if missing values 
data.isnull().any() 

输出:

第4步:将mpg转换为L/100km,并检查每一列的数据类型。

# converting mpg to L / 100km
data['city-mpg'] = 235 / df['city-mpg']
data.rename(columns = {'city_mpg': "city-L / 100km"}, inplace = True)print(data.columns)# checking the data type of each column
data.dtypes 

输出:

第5步:这里,价格是对象类型(字符串),它应该是int或float,所以我们需要改变它。

data.price.unique()# Here it contains '?', so we Drop it
data = data[data.price != '?']# checking it again
data.dtypes

输出:

第6步:通过使用简单的特征缩放方法示例(为其余部分做的)和分组–对价值进行归一化处理。

data['length'] = data['length']/data['length'].max()
data['width'] = data['width']/data['width'].max()
data['height'] = data['height']/data['height'].max()# binning- grouping values
bins = np.linspace(min(data['price']), max(data['price']), 4) 
group_names = ['Low', 'Medium', 'High']
data['price-binned'] = pd.cut(data['price'], bins, labels = group_names, include_lowest = True)print(data['price-binned'])
plt.hist(data['price-binned'])
plt.show()

输出:

第7步:对数据分类到数值做描述性分析。

# categorical to numerical variables
pd.get_dummies(data['fuel-type']).head()# descriptive analysis
# NaN are skipped
data.describe()

输出:

第8步:按照基于发动机尺寸的价格绘制数据。

# examples of box plot
plt.boxplot(data['price'])# by using seaborn
sns.boxplot(x ='drive-wheels', y ='price', data = data)# Predicting price based on engine size
# Known on x and predictable on y
plt.scatter(data['engine-size'], data['price'])
plt.title('Scatterplot of Enginesize vs Price')
plt.xlabel('Engine size')
plt.ylabel('Price')
plt.grid()
plt.show()

输出:

第9步:根据车轮、车身样式和价格对数据进行分组。

# Grouping Data
test = data[['drive-wheels', 'body-style', 'price']]
data_grp = test.groupby(['drive-wheels', 'body-style'], as_index = False).mean()data_grp

输出:

步骤10:使用透视法,并根据透视法得到的数据绘制热图。

# pivot method
data_pivot = data_grp.pivot(index = 'drive-wheels',columns = 'body-style')
data_pivot# heatmap for visualizing data
plt.pcolor(data_pivot, cmap ='RdBu')
plt.colorbar()
plt.show()

输出:

第11步:获得最终结果,并以图表的形式显示出来。由于斜率是沿正方向增加的,所以是正的线性关系。

# Analysis of Variance- ANOVA
# returns f-test and p-value
# f-test = variance between sample group means divided by 
# variation within sample group
# p-value = confidence degree
data_annova = data[['make', 'price']]
grouped_annova = data_annova.groupby(['make'])
annova_results_l = sp.stats.f_oneway(grouped_annova.get_group('honda')['price'],grouped_annova.get_group('subaru')['price'])
print(annova_results_l)# strong corealtion between a categorical variable
# if annova test gives large f-test and small p-value# Correlation- measures dependency, not causation
sns.regplot(x ='engine-size', y ='price', data = data)
plt.ylim(0, )

输出:

用Python构建GUI应用的铅笔草图

许多学科的艺术家都使用素描和绘画来保存想法、回忆和思想。从绘画和雕塑到参观艺术博物馆,体验艺术提供了各种健康优势,包括减少压力和提高批判性思维能力。特别是绘画、素描和油画,与提高创造力、记忆力和减轻压力有关,并被用于艺术治疗中。

通过这篇文章,我们现在可以建立一个网络应用,使用python框架Streamlit直接将图像转换成草图。用户可以上传一张图片,将其转换为水彩素描或铅笔素描。用户可以进一步下载转换后的图片,在此之前,让我们了解一些我们将在本文中使用的定义。

  • Streamlit – Streamlit是Python开发者中流行的开源网络应用框架。它与一系列常用的库具有互操作性和兼容性,包括Keras、Sklearn、Numpy和pandas。
  • PIL – PIL是Python成像库的缩写。它是一个用Python编程语言进行图像处理的软件包。它包括轻量级的图像处理工具,帮助进行图片编辑、创建和存储。
  • Numpy – Numpy是一个广泛使用的Python编程库,用于高级数学计算。
  • cv2 – 这个库被用来解决计算机视觉问题

需要的包

pip install streamlit
pip install opencv-python
pip install numpy
pip install Pillow

实现步骤

第1步:安装Streamlit

同样地,我们将安装PIL、Numpy和cv2。

第二步:测试安装是否成功。

streamlit hello

第3步:现在运行streamlit网络应用程序。我们需要键入以下命令

streamlit run app.py

第四步:现在,网络应用已经成功启动。你可以通过本地URL或网络URL访问该网络应用。

第5步:创建一个新的文件夹,命名为 – 网络应用程序,将图像转换成草图。

第6步:将网络应用程序的代码粘贴在文件’app.py‘中并保存该文件。

最初在代码中,我们导入了所有需要的框架、包、库和模块,我们将利用它们来构建网络应用。此外,我们必须使用用户定义的函数,用于将图像转换成水彩素描和将图像转换成铅笔素描。还有一个函数是利用PIL库加载图像的。主函数中有网络应用的代码。最初,我们有一些标题和副标题来引导用户上传图片。为了上传图片,我们利用了streamlit的文件上传器。我们还提供了一个下拉菜单,让用户选择制作水彩素描/制作铅笔素描,然后根据他们的选择,我们渲染结果。原始图像和应用滤镜后的图像都是并排呈现的,这样用户就可以比较这两张图像的结果。最后,用户还可以将图像下载到他们的本地机器上。这可以通过利用Streamlit的下载按钮来完成。

完整代码

# import the frameworks, packages and libraries
import streamlit as st
from PIL import Image
from io import BytesIO
import numpy as np
import cv2  # computer vision# function to convert an image to a 
# water color sketch
def convertto_watercolorsketch(inp_img):img_1 = cv2.edgePreservingFilter(inp_img, flags=2, sigma_s=50, sigma_r=0.8)img_water_color = cv2.stylization(img_1, sigma_s=100, sigma_r=0.5)return(img_water_color)# function to convert an image to a pencil sketch
def pencilsketch(inp_img):img_pencil_sketch, pencil_color_sketch = cv2.pencilSketch(inp_img, sigma_s=50, sigma_r=0.07, shade_factor=0.0825)return(img_pencil_sketch)# function to load an image
def load_an_image(image):img = Image.open(image)return img# the main function which has the code for
# the web application
def main():# basic heading and titlesst.title('WEB APPLICATION TO CONVERT IMAGE TO SKETCH')st.write("This is an application developed for converting\your ***image*** to a ***Water Color Sketch*** OR ***Pencil Sketch***")st.subheader("Please Upload your image")# image file uploaderimage_file = st.file_uploader("Upload Images", type=["png", "jpg", "jpeg"])# if the image is uploaded then execute these # lines of codeif image_file is not None:# select box (drop down to choose between water # color / pencil sketch)option = st.selectbox('How would you like to convert the image',('Convert to water color sketch','Convert to pencil sketch'))if option == 'Convert to water color sketch':image = Image.open(image_file)final_sketch = convertto_watercolorsketch(np.array(image))im_pil = Image.fromarray(final_sketch)# two columns to display the original image and the# image after applying water color sketching effectcol1, col2 = st.columns(2)with col1:st.header("Original Image")st.image(load_an_image(image_file), width=250)with col2:st.header("Water Color Sketch")st.image(im_pil, width=250)buf = BytesIO()img = im_pilimg.save(buf, format="JPEG")byte_im = buf.getvalue()st.download_button(label="Download image",data=byte_im,file_name="watercolorsketch.png",mime="image/png")if option == 'Convert to pencil sketch':image = Image.open(image_file)final_sketch = pencilsketch(np.array(image))im_pil = Image.fromarray(final_sketch)# two columns to display the original image# and the image after applying# pencil sketching effectcol1, col2 = st.columns(2)with col1:st.header("Original Image")st.image(load_an_image(image_file), width=250)with col2:st.header("Pencil Sketch")st.image(im_pil, width=250)buf = BytesIO()img = im_pilimg.save(buf, format="JPEG")byte_im = buf.getvalue()st.download_button(label="Download image",data=byte_im,file_name="watercolorsketch.png",mime="image/png")if __name__ == '__main__':main()

输出:

 

相关文章:

python实战应用讲解-【numpy专题篇】numpy应用案例(一)(附python示例代码)

目录 用Python分析二手车的销售价格 用Python构建GUI应用的铅笔草图 需要的包 实现步骤 完整代码 用Python分析二手车的销售价格 如今,随着技术的进步,像机器学习等技术正在许多组织中得到大规模的应用。这些模型通常与一组预定义的数据点一起工作…...

网络割接项目

某企业准备采购2台华为设备取代思科旧款设备,针对下列问题作出解答。 (1)做设备替换的时候,如何尽可能保证业务稳定性,请给出解决方案。 a)对现网拓扑进行分析,分析现网拓扑的规划(链路类型、cost、互联IP、互联接口等信息)、分析现网流量模型(路由协议、数据流向特…...

SpringBoot整合数据可视化大屏使用

1 前言 DataV数据可视化是使用可视化应用的方式来分析并展示庞杂数据的产品。DataV旨让更多的人看到数据可视化的魅力,帮助非专业的工程师通过图形化的界面轻松搭建专业水准的可视化应用,满足您会议展览、业务监控、风险预警、地理信息分析等多种业务的展示需求, 访问地址:h…...

蓝桥杯Web前端练习题-----水果拼盘

一、水果拼盘 介绍 目前 CSS3 中新增的 Flex 弹性布局已经成为前端页面布局的首选方案,本题可以使用 Flex 属性快速完成布局。 准备 开始答题前,需要先打开本题的项目代码文件夹,目录结构如下: ├── css │ └── style.…...

[攻城狮计划]如何优雅的在RA2E1上运行RT_Thread

文章目录[攻城狮计划]|如何优雅的在RA2E1上运行RT_Thread准备阶段🚗开发板🚗开发环境🚗下载BSP🚗编译烧录连接串口总结[攻城狮计划]|如何优雅的在RA2E1上运行RT_Thread 🚀🚀开启攻城狮的成长之旅&#xff0…...

1.linux操作命令

1. pwd -> 打印当前绝对工作路径。 2. ls -> 查看目录的文件名 ls -> 默认列出当前目录的全部文件名 ls . -> 列出当前目录的全部文件名(.代表当前目录) ls / -> 列出根目录下的全部文件命名 ls -a -> 列出当前目录下全部文件名(包括隐藏…...

STL--vector

vector 头文件 #include<vector>向量的定义&#xff1a; vector<int> vec&#xff1b;//定义一个vec型的向量a vector<int> vec(5); //定义一个初始大小为5的向量 vector<int> vec(5,1); //初始大小为5&#xff0c;值都为1的向量二维数组&#xff1…...

Java每日一练(20230324)

目录 1. 链表插入排序 &#x1f31f;&#x1f31f; 2. 最接近的三数之和 &#x1f31f;&#x1f31f; 3. 寻找旋转排序数组中的最小值 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…...

你掌握了吗?在PCB设计中,又快又准地放置元件

在印刷电路板设计中&#xff0c;设置电路板轮廓后&#xff0c;将零件(占地面积)调用到工作区。然后将零件重新放置到正确的位置&#xff0c;并在完成后进行接线。 组件放置是这项工作的第一步&#xff0c;对于之后的平滑布线工作是非常重要的工作。如果在接线工作期间模块不足…...

springboot学生综合测评系统

031-springboot学生综合测评系统演示录像2022开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&…...

【Unity3D】法线贴图和凹凸映射

1 法线贴图原理 表面着色器中介绍了使用表面着色器进行法线贴图&#xff0c;实现简单快捷。本文将介绍使用顶点和片元着色器实现法线贴图和凹凸映射&#xff0c;实现更灵活。 本文完整代码资源见→法线贴图和凹凸映射。 1&#xff09;光照原理 Phong 光照模型和 Blinn Phong 光…...

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

问题背景 有时候&#xff0c;我们拿到需求&#xff0c;没仔细看当前分支是什么&#xff0c;就开始撸代码了。完成了需求或者写到一半发现开发错分支了。 比如此时新需求代码都在master分支上&#xff0c;提交必然是不可能的&#xff0c;所有修改还是要在新建分支上进行&#x…...

java多线程之线程安全(重点,难点)

线程安全1. 线程不安全的原因:1.1 抢占式执行1.2 多个线程修改同一个变量1.3 修改操作不是原子的锁(synchronized)1.一个锁对应一个锁对象.2.多个锁对应一个锁对象.2.多个锁对应多个锁对象.4. 找出代码错误5. 锁的另一种用法1.4 内存可见性解决内存可见性引发的线程安全问题(vo…...

如何免费使用chatGPT4?无需注册!

Poe体验真滴爽首先提大家问一个大家最关心的问题如何在一年内赚到一百万&#xff1f;用个插件给他翻译一下体验地址效果是非常炸裂的&#xff0c;那么我就将网址分分享给大家https://poe.com/前提&#xff1a;要有魔法&#xff0c;能够科学shangwangChatGPT-3 随便问GPT-4 模型…...

Android Flutter在点击事件上添加动画效果

在Android App的开发项目中&#xff0c;我们需要在点击事件上实现一个动画效果来提高用户的体验度。比如闲鱼底部中间按钮的那种。该怎么实现呢&#xff1f; 一起来看看吧 实现效果如图&#xff1a; ​实现思路 根据UI的设计图&#xff0c;对每个模块设计好动画效果&#xff0…...

VSCode嵌入式开发环境搭建

Vscode开发环境搭建 看这个链接就可以了&#xff0c;后面下载调试有点问题看下3.3。 在VSCode上部署STM32F1的开发环境 1. MXCube配置工程生成Makefile文件 借助正确的编译工具链进行编译&#xff0c; 2. 编译工具链搭建 编译工具链使用GCC的ARM版本 arm-none-eabi-gcc &am…...

数据结构之栈的使用

栈是计算机科学中一个重要的数据结构。它是一种特殊的线性表&#xff0c;只允许在一端进行进出操作。这一端被称为栈顶&#xff0c;另外一端被称为栈底。栈的特点是后进先出&#xff0c;即最后进入栈的元素会先被弹出栈。栈的应用广泛&#xff0c;例如在编译器中&#xff0c;栈…...

QMessageBox手动添加按钮并绑定按钮的信号

视频展示效果&#xff08;结合代码看效果更佳哦&#xff0c;代码在最下面&#xff09;&#xff1a; QMessageBox手动添加有重试效果的按钮效果图&#xff1a; 点击详细文本之后展开如下图&#xff1a; 图标可选&#xff1a; QMessageBox::Critical错误图标QMessageBox::NoIco…...

【C++进阶】位图和布隆过滤器

文章目录位图位图概念位图使用场景位图的结构构造setresettest完整代码布隆过滤器布隆过滤器概念布隆过滤器结构构造setresettest完整版代码位图 位图概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用…...

Android开发-Android UI与布局

01 Android UI 1.1 UI 用户界面(User Interface&#xff0c;简称 UI&#xff0c;亦称使用者界面)是系统和用户之间进行交互和信息交换的媒介&#xff0c;它实现信息的内部形式与人类可以接受形式之间的转换。软件设计可分为两个部分&#xff1a;编码设计与UI设计。 1.2 Andr…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...