3. pandas笔记之:创建

发布于:2025-05-01 ⋅ 阅读:(46) ⋅ 点赞:(0)

以下是 Pandas 主要数据结构的创建方式整理,涵盖 Series 和 DataFrame 的常见创建方法:


一、Series 创建方式

  1. 从列表/数组创建
import pandas as pd
import numpy as np

# 基础列表
s1 = pd.Series([1, 3, 5, np.nan, 6])

# 指定索引
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])

# 从 NumPy 数组
arr = np.array([2, 4, 6])
s3 = pd.Series(arr)
  1. 从字典创建
data = {'a': 1, 'b': 2, 'c': 3}
s = pd.Series(data)  # 字典键自动作为索引
  1. 标量值创建
s = pd.Series(5, index=[0, 1, 2, 3])  # 所有值为5

二、DataFrame 创建方式

  1. 从字典创建
# 列式字典
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 28],
    'Score': [92.5, 85.0, 88.5]
}
df1 = pd.DataFrame(data)

# 指定索引
df2 = pd.DataFrame(data, index=['a', 'b', 'c'])
  1. 从列表的列表创建
data = [
    ['Alice', 25, 92.5],
    ['Bob', 30, 85.0],
    ['Charlie', 28, 88.5]
]
df = pd.DataFrame(data, columns=['Name', 'Age', 'Score'])
  1. 从嵌套字典创建
data = {
    '2020': {'A': 100, 'B': 200},
    '2021': {'A': 110, 'C': 210}
}
df = pd.DataFrame(data)  # 外层字典键为列名,内层键为索引
  1. 从 NumPy 数组创建
arr = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])
df = pd.DataFrame(arr, columns=['X', 'Y', 'Z'])
  1. 从结构化数组创建
dtype = [('Name', 'U10'), ('Age', 'i4'), ('Score', 'f4')]
data = np.array([
    ('Alice', 25, 92.5),
    ('Bob', 30, 85.0)
], dtype=dtype)
df = pd.DataFrame(data)
  1. 从文件/外部数据源创建
# 从 CSV
df_csv = pd.read_csv('data.csv')

# 从 Excel
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 从 SQL 数据库
import sqlite3
conn = sqlite3.connect('database.db')
df_sql = pd.read_sql('SELECT * FROM table', conn)

三、特殊创建方式

  1. 时间序列索引
dates = pd.date_range('20230101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A','B','C','D'])
  1. 随机数据生成
df = pd.DataFrame(np.random.rand(3,4))  # 均匀分布
df = pd.DataFrame(np.random.randn(3,4)) # 正态分布
  1. 从其他数据结构转换
# 从 Series 字典
s_dict = {
    'A': pd.Series([1, 2, 3]),
    'B': pd.Series([4, 5, 6, 7])
}
df = pd.DataFrame(s_dict)

四、高级创建技巧

  1. 指定数据类型
df = pd.DataFrame(
    data = {'A': [1, 2], 'B': ['X', 'Y']},
    dtype = {'A': 'float32', 'B': 'category'}
)
  1. 混合类型创建
df = pd.DataFrame({
    'IntCol': [1, 2, 3],
    'FloatCol': [1.1, 2.2, 3.3],
    'StrCol': ['A', 'B', 'C'],
    'DateCol': pd.date_range('20200101', periods=3)
})
  1. 空 DataFrame 创建
empty_df = pd.DataFrame(columns=['A', 'B', 'C'])

五、创建方式对比

方式 适用场景 优点 注意事项
字典创建 列式数据组织 直观易读 各列长度必须一致
列表的列表创建 行式数据输入 适合小规模数据 需配合columns参数
NumPy数组创建 数值型数据处理 高性能 需手动添加列名
文件读取 大数据集加载 支持多种格式 注意编码和内存管理
时间序列创建 金融/时序数据分析 内置时间处理功能 索引需排序
空DataFrame创建 动态构建数据结构 灵活填充数据 需后续维护列结构一致性

六、最佳实践建议

  1. 优先使用字典创建:当数据以列形式组织时最直观
  2. 大数据使用文件读取:避免内存溢出
  3. 明确指定数据类型:防止自动类型推断错误
  4. 索引管理:合理设置索引提升查询性能
  5. 验证数据完整性:检查NaN和异常值

掌握这些创建方式后,可以灵活应对各种数据初始化场景。


网站公告

今日签到

点亮在社区的每一天
去签到