python pandas.DataFrame 数据合并

2024-08-26 12:38

本文主要是介绍python pandas.DataFrame 数据合并,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# -*- coding: utf-8 -*-# encoding=utf-8
from __future__ import division
import numpy as np
import xlwt
import os
#  导入matplot 函数
import matplotlib.pyplot as matplot_pyplot
#  导入拉格朗日插值函数
from scipy.interpolate import lagrangenp.random.seed(12345)
matplot_pyplot.rc('figure', figsize=(10, 6))
from pandas import Series, DataFrame
import pandas as pdnp.set_printoptions(precision=4, threshold=500)
pd.options.display.max_rows = 100
#  缺失值处理---拉格朗日插值法
#  销量数据路径
inputFile = 'd:/data/catering_sale.xls'
#  输出数据路径
outputFile = 'd:/data/sales.xls'
#  读入数据
data = pd.read_excel(inputFile)
#  过滤异常值
data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None# s 为列向量,n 为被插值的位置,k 为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):#  取数y = s[list(range(n - k, n)) + list(range(n + 1, n + 1 + k))]#  剔除空值y = y[y.notnull()]  # 剔除空值return lagrange(y.index, list(y))(n)  # 插值并返回插值结果# 逐个元素判断是否需要插值
for i in data.columns:for j in range(len(data)):if (data[i].isnull())[j]:  # 如果为空即插值data[i][j] = ployinterp_column(data[i], j)
# data.to_excel(outputFile) # 输出结果,写入文件
# print data### dataframe 合并
# - Merge 方法:根据一个或多个键将不同dataFrame 中的行合并
# - Concat方法:沿一条轴将多个对象堆叠起来# 数据风格的DataFrame 合并
# - Merge
#  - Merge 参数df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],'data': range(7)})
df2 = pd.DataFrame({'key': ['a', 'b', 'd'],'data2': range(3)})
print 'df1:=\n', df1
print 'df2;=\n', df2pd.merge(df1, df2)pd.merge(df1, df2, on='key')# 2
df3 = pd.DataFrame({'lkey': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],'data1': range(7)})
print 'df3:=\n', df3
df4 = pd.DataFrame({'rkey': ['a', 'b', 'd'],'data2': range(3)})
print 'df4:=\n', df4
#  内连接
df3_merge_df4 = pd.merge(df3, df4, left_on='lkey', right_on='rkey')
print 'df3_merge_df4:=\n', df3_merge_df4
#  外连接
df1_merge_df2 = pd.merge(df1, df2, how='outer')
print 'df1_merge_df2:=\n', df1_merge_df2
#  左连接
df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],'data1': range(6)})
df2 = pd.DataFrame({'key': ['a', 'b', 'a', 'b', 'd'],'data2': range(5)})
print 'df1:=\n', df1
print 'df2:=\n', df2
#  左连接
df1_left_df2 = pd.merge(df1, df2, on='key', how='left')
print 'df1_left_df2:=\n', df1_merge_df2
#  内连接
df1_inner_df2 = pd.merge(df1, df2, how='inner')
print 'df1_inner_df2:=\n', df1_inner_df2
# 4
left = pd.DataFrame({'key1': ['foo', 'foo', 'bar'],'key2': ['one', 'two', 'one'],'key3': [1, 2, 3]})
right = pd.DataFrame({'key1': ['foo', 'foo', 'bar', 'bar'],'key2': ['one', 'one', 'one', 'two'],'rval': [4, 5, 6, 7]})
print 'left:=\n', left
print 'right:=\n', right
left_merge_right = pd.merge(left, right, on=['key1', 'key2'], how='outer')#
left_on_right = pd.merge(left, right, on='key1')
print 'left_on_right:=\n', left_on_right
left_one_right = pd.merge(left, right, on='key1', suffixes=('_left', '_right'))
print 'left_on_right:=\n', left_on_right# 索引上的合并
#  轴向连接
#  - Numpy 数组 -----concatenation
#  - Pandas 对象 ----concat
#  -- Concat 对象
# 1
left1 = pd.DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'],'value': range(6)})
right1 = pd.DataFrame({'group_val': [3.5, 7]}, index=['a', 'b'])
print 'left1:=\n', left1
print 'right1:=\n', right1
left_index_right = pd.merge(left1, right1, left_on='key', right_index=True)
print 'left_index_right:=\n', left_index_right# 2
lefth = pd.DataFrame({'key1': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'key2': [2000, 2001, 2002, 2001, 2002],'data': np.arange((5.))})
righth = pd.DataFrame(np.arange(12).reshape((6, 2)),index=[['Nevada', 'Nevada', 'Ohio', 'Ohio', 'Ohio', 'Ohio'],[2001, 2000, 2000, 2000, 2001, 2002]],columns=['event1', 'event2']
)
print 'lefth:=\n', lefth
print 'righth:=\n', righth
lefth_merge_righth = pd.merge(lefth, righth,left_on=['key1', 'key2'],right_index=True)
print 'lefth_merge_righth:=\n', lefth_merge_righth
left2 = pd.DataFrame([[1., 2], [3., 4], [5., 6]],index=['a', 'c', 'e'],columns=['Ohio', 'Nevada']
)
right2 = pd.DataFrame([[1., 2], [3., 4], [5., 6]],index=['a', 'b', 'e'],columns=['Ohio', 'Nevada']
)print 'left2:=\n', left2
print 'right2:=\n', right2
left2_right2 = pd.merge(left2, right2, how='outer', left_index=True, right_index=True)
print 'left2_right2:=\n', left2_right2
# 3
left2 = pd.DataFrame([[1., 2], [3., 4], [5., 6]], index=['a', 'c', 'e'],columns=['Ohio', 'Nevada'])
right2 = pd.DataFrame([[7., 8.], [9., 10.], [11., 12.], [13, 14]],index=['b', 'c', 'd', 'e'],columns=['Missouri', 'Alabama'])
print 'left2:=\n', left2
print 'right2:=\n', right2left2_join_right2 = left2.join(right2, how='outer')
print 'left1:=\n', left1
print 'right1:=\n', right1
left1_merge_right1 = pd.merge(left1, right1, left_on='key', right_index=True)
print 'left1_merge_right1:=\n', left1_merge_right1
left1_join_right1 = left1.join(right1, on='key')
print 'left2_join_right2:=\n', left1_join_right1
# 4
another = pd.DataFrame([[7, 8], [9, 10], [11, 12], [16, 17]],index=['a', 'c', 'e', 'f'],columns=['New York', 'Oregon'])
#  多表外连接
left2_join_right2_another = left2.join([right2, another])
print 'another:=\n', another
print 'left2:=\n', left2
print 'right2:=\n', right2
print 'left2_join_right2_another:=\n', left2_join_right2_another
left2_outer_join_right2_another = left2.join([right2, another], how='outer')
print 'left2_outer_join_right2_another:=\n', left2_join_right2_another
#  轴向连接
#  Numpy数组 ---concatenation
#  Panda 对象 --- concat
#  Concat 的参数
arr=np.arange(12).reshape((3,4))
print arr

这篇关于python pandas.DataFrame 数据合并的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1108593

相关文章

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程