写作的网站哪个好,国家工商网官网登录入口,智慧团建网站注册登录入口,合肥seo网站优化目录 一、Series#xff1a;一维带标签的数组
二、DataFrame#xff1a;二维表格型数据结构
三、Series 的核心操作
四、 DataFrame 的核心操作
五、 索引的特殊用法
六、 loc 与 iloc#xff1a;DataFrame 的高级查询
七、综合案例 一、Series#xff1a;一维带标签…
目录 一、Series一维带标签的数组
二、DataFrame二维表格型数据结构
三、Series 的核心操作
四、 DataFrame 的核心操作
五、 索引的特殊用法
六、 loc 与 ilocDataFrame 的高级查询
七、综合案例 一、Series一维带标签的数组
Series 是 pandas 中最基础的一维数据结构由数据值和索引index 组成可理解为 “带标签的列表”。
核心特点 可通过索引或位置快速访问、修改数据。数据值可以是数值、字符串等多种类型索引可以是自定义标签如字符串或默认整数从 0 开始代码示例
import pandas as pd# 1. 基于列表创建默认整数索引
s_1 pd.Series([1, 2, 3, 4, 5])
print(s_1)# 输出 # 0 1 # 1 2 # 2 3 # 3 4 # 4 5 # dtype: int64
# 2. 自定义索引字符串标签
s_2 pd.Series([1, 2, 3, 4, 5], index[a, b, c, d, e])
print(s_2[d]) # 通过标签访问输出4
print(s_2[4]) # 通过位置访问输出5
# 3. 基于字典创建键为索引值为数据
dic_1 {name1: Peter, name2: tim, name3: rose}
s_4 pd.Series(dic_1)
print(s_4)# 输出 # name1 Peter # name2 tim # name3 rose # dtype: object
# 4. 常用操作修改值、删除元素
s_2[0] 100 # 修改第一个元素值
s_2 s_2.drop(a) # 删除索引为a的元素
二、DataFrame二维表格型数据结构
DataFrame 是 pandas 中最常用的二维数据结构类似 Excel 表格或数据库表由行索引、列名和数据值组成可视为 “多个 Series 的拼接”每一列是一个 Series。
核心特点
行和列都有标签行索引 index列名 columns支持灵活的增删改查、排序、筛选等操作可通过字典、数组等多种方式创建。
代码示例
import pandas as pd# 1. 基于字典创建键为列名值为列数据
dic {name: [kiti, beta, peter, tom],age: [20, 18, 35, 21],gender: [f, f, m, m]}
df pd.DataFrame(dic)
print(df)# 输出 # name age gender # 0 kiti 20 f # 1 beta 18 f # 2 peter 35 m # 3 tom 21 m
# 2. 自定义行索引
df_1 pd.DataFrame({age: [10, 11, 12],name: [tim, tom, rose]},index[person1, person2, person3]) # 行索引为自定义标签
print(df_1.index) # 查看行索引Index([person1, person2, person3], dtypeobject)
print(df_1.columns) # 查看列名Index([age, name], dtypeobject) 三、Series 的核心操作
Series 的操作围绕 “访问、修改、删除” 展开依赖索引或位置实现。
访问数据
s_2 pd.Series([1, 2, 3, 4, 5], index[a, b, c, d, e])# 标签访问单个/多个
print(s_2[d]) # 单个元素4
print(s_2[a:d]) # 切片包含终点a1, b2, c3, d4
print(s_2[[a, d]]) # 多个标签a1, d4# 位置访问类似列表
s_3 pd.Series([lily, rose, jack])
print(s_3[2]) # 单个位置jack
print(s_3[0:2]) # 切片不包含终点lily, rose
修改与删除
s_3[0] Peter # 修改指定位置的值
s_1 s_1.drop(a) # 删除标签为a的元素返回新Series原数据不变 四、 DataFrame 的核心操作
DataFrame 支持行列增删、数据访问、排序、值替换等操作灵活性极高。
数据访问
# 访问列列名作为属性或键
print(df.name) # 等价于df[name]输出name列数据
print(df[[age, name]]) # 访问多列# 访问行标签或位置
print(df.loc[person1]) # 通过行标签访问
print(df.iloc[0:2]) # 通过位置切片访问前2行# 访问单个值
print(df.loc[person1, name]) # 行标签列名tim
增删行列
# 增加列
df[pay] [20, 30, 40, 50] # 新增pay列# 增加行
df.loc[person4] [20, kitty, f, 60] # 新增行指定行标签和数据# 删除列
del df[age] # 直接删除age列
df.drop(name, axis1, inplaceTrue) # 通过drop删除列axis1表示列# 删除行
df.drop(person3, axis0, inplaceTrue) # axis0表示行
排序与值替换
# 按列排序
df.sort_values(by[age]) # 按age升序排序
df.sort_values(by[age], ascendingFalse) # 降序排序ascendingFalse# 值替换
df[gender] df[gender].replace([m, f], [male, female]) # 将m替换为malef替换为female
五、 索引的特殊用法
pandas 的索引index是数据访问的核心支持多种类型如整数、字符串、日期且可灵活重置。
日期索引
import numpy as np
# 生成日期索引2018-01-01到2018-01-05
datas pd.date_range(20180101, periods5)
df1 pd.DataFrame(np.arange(30).reshape(5,6), indexdatas, columns[A,B,C,D,E,F])
print(df1.index) # 输出日期索引DatetimeIndex([2018-01-01, ..., 2018-01-05], dtypedatetime64[ns])
重置索引
s_4 pd.Series({name1: Peter, name2: tim, name3: rose})
s_4.index range(0, len(s_4)) # 将索引重置为0,1,2
六、 loc 与 ilocDataFrame 的高级查询
两种方法用于精确定位数据区别在于索引方式
loc基于标签索引行标签 列名iloc基于位置索引行号 列号从 0 开始。
代码示例
# 基于日期索引的DataFrame
df pd.DataFrame(np.arange(30).reshape(5,6), indexpd.date_range(20180101, periods5),columns[A,B,C,D,E,F])# loc用法标签索引
print(df.loc[20180103, B]) # 2018-01-03行B列的值13
print(df.loc[20180103:, [B, D]]) # 2018-01-03及之后的行B和D列# iloc用法位置索引
print(df.iloc[1, 2]) # 第2行index1第3列columns2的值8
print(df.iloc[[1,2,4], :]) # 第2、3、5行的所有列
七、综合案例
import pandas as pd
import numpy as np# 1. Series常用操作
# 创建Series带自定义索引
sales pd.Series([150, 200, 180, 220], index[一月, 二月, 三月, 四月])
print(1. 月度销售额数据)
print(sales)# 基本访问
print(\n二月销售额, sales[二月]) # 标签访问
print(第一季度销售额\n, sales[0:3]) # 位置切片# 基本计算
print(\n平均月销售额, sales.mean())
print(总销售额, sales.sum())# 修改数据
sales[三月] 190
print(\n修改后三月销售额\n, sales)# 2. DataFrame创建与基础访问
# 从字典创建DataFrame
data {姓名: [张三, 李四, 王五, 赵六],部门: [技术, 市场, 技术, 行政],工资: [8000, 7500, 9000, 6800],入职年份: [2020, 2021, 2019, 2022]
}
df pd.DataFrame(data, index[EMP001, EMP002, EMP003, EMP004])
print(\n2. 员工信息表)
print(df)# 查看基本信息
print(\n数据形状行,列, df.shape)
print(列名, df.columns.tolist())# 列访问
print(\n所有员工工资\n, df[工资])
print(技术部员工\n, df[df[部门] 技术])# 行访问
print(\nEMP002员工信息\n, df.loc[EMP002]) # 标签访问
print(前2名员工信息\n, df.iloc[:2]) # 位置访问# 3. DataFrame数据处理
# 新增列
df[年薪] df[工资] * 12
print(\n3. 添加年薪列后)
print(df)# 修改数据
df.loc[EMP002, 工资] 7800 # 修改特定值
print(\n修改李四工资后\n, df)# 排序
df_sorted df.sort_values(by工资, ascendingFalse) # 降序排序
print(\n按工资排序后\n, df_sorted)# 简单筛选
high_salary df[df[工资] 7500]
print(\n工资超过7500的员工\n, high_salary)# 分组统计
dept_avg df.groupby(部门)[工资].mean()
print(\n各部门平均工资\n, dept_avg)# 4. 数据读取与保存模拟
# 实际使用时替换为真实文件路径
# df.to_csv(employee_data.csv, indexFalse) # 保存为CSV
# new_df pd.read_csv(employee_data.csv) # 读取CSV
print(\n4. 数据读取提示取消注释可实现CSV文件的保存和读取)