7Python的Pandas:基础操作

Pandas 是一个强大的 Python 数据分析工具库,它提供了许多便利的数据结构和数据操作方法。以下是一些常见的 Pandas 基础操作:

  1. 导入 Pandas 库:

    import pandas as pd
    
  2. 创建 DataFrame:

    data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Paris', 'London']}
    df = pd.DataFrame(data)
    
  3. 读取和写入数据:

    • 从 CSV 文件读取数据:
      df = pd.read_csv('filename.csv')
      
    • 将 DataFrame 写入 CSV 文件:
      df.to_csv('filename.csv', index=False)
      
  4. 查看数据:

    • 显示前几行数据(默认前 5 行):
      df.head()
      
    • 显示后几行数据(默认后 5 行):
      df.tail()
      
  5. 数据选择和索引:

    • 通过列名选择数据:
      ages = df['Age']
      
    • 使用 .loc 通过标签选择数据:
      specific_data = df.loc[1, 'Name']
      
    • 使用 .iloc 通过位置选择数据:
      specific_data = df.iloc[1, 1]  # 第二行第二列
      
  6. 数据过滤:

    • 根据条件筛选数据:
      filtered_data = df[df['Age'] > 30]
      
  7. 数据排序:

    • 按某列值排序:
      sorted_df = df.sort_values(by='Age', ascending=False)
      
  8. 缺失值处理:

    • 检查数据中的缺失值:
      df.isnull()
      
    • 填充缺失值:
      df_filled = df.fillna(value=0)
      
    • 删除含有缺失值的行:
      df_dropped = df.dropna()
      
  9. 数据统计:

    • 计算平均值、中位数等统计数据:
      mean_age = df['Age'].mean()
      median_age = df['Age'].median()
      
  10. 数据聚合:

    • 分组和聚合数据:
      grouped_data = df.groupby('City').sum()
      

1.索引操作

Pandas 中的索引操作主要包括创建索引、设置索引、重置索引、多级索引(层次化索引)的操作等。下面详细介绍这些基本的索引操作:

创建和设置索引

  1. 创建索引:
    当你创建一个 DataFrame 时,Pandas 默认会给每行分配一个从 0 开始的整数索引。你也可以在创建时指定索引:

    df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])
    
  2. 设置已有列为索引:
    你可以将 DataFrame 中的一列或多列设置为索引:

    df.set_index('Name', inplace=True)
    

访问数据

  1. 使用 .loc[].iloc[]

    • .loc[] 用于基于标签的索引。
    • .iloc[] 用于基于整数位置的索引。

    例如:

    # 使用.loc访问
    data = df.loc['Alice']# 使用.iloc访问
    data = df.iloc[0]
    

重置索引

  1. 重置索引:
    使用 reset_index() 可以把索引重置为默认的整数索引,原来的索引会变成一列数据:
    df.reset_index(inplace=True)
    

多级索引(层次化索引)

  1. 创建多级索引:
    当数据在更多维度上有层次结构时,可以使用多级索引。

    arrays = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]]
    index = pd.MultiIndex.from_arrays(arrays, names=('letter', 'number'))
    df = pd.DataFrame({'data': [10, 20, 30, 40]}, index=index)
    
  2. 访问多级索引的数据:

    # 访问外层索引
    df.loc['a']# 访问内层索引
    df.loc[('a', 1)]
    
  3. 重排多级索引:
    使用 reorder_levels 调整索引层次的顺序:

    df.reorder_levels(['number', 'letter'])
    

2.统计计算

在 Pandas 中,统计计算是分析数据的基础,提供了快速的、简洁的数据汇总功能。这里列举一些常用的统计计算方法,帮助你理解和利用 Pandas 进行数据分析。

基本统计计算

  1. 描述统计:
    describe() 方法可以快速查看数据的基本统计量,如均值、标准差、最小值、四分位数等。

    df.describe()
    
  2. 均值:
    使用 mean() 方法计算数值列的平均值。

    df['Age'].mean()
    
  3. 中位数:
    使用 median() 方法计算数值列的中位数。

    df['Age'].median()
    
  4. 最大值和最小值:
    使用 max()min() 方法计算数值列的最大值和最小值。

    max_value = df['Age'].max()
    min_value = df['Age'].min()
    
  5. 标准差和方差:
    使用 std()var() 方法计算数值列的标准差和方差,这有助于了解数据的离散程度。

    std_dev = df['Age'].std()
    variance = df['Age'].var()
    
  6. 计数:
    使用 count() 方法统计非空值的数量。

    count = df['Age'].count()
    
  7. 求和:
    使用 sum() 方法计算数值列的总和。

    total = df['Age'].sum()
    

高级统计计算

  1. 相关系数:
    使用 corr() 方法计算列与列之间的相关系数,了解变量之间的线性关系。

    correlation_matrix = df.corr()
    
  2. 协方差:
    使用 cov() 方法计算列与列之间的协方巧。

    covariance_matrix = df.cov()
    
  3. 唯一值和值计数:
    使用 unique()value_counts() 方法获取列中的唯一值和这些值的出现次数。

    unique_values = df['City'].unique()
    value_counts = df['City'].value_counts()
    
  4. 累计统计:
    使用 cumsum()cumprod()cummax()cummin() 等方法计算累积和、累积积、累积最大值和累积最小值。

    cumulative_sum = df['Age'].cumsum()
    cumulative_max = df['Age'].cummax()
    

3.位置计算

在 Pandas 中进行位置计算主要涉及到找出数据中特定元素的位置或进行基于位置的操作。这些计算通常使用以下几种方法:

1. idxmax()idxmin()

这两个函数用于找出数据中最大值或最小值的索引位置。

# 找出最大值的位置
max_index = df['Age'].idxmax()# 找出最小值的位置
min_index = df['Age'].idxmin()

2. argmax()argmin()

这些函数通常用于 Numpy 数组,但也可以在 Pandas 的 Series 对象中使用,来找到最大值和最小值的位置(相对于数组的位置,而不是 DataFrame 的标签索引)。

# 使用 argmax
max_position = df['Age'].values.argmax()  # 需要转换为 Numpy 数组# 使用 argmin
min_position = df['Age'].values.argmin()  # 需要转换为 Numpy 数组

3. nlargest()nsmallest()

这些方法用于获取列中最大或最小的 n 个值。

# 获取最大的3个值
largest_values = df['Age'].nlargest(3)# 获取最小的3个值
smallest_values = df['Age'].nsmallest(3)

4. sort_values() 和位置访问

通过排序和位置索引来获取特定位置的数据。

# 先排序,然后通过位置访问
sorted_df = df.sort_values(by='Age')
specific_data = sorted_df.iloc[0]  # 获取排序后的第一行数据

5. 使用 .iloc[]

直接通过位置来索引数据。

# 访问第三行第二列的数据
element = df.iloc[2, 1]

4.数据选择

在 Pandas 中,数据选择是一项基础且常用的操作,它允许你基于行、列或条件过滤来访问数据集中的特定部分。以下是一些常用的数据选择方法:

1. 选择列

你可以通过列名直接选择列,这是最简单的方法:

# 选择单列
ages = df['Age']# 选择多列
subset = df[['Name', 'City']]

2. 使用 .loc[].iloc[]

  • .loc[]:基于标签的索引,可以用来选择特定的行和列。
# 选择单个元素
name = df.loc[1, 'Name']# 选择行和列的子集
subset = df.loc[0:2, ['Name', 'Age']]
  • .iloc[]:基于整数位置的索引,用于选择行和列的子集。
# 选择单个元素
name = df.iloc[1, 0]# 选择行和列的子集
subset = df.iloc[0:3, 0:2]

3. 布尔索引

通过布尔索引,你可以根据条件过滤数据:

# 选择年龄大于 30 的所有行
over_30 = df[df['Age'] > 30]# 多条件选择,使用 & (和) 或 | (或)
young_in_ny = df[(df['Age'] < 30) & (df['City'] == 'New York')]

4. 使用 .query()

.query() 方法提供了一种更易读的方式来选择数据:

# 使用 query 选择数据
over_30 = df.query('Age > 30')
young_in_ny = df.query('Age < 30 and City == "New York"')

5. 使用切片

对于行的选择,你也可以使用切片语法,尤其是在 .iloc[] 中:

# 选择前三行
first_three_rows = df[:3]# 使用 .iloc 进行切片选择
rows = df.iloc[1:4]

6. 条件赋值

你可以根据条件来修改 DataFrame 的部分数据:

# 将所有年龄大于 30 的人的城市改为 "Berlin"
df.loc[df['Age'] > 30, 'City'] = 'Berlin'

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

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

相关文章

开启你的 Django 开发之旅:从环境搭建到服务部署

欢迎来到这个关于如何使用 Django、MySQL、HTML、CSS、Bootstrap、jQuery 和 ECharts 构建一个全栈 Web 应用的指南。在这个博客中&#xff0c;我们将从零开始&#xff0c;一步步地搭建开发环境&#xff0c;并最终将服务部署到 Linux 系统上。 本篇进介绍大概得步骤&am…

任务2:python+InternStudio 关卡

任务地址 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Python/task.md 文档 https://github.com/InternLM/Tutorial/tree/camp3/docs/L0/Python 任务 Python实现wordcount import re import collectionstext """ Got this panda plush to…

【机器学习】智能驱动未来:机器学习在能源效率提升与环境管理中的创新应用

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习能源环境领域的应用潜力&#x1f304;能源效率提升&#x1f3de;️环境管理⛰️具体案例…

Linux之旅:常用的指令,热键和权限管理

目录 前言 1. Linux指令 &#xff08;1&#xff09; ls &#xff08;2&#xff09; pwd 和 cd &#xff08;3&#xff09;touch 和 mkdir &#xff08;4&#xff09; rmdir 和 rm &#xff08;5&#xff09;cp &#xff08;6&#xff09;mv &#xff08;7&#xff09;…

开发工具推荐:await-to-js

目录 前言&#xff1a; 1. .then().catch() 2. async await 3. await-to-js 前言&#xff1a; 今天给大家推荐一块我觉得用着还不错的工具&#xff0c;await-to-js&#xff1b; await-to-js - npm GitHub - scopsy/await-to-js: Async await wrapper for easy error ha…

HTML+CSS+JS精美气泡提示框

源代码在效果图后面 点赞❤️关注&#x1f49b;收藏⭐️ 主要实现&#xff1a;提示框出现和消失两种丝滑动画 弹出气泡提示框后延迟2秒自动消失 效果图 错误框 正确 警告 提示 源代码 <!DOCTYPE html> <html lang"en"> <head><meta cha…

PHP场地预约共享茶室棋牌室小程序系统源码

&#x1f375;&#x1f3b2;【聚会新宠】场地预约神器&#xff0c;共享茶室棋牌室小程序大揭秘&#xff01;&#x1f389; &#x1f3e1;【开篇&#xff1a;告别繁琐&#xff0c;聚会新选择】&#x1f3e1; 还在为找不到合适的聚会场地而烦恼吗&#xff1f;想要一个既私密又舒…

【如何在Python中插入列表元素】

在Python中&#xff0c;插入列表元素可以通过多种方式实现&#xff0c;具体取决于你想要将元素插入到列表的哪个位置。以下是一些常用的方法&#xff1a; 1. 使用append()方法 append()方法用于在列表的末尾添加一个元素。这是插入元素到列表中最简单的方式。 my_list [1, …

JS 原型与原型链图解:彻底搞懂的终极指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 在JavaScript中&#xff0c;原型和原型链是非常重要的知识点&#xff0c;只有理解了…

2.2.填充和步幅

我们已经知道&#xff0c;卷积的输出形式取决于输入形式和卷积核的形式。 ​ 此外还有其他因素会影响输出的大小。假设以下情景&#xff1a; 有时&#xff0c;在应用了连续的卷积之后&#xff0c;我们最终得到的输出远小于输入大小。这是由于卷积核的宽度和高度通常大于1所导致…

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS&#xff08;cortex microcontrol software interface standard一种软件标准接口&#xff09;&#xff0c;官网地址&#xff1a;https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…

如何评价《系统之美》这本书

系统的总体大于部分之和&#xff0c;因而&#xff1a;一万个图书管理员也无法取代一个搜索引擎 一万个图书管理员简单的拼凑在一起构不成一个系统&#xff0c;而搜索引擎却是个可以不断完善的系统。生物学中对于系统的定义是&#xff1a;“系统是能够完成一种或者几种生理功能…

Linux系统编程:自定义协议(序列化和反序列化)

1. 协议 在之前我们谈到&#xff0c;协议就是一种"约定"&#xff0c;socket api接口&#xff0c;在读写数据时&#xff0c;都是按照"字符串"的方式来发送接收的&#xff0c;那么我们要传输一些"结构化"数据时怎么办呢&#xff1f;,比如说一个结构…

前端-04-VScode敲击键盘有键入音效,怎么关闭

目录 问题解决办法 问题 今天正在VScode敲项目&#xff0c;不知道是按了什么快捷键还是什么的&#xff0c;敲击键盘有声音&#xff0c;超级烦人啊&#xff01;&#xff01;于是我上网查了一下&#xff0c;应该是开启了VScode的键入音效&#xff0c;下面是关闭键入音效的办法。…

kafka---消息日志详解

一、Log Flush Policy&#xff08;log flush 策略&#xff09; 1、设置内存中保留日志的个数&#xff0c;当达到这个数量的时候&#xff0c;内存中的数据会被强制刷到disk中 log.flush.interval.messages10000 2、设置内存中保留日志的时间&#xff0c;当达到这个时间的时候&am…

DP刷题(1500-1700)

1.区间DP&#xff1a;https://www.acwing.com/problem/content/323/ 比较容易想到区间DP,转换一下均方差定义用记忆化搜索就可以了。 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N 16; int n, m 8; int s[N][N]; double f[N][…

现在进行时的被动语态:为什么是 “being“?

在学习英语语法时&#xff0c;曾对现在进行时的被动语态感到困惑&#xff0c;特别是为什么要用“being”这个词。 1. 进行时态&#xff08;Present Continuous Tense&#xff09; 进行时态用于表示动作正在发生。其结构是&#xff1a;主语 am/is/are 动词的现在分词&#xf…

分布式服务框架zookeeper+消息队列kafka

一、zookeeper概述 zookeeper是一个分布式服务框架&#xff0c;它主要是用来解决分布式应用中经常遇到的一些数据管理问题&#xff0c;如&#xff1a;命名服务&#xff0c;状态同步&#xff0c;配置中心&#xff0c;集群管理等。 在分布式环境下&#xff0c;经常需要对应用/服…

云计算数据中心(三)

目录 四、自动化管理&#xff08;一&#xff09;自动化管理的特征&#xff08;二&#xff09;自动化管理实现阶段&#xff08;三&#xff09;Facebook自动化管理 五、容灾备份&#xff08;一&#xff09;容灾系统的等级标准&#xff08;二&#xff09;容灾备份的关键技术&#…

Oracle19.24发布,打补丁到19.24

一. 19.24发布 2024年7月16日 19c&#xff0c;19.24补丁发布 文档编号19202407.9&#xff0c;文档编码规则&#xff1a; 19&#xff08;版本号&#xff09;2024&#xff08;年份&#xff09;07&#xff08;当季的第一个月01/04/07/10&#xff09;.9 一般每个季度的首月中16…