当前位置: 首页 > 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和异常值

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

相关文章:

  • 如何在Spring Boot中配置自定义端口运行应用程序
  • Linux GPIO驱动开发实战:Poll与异步通知双机制详解
  • 方案研读:106页华为企业架构设计方法及实例【附全文阅读】
  • 在深度学习中FLOPs和GFLOPs的含义及区别
  • C语言编程--16.删除链表的倒数第n个节点
  • C# 结构(Struct)
  • 【“星睿O6”AI PC开发套件评测】开箱+刷机+基础环境配置
  • 在Ubuntu 18.04 和 ROS Melodic 上编译 UFOMap
  • 进入救援模式(物理服务器)
  • LeetCode238_除自身以外数组的乘积
  • untiy 实现点击按钮切换天空盒子
  • 手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏
  • Vivado22 Vcs18仿真联调原语缺失
  • DNS实验
  • STM32F407使用ESP8266实现阿里云OTA(中)
  • Python学习之路(五)-接口API
  • Java Thread类深度解析:构造方法与核心方法全攻略
  • 运算符重载 (Operator Overloading)
  • RPCRT4!NDRSContextUnmarshall2函数分析
  • IEEE综述 | 车道拓扑推理20年演进:从程序化建模到车载传感器
  • 一周文化讲座|“不一样的社会观察”
  • 潘功胜:央行将实施好适度宽松的货币政策,推动中国经济高质量发展
  • 药企销售的茶碱层层流转后部分被用于制毒,销售人员一审被判15年
  • 新华视点丨广西抗旱一线调查
  • 打破“内卷”与“焦虑”怪圈,在阅读中寻找松弛感
  • 吃饭睡觉打国米,如今的米兰把意大利杯当成宝