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方法

    当我们需要创建一个空的DataFrame时,可以使用Pandas中的方法,下面是创建空DataFrame的攻略。 方法一:使用DataFrame()构造函数 可以通过调用DataFrame()构造函数并传入列名来创建一个空的DataFrame。 import pandas as pd # 创建空的DataFrame df = pd.DataFrame(col…

    python 2023年5月14日
    00
  • 使用Pandas在Python中进行数据操作

    Pandas是一种基于NumPy的库,提供了高效的数据结构和数据分析工具。它的核心数据类型是Series和DataFrame。Series是一种一维数组,可以包含任何数据类型。DataFrame是一个表格型的数据结构,包含有行和列的索引,类似于电子表格或者SQL表。Pandas支持多种数据输入和输出格式,包括CSV、Excel、SQL、JSON等。 下面我们…

    python-answer 2023年3月27日
    00
  • python用pd.read_csv()方法来读取csv文件的实现

    使用Python中的pandas库的read_csv()方法可以方便地读取csv文件。以下是详细的攻略: 步骤1:导入pandas库 首先,需要导入pandas库。可以使用以下代码行实现: import pandas as pd 步骤2:使用read_csv()方法读取csv文件 接下来,需要使用read_csv()方法读取csv文件。read_csv()方…

    python 2023年5月14日
    00
  • Pandas数据分析-pandas数据框的多层索引

    Pandas数据分析-pandas数据框的多层索引 在Pandas中,可以通过数据框的多层索引实现高纬度数据的处理和分析。这种多层次的索引在一维数据结构上是不可能实现的,因为一维数据结构只能有一个维度,而多层次的索引可以提供额外的维度。 在本文中,我们将全面介绍Pandas数据框的多层索引,并提供示例说明。 创建多层索引数据框 在Pandas中,可以通过多种…

    python 2023年5月14日
    00
  • Python中Dataframe元素为不定长list时的拆分分组

    背景介绍: 在Python中的pandas库中,通过Dataframe对象可以构建一个二维表格,其中每个元素可以是简单的基本数据类型,也可以是列表或数组等复合类型。当Dataframe中某个元素为不定长的列表时,如何对其进行统一的拆分分组操作是一个常见的问题。本文将详细讲解Python中Dataframe的元素为不定长list时的拆分分组方法。 方法一:使用…

    python 2023年6月13日
    00
  • 解决keras使用cov1D函数的输入问题

    针对keras使用cov1D函数输入问题,我可以给你详细讲解下面这些步骤: 问题描述 在使用keras进行卷积层网络搭建时,我们会使用到cov1D函数,但是在使用cov1D函数时,我们常常会遇到输入张量形状不一致的问题,这会导致模型训练失败,需要我们进行解决。 解决方案 方案一:使用padding 对于卷积层的输入,我们可以使用padding参数对输入数据进…

    python 2023年5月14日
    00
  • pandas数据清洗(缺失值和重复值的处理)

    下面是“pandas数据清洗(缺失值和重复值的处理)”的完整攻略。 缺失值的处理 缺失值是指数据中存在的空值或NA值。在实践中,我们会发现许多数据集中都存在缺失值,这时需要考虑如何进行缺失值处理。在pandas中,可以使用dropna()函数或fillna()函数来处理缺失值。 dropna()函数 dropna()函数可以丢弃缺失值所在的行或列。该函数有以…

    python 2023年5月14日
    00
  • 检查一个给定的列是否存在于Pandas数据框架中

    检查一个给定的列是否存在于Pandas数据框架中通常是在数据分析和处理的过程中需要进行的操作之一。下面为您详细介绍如何检查是否存在该列,并提供示例。 1. 列是否在数据框架中的判断方法 Pandas提供了 isin() 方法,可以快速地检查一个(或多个)列是否在数据框架中。具体方法如下: ‘列名’ in df.columns 其中,’列名’ 表示所要检查的列…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部