Quantcast
Channel: 小蓝博客
Viewing all articles
Browse latest Browse all 3145

掌握Pandas核心数据结构:Series和DataFrame的四种创建方法

$
0
0

掌握Pandas核心数据结构:SeriesDataFrame的四种创建方法 📊🐼

数据分析领域,Pandas是Python中最为重要的库之一,其核心数据结构——SeriesDataFrame,为数据操作和分析提供了强大的工具。掌握这些数据结构的创建方法,是高效进行数据处理的基础。本文将详细介绍SeriesDataFrame的四种创建方法,帮助您快速上手并灵活应用。

📋 目录

  1. Pandas核心数据结构概述
  2. Series和DataFrame的创建方法

  3. 创建方法对比表
  4. 实战示例
  5. 常见问题与解答
  6. 总结

Pandas核心数据结构概述

Pandas提供了两种主要的数据结构:

  • Series:一维标签化数组,可以存储任何数据类型(整数、字符串、浮点数、Python对象等)。每个元素都有一个对应的标签(索引)。
  • DataFrame:二维标签化数据结构,类似于电子表格或SQL表。它由多列组成,每列可以是不同的数据类型。

理解和掌握这两种数据结构的创建方法,是进行高效数据分析的关键。

Series和DataFrame的创建方法

从列表创建 📃

SeriesDataFrame都可以通过Python的列表来创建。

创建Series

import pandas as pd

# 定义一个列表
data = [10, 20, 30, 40, 50]

# 创建Series
series = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])
print(series)

解释

  • pd.Series(data):将列表 data转换为 Series对象。
  • index=['a', 'b', 'c', 'd', 'e']:为每个元素指定标签。

输出

a    10
b    20
c    30
d    40
e    50
dtype: int64

创建DataFrame

import pandas as pd

# 定义一个二维列表
data = [
    ['Alice', 24],
    ['Bob', 27],
    ['Charlie', 22]
]

# 创建DataFrame
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)

解释

  • pd.DataFrame(data):将二维列表 data转换为 DataFrame对象。
  • columns=['Name', 'Age']:为每列指定列名。

输出

      Name  Age
0    Alice   24
1      Bob   27
2  Charlie   22

从字典创建 🗂️

使用字典也是创建SeriesDataFrame的常用方法。

创建Series

import pandas as pd

# 定义一个字典
data = {'a': 100, 'b': 200, 'c': 300}

# 创建Series
series = pd.Series(data)
print(series)

解释

  • pd.Series(data):将字典 data转换为 Series对象,字典的键作为索引,值作为数据。

输出

a    100
b    200
c    300
dtype: int64

创建DataFrame

import pandas as pd

# 定义一个字典
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [24, 27, 22]
}

# 创建DataFrame
df = pd.DataFrame(data)
print(df)

解释

  • pd.DataFrame(data):将字典 data转换为 DataFrame对象,字典的键作为列名,值作为数据。

输出

      Name  Age
0    Alice   24
1      Bob   27
2  Charlie   22

从Numpy数组创建 🧮

Numpy数组也是创建SeriesDataFrame的重要来源,尤其在处理数值计算时。

创建Series

import pandas as pd
import numpy as np

# 定义一个Numpy数组
data = np.array([1, 2, 3, 4, 5])

# 创建Series
series = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])
print(series)

解释

  • np.array([1, 2, 3, 4, 5]):创建一个Numpy数组。
  • pd.Series(data):将Numpy数组 data转换为 Series对象。

输出

a    1
b    2
c    3
d    4
e    5
dtype: int64

创建DataFrame

import pandas as pd
import numpy as np

# 定义一个Numpy二维数组
data = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# 创建DataFrame
df = pd.DataFrame(data, columns=['A', 'B', 'C'], index=['row1', 'row2', 'row3'])
print(df)

解释

  • np.array([...]):创建一个二维Numpy数组。
  • pd.DataFrame(data):将二维Numpy数组 data转换为 DataFrame对象,指定列名和索引。

输出

      A  B  C
row1  1  2  3
row2  4  5  6
row3  7  8  9

从CSV文件创建 📄

从CSV文件导入数据是最常见的数据获取方式之一。

创建DataFrame

import pandas as pd

# 从CSV文件读取数据
df = pd.read_csv('data.csv')
print(df)

解释

  • pd.read_csv('data.csv'):读取名为 data.csv的CSV文件,并将其内容转换为 DataFrame对象。

示例CSV内容 (data.csv):

Name,Age,City
Alice,24,New York
Bob,27,Los Angeles
Charlie,22,Chicago

输出

      Name  Age         City
0    Alice   24     New York
1      Bob   27  Los Angeles
2  Charlie   22      Chicago

创建方法对比表 📊

创建方法适用数据类型优点示例
从列表创建一维和二维列表简单直观,适用于小规模数据pd.Series([1,2,3])
从字典创建一维和二维字典灵活,适用于结构化数据pd.DataFrame({'A': [1,2]})
从Numpy数组创建Numpy数组高效,适用于数值计算和大型数据pd.Series(np.array([1,2,3]))
从CSV文件创建CSV格式文件便于处理外部数据,适用于实际应用场景pd.read_csv('data.csv')

实战示例 🛠️

示例一:从列表创建DataFrame

import pandas as pd

# 定义数据和列名
data = [
    ['Tom', 10],
    ['Jerry', 12],
    ['Spike', 8]
]
columns = ['Name', 'Age']

# 创建DataFrame
df = pd.DataFrame(data, columns=columns)
print(df)

解释

  • 定义一个包含子列表的数据集,每个子列表代表一行数据。
  • 指定列名为 'Name''Age'
  • 使用 pd.DataFrame将数据和列名转换为 DataFrame对象。

输出

     Name  Age
0     Tom   10
1   Jerry   12
2   Spike    8

示例二:从字典创建Series

import pandas as pd

# 定义字典
data = {'Math': 90, 'English': 85, 'Science': 95}

# 创建Series
series = pd.Series(data)
print(series)

解释

  • 定义一个包含科目及其成绩的字典。
  • 使用 pd.Series将字典转换为 Series对象,科目作为索引,成绩作为数据。

输出

Math       90
English    85
Science    95
dtype: int64

示例三:从Numpy数组创建DataFrame

import pandas as pd
import numpy as np

# 创建Numpy数组
data = np.random.randint(1, 100, size=(5, 3))

# 创建DataFrame
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
print(df)

解释

  • 使用 numpy.random.randint生成一个5行3列的随机整数数组。
  • 指定列名为 'A''B''C',并将数组转换为 DataFrame对象。

输出示例

    A   B   C
0  34  67  23
1  89  12  78
2  45  56  90
3  10  22  34
4  58  76  19

示例四:从CSV文件创建DataFrame

假设有一个名为 students.csv的CSV文件,内容如下:

Name,Age,Grade
Alice,23,A
Bob,25,B
Charlie,22,A
David,24,C
import pandas as pd

# 从CSV文件读取数据
df = pd.read_csv('students.csv')
print(df)

解释

  • 使用 pd.read_csv读取 students.csv文件。
  • 将CSV内容转换为 DataFrame对象,自动识别列名和数据类型。

输出

      Name  Age Grade
0    Alice   23     A
1      Bob   25     B
2  Charlie   22     A
3    David   24     C

常见问题与解答 ❓

问题一:如何为Series和DataFrame指定自定义索引?

解答: 在创建 SeriesDataFrame时,可以通过 index参数指定自定义索引。例如:

import pandas as pd

# Series自定义索引
series = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
print(series)

# DataFrame自定义行索引
data = {'Name': ['Alice', 'Bob'], 'Age': [24, 27]}
df = pd.DataFrame(data, index=['id1', 'id2'])
print(df)

输出

a    1
b    2
c    3
dtype: int64

      Name  Age
id1  Alice   24
id2    Bob   27

问题二:如何从嵌套字典创建DataFrame?

解答: 可以使用嵌套字典,其中外层字典的键作为列名,内层字典的键作为行索引。例如:

import pandas as pd

# 嵌套字典
data = {
    'Math': {'Alice': 90, 'Bob': 80},
    'English': {'Alice': 85, 'Bob': 88},
    'Science': {'Alice': 95, 'Bob': 92}
}

# 创建DataFrame
df = pd.DataFrame(data)
print(df)

输出

       Math  English  Science
Alice    90       85       95
Bob      80       88       92

创建方法对比表

创建方法适用场景优点示例代码
从列表创建简单数据集,适用于一维或二维数据直观简单,适合小规模数据pd.Series([1,2,3])
从字典创建结构化数据,适用于键值对形式的数据灵活,便于表示多维数据pd.DataFrame({'A': [1,2]})
从Numpy数组创建数值计算和大型数据集高效,适合数值操作和矩阵运算pd.DataFrame(np.array([[1,2],[3,4]]))
从CSV文件创建实际应用场景,处理外部数据源方便读取外部数据,适用于大规模和复杂数据集pd.read_csv('data.csv')

总结 ✅

PandasSeriesDataFrame是数据分析中不可或缺的工具。通过掌握从列表、字典、Numpy数组和CSV文件四种不同方式创建这些数据结构,您可以灵活应对各种数据源和需求。无论是处理简单的数值数据,还是复杂的结构化信息,Pandas都能提供高效、便捷的解决方案。持续练习和应用这些创建方法,将显著提升您的数据处理能力和分析效率。📈🔍


Pandas #数据分析 #Python #Series #DataFrame #数据处理 #编程教程 #数据科学


Viewing all articles
Browse latest Browse all 3145

Trending Articles