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

pandas 的series和dataframe的用法,六个题目

  1. 创建与访问
    题目:创建一个包含 7 个元素的 Series(索引为周一至周日),值为某周每天的气温(自行设定),并完成:

    • 访问周三的气温
    • 筛选出气温高于 30℃ 的天数
      # 题目1:创建与访问
      print("=== 题目1:创建与访问 ===")
      # 创建Series(周一至周日的气温)
      temperatures = pd.Series([28, 30, 32, 29, 31, 27, 26],index=['周一', '周二', '周三', '周四', '周五', '周六', '周日']
      )
      print("气温数据:")
      print(temperatures)# 访问周三的气温
      print("\n周三的气温:", temperatures['周三'])# 筛选出气温高于30℃的天数
      print("气温高于30℃的天数:")
      print(temperatures[temperatures > 30])

  2. 数据筛选与修改
    题目:给定一个包含 "姓名"、"年龄"、"成绩" 列的 DataFrame,完成:

    • 筛选出年龄大于 20 且成绩在 80 分以上的行
    • 将所有成绩低于 60 分的记录修改为 "不及格"(原成绩列保留数值,新增 "是否及格" 列)
      # 题目2:数据筛选与修改
      print("\n=== 题目2:数据筛选与修改 ===")
      # 创建DataFrame
      data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'],'年龄': [19, 21, 22, 18, 23],'成绩': [85, 76, 92, 58, 63]
      }
      df = pd.DataFrame(data)
      print("原始数据:")
      print(df)# 筛选出年龄大于20且成绩在80分以上的行
      filtered = df[(df['年龄'] > 20) & (df['成绩'] > 80)]
      print("\n年龄大于20且成绩在80分以上的记录:")
      print(filtered)# 新增"是否及格"列
      df['是否及格'] = df['成绩'].apply(lambda x: '及格' if x >= 60 else '不及格')
      print("\n添加是否及格列后的数据:")
      print(df)

  3. 缺失值处理
    题目:有一个包含缺失值的 DataFrame(包含 "日期"、"销售额" 列),请:

    • 检测并统计各列缺失值数量
    • 用该列的平均值填充销售额的缺失值
    • 删除日期列仍有缺失值的行
      # 题目3:缺失值处理
      print("\n=== 题目3:缺失值处理 ===")
      # 创建包含缺失值的DataFrame
      dates = pd.date_range(start='2023-01-01', periods=7)
      sales = [1000, np.nan, 1200, np.nan, 1500, 1300, np.nan]
      sales_df = pd.DataFrame({'日期': dates, '销售额': sales})
      print("包含缺失值的数据:")
      print(sales_df)# 检测并统计各列缺失值数量
      print("\n各列缺失值数量:")
      print(sales_df.isnull().sum())# 用平均值填充销售额的缺失值
      sales_mean = sales_df['销售额'].mean()
      sales_df['销售额'] = sales_df['销售额'].fillna(sales_mean)
      print("\n填充缺失值后的销售额数据:")
      print(sales_df)

  4. 数据合并
    题目:现有两个 DataFrame:

    • df1 包含 "学生 ID"、"姓名"
    • df2 包含 "学生 ID"、"语文成绩"、"数学成绩"
      请将两表根据 "学生 ID" 合并,并新增 "总成绩" 列(语文 + 数学)
      # 题目4:数据合并
      print("\n=== 题目4:数据合并 ===")
      # 创建两个DataFrame
      df1 = pd.DataFrame({'学生ID': [1, 2, 3, 4],'姓名': ['张三', '李四', '王五', '赵六']
      })df2 = pd.DataFrame({'学生ID': [1, 2, 3, 5],'语文成绩': [85, 92, 78, 88],'数学成绩': [90, 88, 95, 76]
      })print("学生信息:")
      print(df1)
      print("\n成绩信息:")
      print(df2)# 合并两个DataFrame
      merged_df = pd.merge(df1, df2, on='学生ID', how='outer')
      print("\n合并后的数据:")
      print(merged_df)# 新增总成绩列
      merged_df['总成绩'] = merged_df['语文成绩'] + merged_df['数学成绩']
      print("\n添加总成绩后的数据:")
      print(merged_df)

  5. 分组与聚合
    题目:对一个包含 "部门"、"姓名"、"工资" 列的 DataFrame,按部门分组后计算:

    • 各部门的平均工资
    • 每个部门工资最高的员工姓名及工资
      # 题目5:分组与聚合
      print("\n=== 题目5:分组与聚合 ===")
      # 创建员工数据
      employees = pd.DataFrame({'部门': ['技术部', '技术部', '市场部', '市场部', '人事部', '技术部'],'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八'],'工资': [8000, 9500, 7500, 8500, 7000, 10000]
      })
      print("员工数据:")
      print(employees)# 按部门分组计算平均工资
      dept_avg_salary = employees.groupby('部门')['工资'].mean()
      print("\n各部门平均工资:")
      print(dept_avg_salary)# 每个部门工资最高的员工
      max_salary = employees.groupby('部门')['工资'].max()
      # 合并获取最高工资员工的完整信息
      result = pd.merge(employees, max_salary, on=['部门', '工资'], how='inner')
      print("\n各部门工资最高的员工:")
      print(result)

  6. 数据转换
    题目:将一个 Series(值为字符串,格式如 "2023-10-01")转换为:

    • datetime 类型
    • 新增一个 Series 存储对应的月份(1-12)
    • 统计每个月份出现的次数
      # 题目6:数据转换
      print("\n=== 题目6:数据转换 ===")
      # 创建日期字符串Series
      date_series = pd.Series(['2023-10-01', '2023-10-15', '2023-11-02', '2023-11-20', '2023-12-05', '2024-01-10'
      ])
      print("原始日期字符串:")
      print(date_series)# 转换为datetime类型
      date_series = pd.to_datetime(date_series)
      print("\n转换为datetime类型后:")
      print(date_series)# 提取月份
      month_series = date_series.dt.month
      print("\n提取的月份:")
      print(month_series)# 统计每个月份出现的次数
      month_counts = month_series.value_counts().sort_index()
      print("\n每个月份出现的次数:")
      print(month_counts)

http://www.lryc.cn/news/595463.html

相关文章:

  • 牛客网题解 | 单词识别
  • Playwright-MCP浏览器会话复用全解析
  • 腾讯客户端开发面试真题分析
  • Mac上安装Homebrew的详细步骤
  • 语义化版本规范(SemVer)
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十六天
  • CS课程项目设计4:支持AI人机对战的五子棋游戏
  • Java学习-----AIO模型
  • 2025杭电多校赛(2)1006 半
  • 对称加密技术详解:原理、算法与实际应用
  • 代码随想录算法训练营二十二天|回溯part04
  • 关于线程的例子
  • 【力扣】第42题:接雨水
  • 复制docker根目录遇到的权限问题
  • 模拟高负载测试脚本
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十八课——图像膨胀的FPGA实现
  • 关于Ajax的学习笔记
  • Linux的相关指令
  • 「日拱一码」034 机器学习——插值处理
  • Unity 脚本生命周期详解与实战分析
  • (十九)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(上)——理论篇
  • iOS 加固工具有哪些?快速发布团队的实战方案
  • RIQ模型时间管理方法详解
  • 工业自动化中的协议转换:RS485转PROFIBUS网关在涡街流量计与S7-300 PLC通信中的应用
  • Swap Face 使用遇到的问题
  • Match宣布2025曼谷发布会,发布“保本”资管新范式,旨在重塑Web3投资规则
  • 20250720问答课题-基于BERT与混合检索问答系统代码解读
  • 企业开发转型 | 前端AI化数字化自动化现状
  • 自动化商品监控:利用淘宝API开发实时价格库存采集接口
  • 【unitrix】 6.11 二进制数字标准化模块(normalize.rs)