当前位置: 首页 > news >正文

3. pandas笔记之:创建

以下是 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和异常值

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

http://www.xdnf.cn/news/118909.html

相关文章:

  • 助力网站优化利用AI批量生成文章工具提升质量
  • 【QT网络】构建简单Udp回显服务器
  • ArrayList与顺序表详解
  • C# 结构(Struct)
  • 【AI News | 20250424】每日AI进展
  • 文件操作、流对象示例
  • Spring AI简介
  • vscode vue文件单行注释失效解决办法
  • 基于Keras3.x使用CNN实现简单的猫狗分类
  • WAMP设置外网访问
  • servlet-优化
  • ASP.NET Core 主机模型详解:Host、WebHost与WebApplication的对比与实践【代码之美】
  • 实现优雅的分页导航:从原理到最佳实践
  • Java查询数据库表信息导出Word
  • C++ STL priority_queue 详解:从基础到自定义类型
  • Spring Boot YML配置值“011“在代码中变为9的问题解析
  • 济南国网数字化培训班学习笔记-第二组-4节-输电线路工程安全管理
  • 二分小专题
  • 1Panel+Halo快速部署:简化服务器管理与网站搭建流程探索
  • MySQL 报错解析:SQLSyntaxErrorException caused by extra comma before FROM
  • 美团获全国首张低空物流全境覆盖运营合格证,其第四代无人机具备全域环境适应能力
  • redis经典问题
  • Redis 基础和高级用法入门
  • 【每天一个知识点】熵(Entropy)
  • Redis 核心应用场景
  • Linux 网络基础三 (数据链路层协议:以太网协议、ARP 协议)
  • Linux系统的延迟任务及定时任务
  • 济南国网数字化培训班学习笔记-第二组-6-输电线路现场教学
  • 一个开源且具有直观视觉界面的 API,可实现 DeepSeek 与 SillyTavern 的非官方集成。
  • 关于QT信号、槽、槽函数的讲解