对数据分析真的超实用!分享3款Python做数据分析必掌握的三方库

liftword1周前 (12-20)技术文章14

大家好,我是梓羽!

作为一个热爱编程和数据的程序员,数据分析这块内容也经常围绕在我的工作周围。

今天就为大家分享3款,Python技术下数据分析经常会使用到的三个库。(非Pandas|Numpy)

聊聊Parquet文件格式(pyarrow)

在此之前为大家介绍普及下,除了传统数据存储格式(媒介)外,当下被公认的数据存储格式Parquet。

Parquet文件格式优势

  1. 数据压缩:通过应用各种编码和压缩算法,Parquet 文件可减少内存消耗,减少存储数据的体积。
  2. 列式存储:快速数据读取操作在数据分析工作负载中至关重要,列式存储是快速读取的关键要求。
  3. 与语言无关:开发人员可以使用不同的编程语言来操作 Parquet 文件中的数据。
  4. 开源格式:这意味着您不会被特定供应商锁定。
  5. 支持复杂数据类型

这个高效的列式存储格式简直是大数据时代的宝藏。它让我们在处理海量数据时,既能节省存储空间,又能快速读取数据。

打个比喻来说,Parquet就像一个精致的收纳箱,把杂乱的数据整齐地归类好,方便我们随时取用。

还记得第一次接触Parquet的时候,那种兴奋感就像是打开了一个神秘的宝箱。每一列数据都整齐划一,读取速度更是让人惊叹。有了它,处理大规模数据再也不是难题。

如果想要通过Python保存数据为parquet格式,我们需要额外安装一个Python库:pyarrow,除此之外还要结合Pandas使用,有两种方式进行保存。

以前使用pandas的时候,只关注了csv、xls等格式,现在再回头看其实Pandas一直支持parquet格式。读取parquet文件同样使用pandas即可。

NetworkX:用Python探索图的奥秘

NetworkX,一个用于创建和操作图结构的强大工具。你可能会问,图结构到底有什么用?

简单来说,图结构能帮助我们理解数据之间的关系。比如在社交网络中,每个用户就是一个节点,用户之间的互动就是边。有了NetworkX,我们可以轻松地构建和分析这些关系网。

说实话,刚开始用NetworkX的时候,我还是有点小忐忑的。毕竟,图结构听起来有点高深。但当我看到一行行代码变成一个个漂亮的网络图时,那种成就感简直难以言喻。

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

# 读取Parquet文件
df = pd.read_parquet('output.parquet')

# 创建空图
G = nx.Graph()

# 添加节点和边
for index, row in df.iterrows():
    G.add_edge(row['n_legs'], row['animals'])# 添加边

nx.draw(G, with_labels=True)  # 绘制图,并显示节点标签
plt.show()  # 显示图形

看到这段代码,你会发现,用NetworkX构建图结构其实没那么难。我们把Parquet数据读入Pandas DataFrame,然后逐行添加节点和边,几行代码就搞定了一个基本的社交网络图。

Plotly:3D可视化的魔法师

我们做数据分析,有时候的目标可能不仅仅是2D图,而是更炫酷的3D图谱。这就需要Plotly来助阵了。

Plotly是一个强大的绘图库,能创建交互式、动态的图表。结合NetworkX,我们可以将2D图轻松转化为3D图形。

import pandas as pd
import networkx as nx
import plotly.graph_objects as go

# 读取Parquet文件
df = pd.DataFrame({
    'user1': [1, 1, 2, 3, 4],
    'user2': [2, 3, 3, 4, 5]
})

# 假设我们已经将DataFrame保存为Parquet格式
# df.to_parquet('social_network.parquet')

# 从Parquet文件中读取数据
# df = pd.read_parquet('social_network.parquet')

# 创建空图
G = nx.Graph()

# 添加节点和边
for index, row in df.iterrows():
    G.add_edge(row['user1'], row['user2'])

# 获取节点和边的坐标
pos = nx.spring_layout(G, dim=3)
x_nodes = [pos[node][0] for node in G.nodes]
y_nodes = [pos[node][1] for node in G.nodes]
z_nodes = [pos[node][2] for node in G.nodes]

# 创建3D节点图
node_trace = go.Scatter3d(
    x=x_nodes, y=y_nodes, z=z_nodes,
    mode='markers',
    marker=dict(size=10, color='blue', opacity=0.8)
)

# 创建3D边图
edge_trace = []
for edge in G.edges:
    x0, y0, z0 = pos[edge[0]]
    x1, y1, z1 = pos[edge[1]]
    edge_trace.append(
        go.Scatter3d(
            x=[x0, x1], y=[y0, y1], z=[z0, z1],
            mode='lines',
            line=dict(width=2, color='grey'),
            opacity=0.8
        )
    )

# 合并图形
fig = go.Figure(data=[node_trace] + edge_trace)
fig.update_layout(scene=dict(
    xaxis_title='X Axis',
    yaxis_title='Y Axis',
    zaxis_title='Z Axis'
))
fig.show()

这段代码将我们的社交网络数据从2D平面带入了3D空间。通过旋转、缩放等操作,我们可以从不同角度观察数据之间的关系,感觉就像是戴上了VR眼镜,进入了一个数据的奇幻世界。

代码运行后,Plotly会自动在本地开启一个端口为52586的网页服务,自动打开网页如下:

从Parquet数据到3D知识图谱的构建过程中,如果数据量过大时,直接加载到内存中可能会导致性能问题。

这时候,我们可以考虑分批次加载数据,或者使用分布式计算框架如Dask来处理。

复杂的图结构在3D空间中会显得非常混乱,节点和边的密集程度可能会影响可视化效果。可以尝试不同的图布局算法,如层次布局、力导向布局等,以优化图的展示效果。

此外,3D可视化虽然炫酷,但用户在浏览图谱时的交互体验也是关键。通过优化Plotly的交互功能,如添加滑块、按钮等,可以提升用户体验。

作为一名程序员,我深知数据的价值不仅在于存储和处理,更在于如何有效地呈现和应用。

(你有什么有趣的数据分析知识点或可视化项目吗?欢迎在评论区分享你的经验!)

相关文章

Python 数据分析:数据分析中的常见统计方法解析

数据分析是现代社会中不可或缺的一部分,通过对数据的统计和分析,我们可以得出有用的信息和见解,支持决策和解决问题。本文将介绍在 Python 中常见的数据统计方法,包括描述性统计、假设检验、回归分析等,...

第4天|16天搞定Python数据分析,图表,靓靓靓

统计图是根据统计数字,用几何图形、事物形象和地图等绘制的各种图形。它具有直观、形象、生动、具体等特点。统计图可以使复杂的统计数字简单化、通俗化、形象化,使人一目了然,便于理解和比较。在上一篇《第3天|...

以下是一份关于“Python 数据分析

以下是一份关于“Python 数据分析”的学习路径规划:---# 《Python 数据分析学习路径规划》## 一、基础准备1. 了解数据分析的基本概念和流程,包括数据收集、数据清洗、数据分析、数据可视...

第6天|16天搞定Python数据分析,Pandas读数据

在进行数据分析时,用随机生成的数据,其实并没有多大的意义。有意义的数据,大多数是存在数据库(db)、文件(excel等),还有就是网络(html、json或xml)中的。有关文件的操作和解析,在学习P...

Python如何实现对Excel表格数据的分析处理?

在Python中提供了很多的用来处理和分析Excel表格数据的依赖库,比较常见的有pandas用于数据分析和处理,或者是用于读取Excel文件的openpyxl和xlrd,其中openpyxl适用于....

第8天 | 16天搞定Python数据分析,Seaborn主

在这个看颜值的时代,matplotlib长得太一般,很难吸异性暗送秋波的眼光。为此,Seaborn对其进行了变装,修改了默认的颜色方案和绘图类型,提高了可读性和美观度。赏心悦目的图形不但能让数据探索中...