Python Pandas基础操作详解

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日

相关文章

  • Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

    【Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解】攻略 1. 概述 在数据分析和机器学习的应用中,我们往往会遇到稀疏数据和维度不匹配的情况。Pandas是一个功能强大的数据处理工具,可以帮助我们解决这些问题。本攻略将详细讲解如何使用Pandas处理DataFrame稀疏数据及维度不匹配数据分析。 2. 处理稀疏数据 当我们处理的数据集非常…

    python 2023年5月14日
    00
  • Python科学计算之Pandas详解

    Python科学计算之Pandas详解 简介 Pandas是一个数据处理和数据分析的Python库,提供了高效的DataFrame数据结构和灵活的数据操作方法。本文将详细介绍Pandas的使用方法。 安装 可以使用pip来安装Pandas,具体命令如下: pip install pandas 数据结构 Series Series是Pandas中的一个一维数据…

    python 2023年5月14日
    00
  • pd.DataFrame中的几种索引变换的实现

    我将为你提供一份关于”pd.DataFrame中的几种索引变换的实现”完整攻略。 1. 索引类型 在使用pd.DataFrame时,经常需要对不同类型的索引进行变换,包括以下几种索引类型:- 行索引(default):以数值形式生成,一般从0开始,递增1。- 列索引:一般由用户指定。- 多层索引:多层(或称为复合)索引提供了一种分层的方式,以轻松管理高维数据…

    python 2023年6月13日
    00
  • 如何在Pandas中使用 “NOT IN “过滤器

    在Pandas中使用 “NOT IN” 过滤器可以通过两种方式实现,即使用 ~ 符号和使用isin() 函数。下面我会详细介绍这两种方式的语法和示例。 使用 ~ 符号: 在Pandas中,如果你想使用 “NOT IN” 过滤器,可以使用 ~ 符号来实现。具体语法如下: df[~df[‘column_name’].isin([‘value_1’, ‘value…

    python-answer 2023年3月27日
    00
  • Python open()文件处理使用介绍

    Python中的open函数是用来打开文件的,它的语法格式如下: open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) file:要打开的文件名(注意路径) mode:文件的打开模式(可选),默认为’r’,…

    python 2023年5月14日
    00
  • python 用Matplotlib作图中有多个Y轴

    当需要在一个图中,将两个或以上的不同的 Y 轴进行同步展示时,可以借助 Matplotlib 库实现。以下是实现方法的完整攻略。 1. 导入 Matplotlib 库 import matplotlib.pyplot as plt 2. 新建画布和子图 figsize 参数用于设置画布的大小 constrained_layout 参数可以使图表自动调整大小,…

    python 2023年6月14日
    00
  • 如何在Pandas的数据透视表中包含百分比

    利用Pandas生成的数据透视表,我们可以方便地对数据进行分组、统计和分析。其中,包括了对每组数据的计数、求和等操作,但也可以计算每组数据的百分比。 下面是如何在 Pandas 的数据透视表中包含百分比的步骤: 在 DataFrame 中构建数据透视表 使用 Pandas 的 pivot_table 函数,可以快速创建数据透视表。在这里我们需要至少两个参数:…

    python-answer 2023年3月27日
    00
  • pandas dataframe drop函数介绍

    Pandas DataFrame Drop函数介绍 在使用Pandas读取数据后,我们可能需要对数据进行处理和清洗。其中,删除DataFrame中的某些行或列是常见的操作之一。Pandas中提供了df.drop()函数来满足这一需求。 函数语法 df.drop(labels=None, axis=0, index=None, columns=None, le…

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