Python Pandas基础操作详解

yizhihongxing

PythonPandas基础操作详解

简介

PythonPandas是一款开源的数据处理库,其操作和数据结构与Excel类似,且支持导入和导出多种数据格式,包括CSV、JSON、SQL、Excel等。

PythonPandas的核心数据结构是DataFrame,可以将不同格式的文件转化为DataFrame,方便进行数据清洗、转换、分析和建模等操作。

本攻略将详细讲解PythonPandas基础操作,包括创建DataFrame、数据选取及操作、数据过滤、数据排序、数据合并和重塑等。

创建DataFrame

最常见的创建DataFrame的方法是使用字典,其中字典的key就是DataFrame的列名,value就是每列对应的数据。

示例1:通过字典创建DataFrame

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)
print(df)

输出:

       name  age gender
0     Alice   25      F
1       Bob   32      M
2   Charlie   18      M
3     David   47      M

另一种创建DataFrame的方法是使用Numpy数组,其中Numpy数组的每一行对应DataFrame的一行,每一列对应DataFrame的一列。

示例2:通过Numpy数组创建DataFrame

import numpy as np
import pandas as pd

data = np.array([['Alice', 25, 'F'],
                 ['Bob', 32, 'M'],
                 ['Charlie', 18, 'M'],
                 ['David', 47, 'M']])
df = pd.DataFrame(data, columns=['name', 'age', 'gender'])
print(df)

输出:

       name age gender
0     Alice  25      F
1       Bob  32      M
2   Charlie  18      M
3     David  47      M

数据选取及操作

选取DataFrame的某一列可以使用列名,也可以使用列的索引。

示例3:选取DataFrame的某一列

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)

# 选取age列
age = df['age']
print(age)

# 选取gender列
gender = df.iloc[:, 2] # iloc方法以列的索引选取
print(gender)

输出:

0    25
1    32
2    18
3    47
Name: age, dtype: int64
0    F
1    M
2    M
3    M
Name: gender, dtype: object

对选取的列进行操作,例如计算平均值和标准差,可以使用DataFrame的方法。

示例4:对选取的列进行操作

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)

# 计算age列的平均值和标准差
age_mean = df['age'].mean()
age_std = df['age'].std()
print('age的平均值为{},标准差为{}'.format(age_mean, age_std))

输出:

age的平均值为30.5,标准差为12.353902904506923

数据过滤

根据DataFrame中数据的条件进行过滤是常见的操作。

示例5:根据DataFrame中数据的条件进行过滤

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)

# 选取age>30的行
age_gt_30 = df[df['age'] > 30]
print(age_gt_30)

# 选取gender为M的行
gender_M = df[df['gender'] == 'M']
print(gender_M)

输出:

    name  age gender
1    Bob   32      M
3  David   47      M
      name  age gender
1      Bob   32      M
2  Charlie   18      M
3    David   47      M

数据排序

对DataFrame中的数据进行排序,可以使用sort_values方法。

示例6:对DataFrame中的数据进行排序

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)

# 按照age升序排列
df_sort_age_asc = df.sort_values(by='age')
print(df_sort_age_asc)

# 按照age降序排列,且对age相同时按照name升序排列
df_sort_age_desc_name_asc = df.sort_values(by=['age', 'name'], ascending=[False, True])
print(df_sort_age_desc_name_asc)

输出:

      name  age gender
2  Charlie   18      M
0    Alice   25      F
1      Bob   32      M
3    David   47      M
      name  age gender
3    David   47      M
1      Bob   32      M
0    Alice   25      F
2  Charlie   18      M

数据合并和重塑

将多个DataFrame合并成一个DataFrame,常见的方法是使用concat方法以行或列的方式进行合并。

示例7:使用concat方法以行或列的方式进行合并

import pandas as pd

data1 = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
df1 = pd.DataFrame(data1)

data2 = {'name': ['Emily', 'Fred', 'George', 'Helen'],
        'age': [19, 27, 41, 35],
        'gender': ['F', 'M', 'M', 'F']}
df2 = pd.DataFrame(data2)

# 按照行合并两个DataFrame
df_concat_row = pd.concat([df1, df2])
print(df_concat_row)

# 按照列合并两个DataFrame
df_concat_column = pd.concat([df1, df2], axis=1)
print(df_concat_column)

输出:

      name  age gender
0    Alice   25      F
1      Bob   32      M
2  Charlie   18      M
3    David   47      M
0    Emily   19      F
1     Fred   27      M
2   George   41      M
3    Helen   35      F
      name  age gender    name  age gender
0    Alice   25      F   Emily   19      F
1      Bob   32      M    Fred   27      M
2  Charlie   18      M  George   41      M
3    David   47      M   Helen   35      F

对DataFrame进行重塑,包括pivot和melt操作。

示例8:使用pivot和melt对DataFrame进行重塑

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Fred', 'George', 'Helen'],
        'age': [25, 32, 18, 47, 19, 27, 41, 35],
        'gender': ['F', 'M', 'M', 'M', 'F', 'M', 'M', 'F'],
        'grade': [85, 90, 75, 80, 95, 88, 92, 87],
        'subject': ['Math', 'Math', 'Math', 'Math', 'English', 'English', 'English', 'English']}
df = pd.DataFrame(data)

# 使用pivot将subject作为列,按照name和gender进行分组,并计算每个分组的平均grade
df_pivot = df.pivot(index=['name', 'gender'], columns='subject', values='grade').reset_index()
print(df_pivot)

# 使用melt将Math和English列进行合并,并生成新的subject列
df_melt = pd.melt(df, id_vars=['name', 'age', 'gender'], value_vars=['Math', 'English'], var_name='subject', value_name='grade')
print(df_melt)

输出:

subject     name gender  English   Math
0          Alice      F     95.0   85.0
1            Bob      M     88.0   90.0
2        Charlie      M      NaN   75.0
3          David      M      NaN   80.0
4          Emily      F     87.0    NaN
5           Fred      M      NaN    NaN
6         George      M      NaN   92.0
7          Helen      F     87.0    NaN
   name  age gender  subject  grade
0   Alice   25      F     Math     85
1     Bob   32      M     Math     90
2  Charlie   18      M     Math     75
3    David   47      M     Math     80
4    Emily   19      F     Math     95
5     Fred   27      M     Math     88
6   George   41      M     Math     92
7    Helen   35      F     Math     87
8   Alice   25      F  English     95
9     Bob   32      M  English     88
10    Charlie   18      M  English    NaN
11    David   47      M  English    NaN
12    Emily   19      F  English     87
13     Fred   27      M  English    NaN
14   George   41      M  English     87
15    Helen   35      F  English    NaN

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas基础操作详解 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)

    当需要在Python中实现模拟浏览器上传文件的操作时,可以使用requests库和multipart模块来完成。上传文件需要使用POST请求方法,并以multipart/form-data格式发送数据。 以下是实现Python模拟浏览器上传文件的步骤: 第一步:导入必要模块 import requests from requests_toolbelt.mul…

    python 2023年5月14日
    00
  • yolov5训练时参数workers与batch-size的深入理解

    yolov5参数:workers 在yolov5训练时,参数workers定义了用于数据加载的进程数。其默认值为0,表示只使用一个主进程。但如果你有多个CPU核心,可以通过设置workers值来并行地执行数据加载,从而提高数据加载速度,缩短训练时间。 举个例子,如果你有一台有8个CPU核心的机器,可以将workers设置为8。这样,在数据加载时就会使用8个进…

    python 2023年5月14日
    00
  • 基于Python实现剪切板实时监控方法解析

    当我们复制一段文本后,剪切板会将其缓存,以便稍后粘贴。但您曾经想过如何实时监控剪切板中的更改吗?这里有一条基于Python实现的剪切板实时监控的攻略。 1. 导入模块 首先,我们需要导入Python的pyperclip和time模块。pyperclip模块提供了访问剪贴板的方法,time模块提供了等待一段时间的方法,以减少CPU的负荷。 import pyp…

    python 2023年5月14日
    00
  • Pandas的绝对频率和相对频率

    当我们在用Pandas分析数据时,频率是一个很重要的指标。频率可以指数据中某个值出现的次数,也可以表示某些值占数据总值的比例。在统计学中,频率还有两种常见的类型:绝对频率和相对频率。下面我将详细讲解Pandas中的绝对频率和相对频率。 绝对频率 绝对频率是指某个值在数据中出现的次数。在Pandas中,我们可以通过value_counts()函数来获取数据中每…

    python-answer 2023年3月27日
    00
  • Python数据分析模块pandas用法详解

    Python数据分析模块pandas用法详解 1. pandas概述 pandas是一个Python的第三方库,主要用于数据分析和数据处理。它提供了高效的数据结构与数据分析工具,被广泛应用于数据挖掘、数据分析、数据预处理等各个领域。pandas的核心数据结构是DataFrame和Series,DataFrame是二维的表格结构,而Series是一维的数组结构…

    python 2023年5月14日
    00
  • Python 获取 datax 执行结果保存到数据库的方法

    下面是关于Python获取datax执行结果保存到数据库的完整攻略: 1. 前置工作 首先需要安装好datax和对应数据库的驱动包,以及Python所需的相关库。 2. 编写Python代码 2.1 准备datax执行配置文件 先准备好要执行的datax配置文件,例如 job.json 文件。 2.2 执行datax作业并获取执行结果 执行命令: pytho…

    python 2023年6月13日
    00
  • Pandas内存管理

    Pandas是一个广泛应用于数据分析和处理的Python库,其内存管理是其高效性的一个重要组成部分。本文将详细讲解Pandas的内存管理机制。 Pandas对象 在Pandas中,常见的对象有DataFrame和Series。DataFrame类似于一个表格,Series类似于一个向量。这些对象中存储了具体的数据。与其它Python库相比,Pandas对象的…

    python-answer 2023年3月27日
    00
  • 如何使用Python自动控制windows桌面

    自动控制Windows桌面可以使用Python的Win32api模块完成,接下来将详细介绍如何使用Python实现Windows桌面的自动控制。 安装pywin32 要使用Python自动控制Windows桌面,需要首先安装pywin32模块。可以使用pip命令进行安装: pip install pywin32 使用pywinauto自动控制Windows桌…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部