python数据分析与可视化

目录

一、Python数据分析概述

1.什么是数据分析

2.Python数据分析依赖的两个对象

1、读取excel文件数据

3.python数据分析的工具

4.Python 的主要特点包括:

一、数据预处理:

Python数据清洗

python数据合并:

python数据转换:

二、Python数据可视化


一、Python数据分析概述

Python 是一种解释型、交互式的编程语言,其设计理念强调代码的可读性和简洁性。Python 的语法结构简单,支持面向对象、过程式和函数式三种编程范式,使得 Python 成为一种强大而灵活的编程语言。

Python数据分析主要包括数据清洗、数据探索和数据可视化三个部分。数据清洗是数据分析的重要环节,主要是对数据进行预处理,包括缺失值处理、异常值处理、数据类型转换等。数据探索则是通过对数据进行初步分析,了解数据的分布和特征,为后续的数据分析提供基础。数据可视化则是将数据以图形化的方式呈现,帮助人们更好地理解和分析数据。

一个Anaconda自带的轻量级Python编辑器
可以在浏览器中打开
有美观的注释、文字和代码完美结合
可以分步运行代码
善于进行数据分析的结果展示和分析

1.什么是数据分析


数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程

数据分析过程

2.Python数据分析依赖的两个对象

1、读取excel文件数据


1、excel文件是微软件办公软件excel使用的文件格式,用于存储的结构化数据。

2、Python中读取excel文件的方法:调用pandas库的read_excel函数

读取文本数据(以csv文件为例)
1、csv文件是一种逗号分隔的文本文件,可以用excel和记事本打开。

2、Python中读取csv格式文件的方法:调用pandas库的red-csv函数

Pandas库中提供链接Mysql等数据库方法,可以在python读取数据库中的结构化数据。
Pandas库中读取Mysql等数据库的方法中可以传入sql语句字符串作为参数,实现sql语句的运行。

DataFrame表格对象

1、导入数据库表格或者excel数据时形成数据对象就是表格对象

2、表格对象的类型:DataFrame

3.python数据分析的工具


Python数据分析的常用工具包括以下几种:

NumPy:作为Python的基础科学计算库,NumPy提供了丰富的数学函数和数组操作,使得数据的处理和分析更加高效。
Pandas:Python中最受欢迎的数据分析库之一,它提供了高效的数据结构和数据分析工具,使得数据的清洗、处理和分析变得简单而直观。
Matplotlib:Python最常用的数据可视化库之一,提供了丰富的绘图功能,包括折线图、柱状图、散点图等。
Seaborn:建立在Matplotlib之上的统计数据可视化库,提供了更高级的绘图函数和美观的图形主题,能够快速绘制出具有专业水平的统计图表。
Scikit-learn:Python常用的机器学习工具包,提供了完善的机器学习工具箱,支持数据预处理、分类、回归、聚类、预测和模型分析等强大机器学习库。
IPython:一个在多种编程语言之间进行交互计算的命令行shell,提供增强的内省、富媒体、扩展的shell语法、tab补全、丰富的历史等功能。在单一平台上可以分析表格数据、曲线、文字、图像。
Keras:基于Python的开源深度学习框架,可用于构建和训练深度学习模型。
Gensim:用于主题建模、文档索引和大型文本处理任务的Python库。
Scrapy:用于网络爬虫和数据抓取的Python框架。
这些工具各有特点和优势,选择合适的工具需要根据具体的数据分析需求和场景来决定。

4.Python 的主要特点包括:


解释型语言:Python 是一种解释型语言,它在运行代码时逐行解释,这使得 Python 更易于调试和测试。

交互式环境:Python 提供了交互式环境,可以在命令行中直接输入代码并立即查看结果,方便了程序员的快速测试和验证。

面向对象:Python 支持面向对象的编程风格,支持类和对象的概念,包括封装、继承和多态等特性。

丰富的标准库和丰富的第三方库:Python 的标准库提供了大量的模块和函数,支持各种常见的任务,如文件 I/O、网络编程、数据库交互等。此外,Python 的第三方库非常丰富,包括科学计算、数据分析、机器学习、Web 开发等。

动态类型:Python 是动态类型的语言,不需要预先声明变量的类型,这提高了编程的灵活性。

广泛的应用领域:Python 被广泛应用于各种领域,如 Web 开发、数据科学、人工智能、网络爬虫、系统自动化、游戏开发等。

跨平台:Python 可以在多种操作系统中运行,如 Windows、Linux 和 Mac OS。

可扩展性:如果需要编写性能敏感的代码,可以使用 C、C++ 等语言编写扩展模块,然后在 Python 中调用这些模块。

强大的社区支持:Python 有一个活跃的开发者社区,为 Python 使用者提供了大量的资源和支持。

以上是 Python 的主要特点,使得 Python 在各种场景下成为一种强大而灵活的编程语言。

一、数据预处理:


数据预处理是从数据中检测、纠正或删除损坏、不准确或不适用于模型的记录的过程。它是对数据进行必要的清洗、集成、转换、离散和规约等一系列的处理工作,以达到挖掘算法进行知识获取研究所要求的最低规范和标准。

数据预处理通常包括以下步骤:

1.数据清洗:填充缺失数据、消除噪声数据等,主要通过分析“脏数据”的产生原因和存在形式,利     用现有的数据挖掘手段和方法去清洗“脏数据”,将“脏数据”转化为满足数据质量要求和应用要求       的数据,从而提高数据集的质量,满足现阶段数据分析的需求。
2.数据合并:将多个数据源中的数据合并到一个统一的数据存储中,如数据库或数据仓库。这一过     程可能涉及到数据的去重、冲突解决和数据格式的统一。
3.数据转换:将数据从一种格式或结构转换为另一种格式或结构的过程。例如,将表格中的行和列     进行转置,或者对数据进行聚合和摘要等操作。
4.数据离散化:将连续的数据值转换为离散的区间,以便于分类或决策树算法的使用。
   数据规约:通过降低数据的复杂性或维度来减少数据的规模,同时保留重要的信息和特征。例       如,使用主成分分析(PCA)等方法降低数据的维度。

数据预处理的主要目的是提高数据质量,使得数据更加适应模型的需求,以便更好地进行数据分析、机器学习和数据挖掘等工作。在实际的数据分析项目中,数据预处理是必不可少的步骤之一,能够极大地提高数据分析和机器学习模型的准确性和可靠性。

Python数据清洗

Python数据清洗主要使用Pandas库,Pandas提供了强大的数据处理功能,包括数据读取、缺失值处理、异常值处理等。以下是一些常用的数据清洗操作:

数据读取:使用Pandas的read_csv()函数可以方便地读取CSV文件、Excel文件等格式的数据。

df_user = pd.read_csv('新用户表.csv',encoding='gbk')

缺失值处理:Pandas提供了isnull()函数来检测缺失值。

异常值处理:可以使用Pandas的describe()函数来查看数据的描述性统计,从而发现异常值。对于异常值的处理可以使用删除、替换等手段。

Q1 = df_car.describe()['行驶时长']['25%']
Q3 = df_car.describe()['行驶时长']['75%']
print(Q1,Q3)
#计算行驶时长的正常值区间
IQR = Q3 - Q1
c = 3 # 人为调整的IQR系数
nonlocal_low = Q1 - c * IQR
nonlocal_high = Q3 + c * IQR
print(nonlocal_low,nonlocal_high)

数据清洗:

数据清洗是数据分析的重要环节,其主要目的是对数据进行预处理,提高数据质量。在Python中,Pandas库提供了丰富的数据清洗工具,让我们可以轻松处理缺失值、异常值以及重复值等问题。

1.1 缺失值处理:使用Pandas的dropna()函数或fillna()函数,根据实际需求选择删除或填充缺失值。

df_user.isnull().sum()

1.2 异常值处理:通过设置阈值或使用IQR(四分位距)方法,识别并处理异常值。

# 定位异常值,条件查询
#df_car.query('行驶时长>8180')
# 删除处理,以查询删除
df_car2 = df_car.query('行驶时长<=8180').reset_index(drop=True)
df_car2

1.3 重复值处理:使用Pandas的duplicated()函数或drop_duplicates()函数,快速识别并删除重复数据。

df.drop_duplicates(subset=['姓名'],keep='first',inplace=True)
df

python数据合并:


使用pandas合并数据

Pandas是一个强大的Python库,用于数据处理和分析。它提供了DataFrame结构,可以存储和操作表格数据(如电子表格和SQL表格)。以下是使用pandas合并数据的一些方法:

合并(concat):沿着水平轴将多个数据框组合起来。
连接(join):基于一个或多个键将两个数据框组合起来。这类似于SQL中的JOIN操作。
更新(update):用新数据更新一个数据框的特定列。
连接(merge):基于一个或多个键将两个数据框组合起来,类似于SQL中的INNER JOIN操作。
聚合(aggregate):对一个或多个数据框进行聚合操作。
实际应用:从xslx文件合并数据

下面是一个使用pandas合并xlsx文件的示例代码:

df_0 = pd.read_excel('学生成绩统计.xlsx',sheet_name='全班名单')
df_1 = pd.read_excel('学生成绩统计.xlsx',sheet_name='作业1完成名单')
df_2 = pd.read_excel('学生成绩统计.xlsx',sheet_name='作业2完成名单')
df_3 = pd.read_excel('学生成绩统计.xlsx',sheet_name='作业3完成名单')
df_0

python数据转换:


我们将探讨Python中的数据转换技术,包括缺失值处理、异常值检测与处理、数据类型转换以及特征工程等。通过这些技术,我们可以将原始数据转换为适合分析和建模的格式,从而提高模型的准确性和可靠性。

1.缺失值处理

在处理数据时,我们经常会遇到缺失值的问题。这些缺失值可能是由于数据收集过程中的遗漏、错误或未填写等原因造成的。为了确保数据的完整性和准确性,我们需要对缺失值进行处理。

Python提供了多种方法来处理缺失值,包括删除含有缺失值的行或列、填充缺失值以及使用插值等方法。例如,我们可以使用pandas库中的dropna()函数删除含有缺失值的行或列,或者使用fillna()函数填充缺失值。此外,还可以使用插值方法(如线性插值或多项式插值)来估计缺失值。

2.异常值检测与处理

异常值是指远离正常数据范围的异常点,这些异常值可能会对数据的分析和建模产生负面影响。因此,检测和删除异常值是数据转换的重要步骤之一。

Python提供了多种方法来检测和删除异常值,包括基于统计的方法和可视化方法等。基于统计的方法包括使用IQR(四分位距)方法或Z-score方法等来检测异常值。可视化方法包括绘制散点图、箱线图等来直观地检测异常值。一旦检测到异常值,我们可以选择删除它们或使用适当的方法进行填充。

3.数据类型转换

在数据处理过程中,我们经常需要将数据转换为正确的数据类型以满足分析和建模的需求。Python提供了多种方法来进行数据类型转换,包括字符串转换为数字、日期格式转换等。

4.特征工程

特征工程是指通过创建新的特征或转换现有特征来改善模型的性能和解释性。在数据转换中,特征工程是一个非常重要的步骤,它可以提高模型的准确性和可靠性。

特征工程的方法包括特征选择、特征提取、特征转换等。例如,我们可以使用特征选择方法来选择最重要的特征子集,减少特征的维度和噪声;使用特征提取方法来从原始特征中提取有用的信息;使用特征转换方法来创建新的特征或对现有特征进行变换。

二、Python数据可视化


Python中有许多优秀的数据可视化库,以下是其中几个常用的库:

Matplotlib:Python中最基础的绘图库,提供了丰富的绘图函数和自定义选项,可以绘制折线图、柱状图、散点图等多种类型的图表。

Seaborn:基于Matplotlib的高级接口,提供了更美观的图表样式和更丰富的统计图形。Seaborn注重统计图形的绘制,可以方便地绘制分布图、关系图、分类图等。

Plotly:一个交互式的绘图库,支持多种图表类型,包括散点图、折线图、热力图等。Plotly的图表具有交互性,可以通过鼠标悬停、拖拽等方式查看数据的详细信息。

Python数据可视化主要使用Matplotlib和Seaborn库。Matplotlib是Python中最基础的图形库,提供了丰富的绘图功能。Seaborn则是在Matplotlib基础上构建的高级接口,使得绘图更加简单和直观。以下是一些常用的数据可视化操作:  

首先,导入所需的库和数据集:

import pandas as pd
import matplotlib.pyplot as plt

#读取数据
df_bar = pd.read_excel('明日科技图书销量.xlsx')
df_bar

统计超市销售数据中男生和女生各自的支付方式占比情况饼状图

画女性饼状图

# 画图,女性的图
data_woman = data_pie['女']
plt.pie(
    data_woman.values,
    labels=data_woman.index,# 数据项,即数据对应的含义
    autopct= '%1.2f%%',# 控制小数点位数
)
plt.show()

 

画男性饼状图

# 画图,男性的图
data_man = data_pie['男']
plt.pie(
    data_man.values,
    labels=data_man.index,# 数据项,即数据对应的含义
    autopct= '%1.2f%%',# 控制小数点位数
)
plt.show()

画某只股票的收盘价(close)和20日均线(ma20)的折线图

df_plot = pd.read_excel('股价数据.xlsx')
df_plot

# 画图
n=100# 取前n个数据画图
x= df_plot2['date'][:n] # 代取前n个数画图
y1= df_plot2['close'][:n]
y2=df_plot2['ma20'][:n]
plt.plot(
    x,
    y1,'r-', # 通过字符串配置线条样式
    y2,'b--'
)
plt.title('股票的收盘价和20日均线折线图')
plt.legend(['收盘价','20日均线']) #图示
plt.xticks([i for i in range(0,n,int(n/7))],rotation=15)# 选择7个等距学刻度显示
plt.show()

接下来,我们可以使用Matplotlib绘制浏览量和成交数量之间的散点图,以了解它们之间的关系:

plt.scatter(
    df_scatter['浏览量'],
    df_scatter['成交商品件数'],
    s = 20, # 点的大小
    c = 'b', # 颜色
    marker='*' # 点的样式
)
plt.xlim(0,5000) # x轴的范围
plt.ylim(0,400) # y轴的范围
plt.xlabel('浏览量',loc='right') # x轴名称
plt.ylabel('成交数量',loc='top') # y轴名称
plt.show()

此外,我们还可以使用Seaborn绘制更美观的图表。例如,可以使用Seaborn的boxplot()函数绘制箱线图,展示不同车型的年龄分布情况:

plt.boxplot(
    df_hist['年龄'].dropna(), # 输入数列,但是不能有空值
    vert=False, #横向展示
    labels= ['年龄']
)
plt.show()

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值