标签分类
技术文章
当前位置:主页 > 计算机编程 > python > pandas进行数据的交集与并集方式的合并方式总结

pandas进行数据的交集与并集方式的合并方法详解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:133

pandas进行数据的交集与并集方式的合并方式总结

这篇文章主要知识点是关于pandas,交集,并集,pandas进行数据的交集与并集方式的合并方式总结,pandas数据集的端到端处理 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

全国计算机等级考试二级教程:Python语言程序设计
  • 类型:计算机等级考试大小:7.9 MB格式:PDF出版:高等教育出版社作者:教育部考试中心
立即下载

数据合并有多种方式,其中最常见的应该就是交集和并集的求取。之前通过分析总结过pandas数据merge功能默认的行为,其实默认下求取的就是两个数据的“交集”。

有如下数据定义:

In [26]: df1
Out[26]: 
 data1 key
0  0 b
1  1 b
2  2 a
3  3 c
4  4 a
5  5 a
6  6 b
In [27]: df2
Out[27]: 
 data2 key
0  0 a
1  1 b
2  2 d
3  3 b

进行merge的结果:

In [28]: pd.merge(df1,df2)
Out[28]: 
 data1 key data2
0  0 b  1
1  0 b  3
2  1 b  1
3  1 b  3
4  6 b  1
5  6 b  3
6  2 a  0
7  4 a  0
8  5 a  0

从上面的结果中能够看出,merge的默认处理行为是求取了两组数据key的交集,但是对于key的值进行了并集的求取。其实也很好理解,如果仅仅是求取交集而数据没有任何合并那就不叫做数据合并了。

接下来试一下制定了参数的的交集数据合并处理:

In [29]: pd.merge(df1,df2,how='inner')
Out[29]: 
 data1 key data2
0  0 b  1
1  0 b  3
2  1 b  1
3  1 b  3
4  6 b  1
5  6 b  3
6  2 a  0
7  4 a  0
8  5 a  0
In [30]: result_inner = pd.merge(df1,df2,how='inner')
In [31]: result_default = pd.merge(df1,df2)
In [32]: result_inner == result_default
Out[32]: 
 data1 key data2
0 True True True
1 True True True
2 True True True
3 True True True
4 True True True
5 True True True
6 True True True
7 True True True
8 True True True

通过上面的结果可以看出:制定了参数的的交集数据合并处理的结果与数据合并方法merge的默认行为是一致的。

再试一下并集数据合并处理方法,这需要制定参数how为outer:

In [35]: result_outer = pd.merge(df1,df2,how='outer')
In [36]: result_outer
Out[36]: 
 data1 key data2
0  0.0 b 1.0
1  0.0 b 3.0
2  1.0 b 1.0
3  1.0 b 3.0
4  6.0 b 1.0
5  6.0 b 3.0
6  2.0 a 0.0
7  4.0 a 0.0
8  5.0 a 0.0
9  3.0 c NaN
10 NaN d 2.0

通过上面的执行结果可以看出:合并后的数据中的key拥有了两组数据所有的key,而数据虽然有一部分两组数据不能够重合,但也通过NaN的值进行了相应的填补。

还有一点需要注意的,那就是合并之后的数据个数。合并后的数据中,key的个数是两组数据中分别拥有的数据的笛卡尔乘积。如果其中一组没有的时候,进行合并的时候另一组数据中会创建一个NaN数值的对象与之进行合并。

以上这篇pandas进行数据的交集与并集方式的数据合并方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

pandas数据集的端到端处理

1. 数据集基本信息

df = pd.read_csv()

df.head():前五行;

df.info():

  • rangeindex:行索引;
  • data columns:列索引;
  • dtypes:各个列的类型,
  • 主体部分是各个列值的情况,比如可判断是否存在 NaN 值;

对于非数值型的属性列

  • df[‘some_categorical_columns'].value_counts():取值分布;

df.describe(): 各个列的基本统计信息

  • count
  • mean
  • std
  • min/max
  • 25%, 50%, 75%:分位数

df.hist(bins=50, figsize=(20, 15)):统计直方图;

对 df 的每一列进行展示:

train_prices = pd.DataFrame({'price': train_df.SalePrice, 
    'log(price+1)': np.log1p(train_df.SalePrice)})
 # train_prices 共两列,一列列名为 price,一列列名为 log(price+1)
train_prices.hist()

2. 数据集拆分

def split_train_test(data, test_ratio=.3):
 shuffled_indices = np.random.permutation(len(data))
 test_size = int(len(data)*test_ratio)
 test_indices = shuffled_indices[:test_size]
 train_indices = shuffled_indices[test_size:]
 return data.iloc[train_indices], data.iloc[test_indices]

3. 数据预处理

  • 一键把 categorical 型特征(字符串类型)转化为数值型:
>> df['label'] = pd.Categorical(df['label']).codes
  • 一键把 categorical 型特征(字符串类型)转化为 one-hot 编码:
>> df = pd.get_dummies(df)
  • null 值统计与填充:
>> df.isnull().sum().sort_values(ascending=False).head()
# 填充为 mean 值
>> mean_cols = df.mean()
>> df = df.fillna(mean_cols)
>> df.isnull().sum().sum()
0

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到等python文章进一步学习,感谢大家的阅读和支持。

上一篇:《Python并行编程参考手册》书评、笔记、下载

下一篇:用sklearn进行对数据标准化、归一化以及将数据还原详解

展开 +

收起 -

学习笔记
网友NO.152130

pandas求两个表格不相交的集合方法

Hi,好久不见,我还是那颗翻滚的老鼠屎。处理数据时想求两个表格求不相交的部分,或许是对知识的匮乏限制了我的想象力,并未找到直接求的方法,在这里介绍老鼠屎技己使用的方法,希望对读者会有帮助。 阴影部分为所要求的部分 (但是前提是A、B两个集合都是无重复内容的集合) 首先先造两个DataFrame来做示例。 import pandas as pd a0={"number":range(10),"letter":["a","a","b","b","c","f","f","e","h","w"]} a=pd.DataFrame(a0) b0={"number":range(15),"letter":["b","a","t","b","r","f","g","e","j","w","t","h","i","y","u"]} b=pd.DataFrame(b0) 看一下两个DataFrame的样子 关于差集,我们是要去除两个DataFrame中公共的部分,因此我的想法是: (1)先将两个DataFrame融合为一个DataFrame; (2)去掉当中公共的部分(使用drop_duplicates去重)。 下面来看一下代码: c=a.append(b)c.drop_duplicates(keep=False,inplace=True)c.reset_index() 这里想要说明的是,drop_duplicates当中的参数keep=False,意为重复项全部删除,它还有keep="first"与keep="last",分别对应在有多项重复时,保留第一项(或最后一项)。具体可参考官方文档。 得到的效果是如下所示。虽然过程很简单,但是很好用。 同样的道理可用来求差集,在此不做赘述。 以上这篇pandas求两个表格不相交的集合方法就是小编分享给大家的全部内容了,希望能给……

网友NO.709713

pandas数据集的端到端处理

1. 数据集基本信息 df = pd.read_csv() df.head():前五行; df.info(): rangeindex:行索引; data columns:列索引; dtypes:各个列的类型, 主体部分是各个列值的情况,比如可判断是否存在 NaN 值; 对于非数值型的属性列 df[‘some_categorical_columns'].value_counts():取值分布; df.describe(): 各个列的基本统计信息 count mean std min/max 25%, 50%, 75%:分位数 df.hist(bins=50, figsize=(20, 15)):统计直方图; 对 df 的每一列进行展示: train_prices = pd.DataFrame({'price': train_df.SalePrice, 'log(price+1)': np.log1p(train_df.SalePrice)}) # train_prices 共两列,一列列名为 price,一列列名为 log(price+1)train_prices.hist() 2. 数据集拆分 def split_train_test(data, test_ratio=.3): shuffled_indices = np.random.permutation(len(data)) test_size = int(len(data)*test_ratio) test_indices = shuffled_indices[:test_size] train_indices = shuffled_indices[test_size:] return data.iloc[train_indices], data.iloc[test_indices] 3. 数据预处理 一键把 categorical 型特征(字符串类型)转化为数值型: df['label'] = pd.Categorical(df['label']).codes 一键把 categorical 型特征(字符串类型)转化为 one-hot 编码: df = pd.get_dummies(df) null 值统计与填充: df.isnull().sum().sort_values(ascending=False).head()# 填充为 mean 值 mean_cols = df.mean() df = df.fillna(mean_cols) df.isnull().sum().sum()0 总结 以上就是这篇文章的全部内容了,……

网友NO.506768

利用pandas读取中文数据集的方法

直接利用numpy读取非数字型的数据集时需要先进行转换,而且python3在处理中文数据方面确实比较蛋疼。最近在学习周志华老师的那本西瓜书,需要没事和一堆西瓜反复较劲,之前进行联系的时候都是利用批量替换先清理一遍数据,不过这样实在是太麻烦了,今天偶然发现可以使用pandas来实现读取中文数据集的功能。 首先分享一下数据集: 编号,色泽,根蒂,敲声,纹理,脐部,触感,密度,含糖率,好瓜 1,青绿,蜷缩,浊响,清晰,凹陷,硬滑,0.697,0.46,是 2,乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,0.774,0.376,是 3,乌黑,蜷缩,浊响,清晰,凹陷,硬滑,0.634,0.264,是 4,青绿,蜷缩,沉闷,清晰,凹陷,硬滑,0.608,0.318,是 5,浅白,蜷缩,浊响,清晰,凹陷,硬滑,0.556,0.215,是 6,青绿,稍蜷,浊响,清晰,稍凹,软粘,0.403,0.237,是 7,乌黑,稍蜷,浊响,稍糊,稍凹,软粘,0.481,0.149,是 8,乌黑,稍蜷,浊响,清晰,稍凹,硬滑,0.437,0.211,是 9,乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,0.666,0.091,否 10,青绿,硬挺,清脆,清晰,平坦,软粘,0.243,0.267,否 11,浅白,硬挺,清脆,模糊,平坦,硬滑,0.245,0.057,否 12,浅白,蜷缩,浊响,模糊,平坦,软粘,0.343,0.099,否 13,青绿,稍蜷,浊响,稍糊,凹陷,硬滑,0.639,0.161,否 14,浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,0.657,0.198,否 15,乌黑,稍蜷,浊响,清晰,稍凹,软粘,0.36,0.37,否 16,浅白,蜷缩,浊响,模糊,平坦,硬滑,0.593,0.042,否 17,青绿,蜷缩……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明