什么是Python虚拟环境?

Python虚拟环境是一个独立的、隔离的Python运行环境,它允许你为每个项目安装独立的库和依赖项,而不会与系统中其他Python项目或全局Python环境发生冲突,从而有效地管理项目依赖、避免版本问题,并确保项目在不同机器上具有可复制性。

为什么要搭建Python虚拟环境?

1、管理项目依赖

Python生态系统拥有庞大的第三方库和框架,比如用于数据科学的Pandas、NumPy,用于Web开发的Django、Flask等。你的项目很可能需要依赖这些库。

隔离性: 不同的项目可能依赖同一个库的不同版本。例如,项目A需要requests库的1.0版本,而项目B需要requests库的2.0版本。如果没有独立的环境,直接全局安装,就会导致版本冲突,影响一个或两个项目的正常运行。搭建独立环境(如使用venv或conda)可以为每个项目创建独立的依赖沙箱,互不影响。

可复制性: 当你与团队成员协作或将项目部署到服务器时,需要确保所有人都使用相同的库版本。通过环境管理工具,你可以轻松地导出项目所需的依赖列表(例如requirements.txt文件),其他人可以根据这个列表快速搭建出一致的运行环境,确保代码在不同机器上都能正常运行。

2、避免全局污染

如果你将所有项目的依赖都安装到系统全局Python环境中,会导致全局环境变得臃肿和混乱。

冲突风险: 全局安装的库可能与系统自身依赖的Python库发生冲突,甚至可能影响操作系统的稳定性。

版本管理困难: 难以追踪哪些库是为哪个项目安装的,也无法轻易卸载某个项目的特定依赖,增加了管理难度。

3、使用不同的Python版本

有时候,不同的项目可能需要不同版本的Python解释器。例如,一个老项目可能只兼容Python 3.6,而一个新项目可能需要Python 3.9的新特性。

多版本共存: 环境管理工具允许你在同一台机器上安装并管理多个Python版本,并在不同项目之间轻松切换。

VS Code如何搭建Python虚拟环境

前言

各位编程小白们,大家好!踏上Python学习之旅的你,是否对海量数据感到一丝迷茫?面对表格中密密麻麻的数字和文字,是不是渴望能有一种工具,像魔术师一样,轻松驾驭它们,从中发现有价值的秘密?那么,恭喜你,你找对地方了!

我们将开启Pandas的学习之旅。Pandas是Python数据科学领域的一颗璀璨明星,它被称为“数据分析的瑞士军刀”。对于初学者来说,它可能听起来有些高深,但别担心,我们将用最通俗易懂的方式,带你一步步揭开它的神秘面纱。

想象一下,你有一大堆Excel表格、CSV文件,甚至是数据库里的数据,想要进行整理、清洗、分析和可视化。如果用传统的Python列表和字典来操作,那简直是噩梦。而Pandas的出现,就是为了解决这些痛点。它提供了高效、灵活的数据结构,让你能够像操作熟悉的电子表格一样处理数据,并且速度更快,功能更强大。

在本系列的第一篇中,我们将初步探索Pandas中最核心、最常用的数据结构——DataFrame。你会学会如何导入数据,快速查看数据概貌,了解数据的基本信息,并对数据进行简单的排序。这些都是你未来深入学习数据分析、机器学习甚至人工智能的基石。准备好了吗?让我们一起迈出数据分析的第一步,感受Pandas的魅力吧!

Pandas介绍

Pandas 是 Python 编程语言中一个强大且广泛使用的开源数据分析和操作工具库。它基于 NumPy 库构建,提供了高效的数据结构,使得处理结构化数据变得简单、快速且直观。可以把它想象成一个功能强大的电子表格软件,但拥有编程的灵活性和自动化能力。

项目实战

有一个表格如下所示:

1、加载数据

def load_data():
"""
加载CSV文件并返回DataFrame
"""
df = pd.read_csv('students.csv')
print("\n1. 数据加载结果:")
print(df.head())
return df

df.head() 是一个非常常用的方法,它被调用在一个 DataFrame 对象(通常命名为 df)上。它的主要目的是显示 DataFrame 的前几行数据

效果:

2、查看数据基本信息

def basic_info(df):
"""
显示数据基本信息
"""
print("\n2. 数据基本信息:")
print("\n数据形状(行数,列数):")
print(df.shape)
print("\n数据类型信息:")
print(df.info())
print("\n数据统计描述:")
print(df.describe())

df.shape 是一个重要的属性。它的作用是返回 DataFrame 的维度(形状),也就是它的行数和列数

df.info() 是一个有用的方法,它用于打印 DataFrame 的简洁摘要信息

df.describe() 是一个强大的方法,它能快速生成 DataFrame 中数值型列的描述性统计信息

效果:

3、数据选择

def select_data(df):
"""
数据选择操作示例
"""
print("\n3. 数据选择操作:")
print("\n选择单列 'name':")
print(df['name'])
print("\n选择多列 'name' 和 'score':")
print(df[['name', 'score']])
print("\n条件筛选:分数大于90的学生")
print(df[df['score'] > 90])

效果:

4、数据排序

def sort_data(df):
"""
数据排序操作
"""
print("\n4. 数据排序:")
print("\n按分数降序排序:")
print(df.sort_values('score', ascending=False))
print("\n按年龄升序、分数降序排序:")
print(df.sort_values(['age', 'score'], ascending=[True, False]))

df.sort_values() 是一个常用的方法,用于根据 DataFrame 中一个或多个列的值来对行进行排序

效果:

5、分组统计

def group_data(df):
"""
分组统计操作
"""
print("\n5. 分组统计:")
print("\n按科目分组计算平均分:")
print(df.groupby('subject')['score'].mean())
print("\n按年级分组计算各科目平均分:")
print(df.groupby(['grade', 'subject'])['score'].mean())

df.groupby() 用于执行“分组聚合操作。

效果:

6、数据添加和修改操作

def add_modify_data(df):
"""
数据添加和修改操作
"""
print("\n6. 数据添加和修改:")
# 添加新列:及格状态
df['pass_status'] = df['score'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
print("\n添加及格状态列后的数据:")
print(df)

效果:

7、数据可视化

def data_visualization(df):
"""
基础数据可视化
"""
print("\n7. 数据可视化:")
# 创建科目平均分数的柱状图
plt.figure(figsize=(10, 6))
df.groupby('subject')['score'].mean().plot(kind='bar')
plt.title('Average Score by Subject')
plt.xlabel('Subject')
plt.ylabel('Average Score')
plt.tight_layout()
plt.savefig('subject_scores.png')
plt.close()
print("已生成科目平均分数柱状图:subject_scores.png")

df.groupby('subject'):这是 groupby 操作的第一步。它告诉 Pandas,根据 DataFrame 中 'subject'(科目)列的唯一值来将数据进行分组。

['score'].mean():它会计算每个 'subject' 组中所有 'score' 值的平均值

.plot(kind='bar').plot()这是 Pandas 提供的一个便捷绘图接口,它底层使用了 Matplotlib 库。kind='bar' 表示生成一个**条形图 **。

效果:

适用于编程小白的Python学习01:Pandas初探的更多相关文章

  1. “编程小白学python”阅读笔记

    今天在豆瓣搜索“python”关键字,搜到一本知乎周刊,读来觉得不错 编程小白学python ,作者@萧井陌, @Badger 书中提到的很多书,第一次看惊呆了,记录下来,希望每周回看此博文,坚持学习 ...

  2. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  3. Python学习01 Hello World

    Python学习之Hello World 准备工作 去官网http://www.python.org/ 下载python的安装包: http://www.python.org/download/ 当前 ...

  4. python学习-01

    1.编程语言分类: 编译型:(由编译器将代码编译成计算机识别的二进制文件)C \C++ \C#    运行速度较解释型语言快 解释型:(在运行时进行编译)python.php.sheel.ruby.j ...

  5. python学习01

    1.python怎样运行? 1)打开运行窗口,输入python 2)打开运行窗口,直接输入 python + python代码  `python -c "print(1/6.878)&quo ...

  6. Python3之turtle的基本用法#Python学习01#

    一.turtle基本语法 1.导入turtle 模块import turtle 2.显示箭头turtle.showturtle() 3.写字符串turtle.write("因小米" ...

  7. python学习 01 变量

    1.变量不是‘盒子’. 1.1 不同的值,变量名没变,   变量地址也会变. 1.2 相同的值,不同的变量名,变量地址是相同的

  8. Python学习之正则表达式初探

    正则表达式 正则表达式 (或 regexes ) 是通用的文本模式匹配的方法. Django URLconfs 允许你 使用任意的正则表达式来做强有力的URL映射,不过通常你实际上可能只需要使用很少的 ...

  9. 读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」

    0.前言 在此之前,我已经为准备学习python的小白同学们准备了轻量级但超无敌的python开发利器之visio studio code使用入门系列.详见 1.PYTHON开发利器之VS Code之 ...

  10. 小白学 Python 数据分析(7):Pandas (六)数据导入

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

随机推荐

  1. 选择排序--java进阶day06

    1.选择排序 https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996881 了解了选择排序之后,我们来找其中的规律 2.规律 选择排序就是一个元素和数组后续元素 ...

  2. 【Java】Math类的基本操作

    Math类 Math 类是数学操作类,提供了一系列的数学操作方法,包括求绝对值.三角函数等,在 Math 类中提供的一切方法都是静态方法(类方法),所以直接由类名称调用即可. Math类的基本操作: ...

  3. MySQL建立RFM模型

    1.数据来源 charge_record表数据 提取代码如下: # coding=utf-8import pymysql# 原数据库链接db1 = pymysql.connect( host='*** ...

  4. TGCTF2025 部分题目WP

    TGCTF 2025 Web AAA偷渡阴平 ?tgctf2025=eval(end(current(get_defined_vars())));&b=system('cat /flag'); ...

  5. FreeSWITCH中SIP网关(Gateway)操作

    freeswitch是一款简单好用的VOIP开源软交换平台. 以下是一篇关于FreeSWITCH中SIP网关(Gateway)操作的技术指南,基于提供的官方文档内容整理: 一.网关生命周期管理 1. ...

  6. Java 单元测试简单扫盲

    前言 仔细回想起来,上次认真编写单元测试已经是两年前的事了.那时候觉得写单元测试是种负担. 为了应付代码覆盖率要求,常常依赖工具自动生成测试用例,有时需要启动Spring容器,有时又不需要(当时还分不 ...

  7. php版10大设计模式,软件工程必须掌握的姿势

    作为一个半路出家的php萌新,在看公司老大们的代码时无时无刻不在感叹,老大就是老大,写的代码低耦合.易扩展,我怎么就想不出这写完美的实现方式,最近看了韩大佬的视频后才明白,原来这些都是业界前辈们总结提 ...

  8. strftime()函数的用法

    strftime()函数的用法 strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串.strftime()的语法是strftime(格式, 日期/ ...

  9. GFast开发MCP服务器之mark3labs/mcp-go库接入(一)

    这将是一个系列文章,我们将从简到繁开发一套基于GFast框架下MCP服务工具 github.com/mark3labs/mcp-go介绍 github.com/mark3labs/mcp-go 是一个 ...

  10. servlet 转发与重定向

    目录 转发 重定向 重定向与转发本质都是跳转到新的URL 重定向与转发的本质区别在于:转发是一个服务端的行为,而重定向是一个浏览器的行为. 下面是图解: 转发 转发的作用在服务器端,将请求发送给服务器 ...