请选择 进入手机版 | 继续访问电脑版

DW_Pandas_Task6_连接

[复制链接]
小甜心 发表于 2020-12-31 18:57:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
知识点整理

一、关系型毗连

1.毗连的根本概念

原则:只要双方同时出现的值,就以笛卡尔积的方式到场,如果单边出现则根据毗连形式举行处理
毗连形式:
1)左毗连、右毗连:以左(右)的键有方向性的添加值
2)内毗连、外毗连:取键的交集大概并集
2.值毗连

merge函数实现
left_on right_on :指定两个表中想要毗连不具备相同的列名的列
suffixes:指定两个表中的列出现重复的列名
on:多列为键包管正确毗连
毗连模式:一对一、一对多、多对一
3. 索引毗连

join函数实现
左右后缀 lsuffix rsuffix:指定两个表中的列出现重复的列名
多级索引来实现多列为键
二、方向毗连

1.concat

实现多表的拼接
参数明白:
axis:0,表现按列添加;1,表现横向扩展
join:指明毗连形式,inner大概outer(默认)。
concat是按照索引对齐,索引多表直接归并时,可以先用reset_index对整数索引举行规复
keys:表明新表中的数据源
2.序列与表的归并

1)append将序列添加到表的行末
ignore_index=True 对新序列对应索引的自动标号
2)assign将序列添加到表的列末,返回暂时副本
三、类毗连

1.比较

compare:比较两个表中的差别处,相同值用NAN填充
keep_shape=True 显示所有比较效果
2.组合

1)补习索引知识:
reindex:重定名索引,如果新索引不存在原索引中,默认填充 NaN。 一般用于将已经存在的索引举行重排。
  1. s2=pd.Series([111,222,333,444],index=['h1','h2','c3','c4'])new_index=['c4','c3','h2','h0','h1']s2.reindex(new_index)
复制代码

reindex_like:用另一个 df 的索引来更新当前 df 的索引,原索引中不存在的默认填充 nan
  1. s2=pd.Series([111,222,333,444],index=['h1','h2','c3','c4'])s1=pd.Series([2020,2021,2022,2023,2024],index=['c1','c2','c3','c4','c5'])s1.reindex_like(s2)
复制代码

2)逻辑替换
where 函数在传入条件为 False 的对应行举行替换,而 mask 在传入条件为 True 的对应行举行替换,当不指定替换值时,替换为缺失值
3)combine自建案例明白 GYH大佬的例子看不太懂
  1. df1 = pd.DataFrame({'A':[1,2], 'B':[3,4], 'C':[5,6]})df2 = pd.DataFrame({'B':[5,6], 'C':[7,8], 'D':[9,10]}, index=[1,2])def my_sum(s1,s2): return s1+s2df1.combine(df2,my_sum)
复制代码

  1. df1.combine(df2, my_sum, overwrite=False)
复制代码

训练题


分析:
在219个表中各取一行(New York)、索引为Confirmed, Deaths, Recovered, Active的数据,新表中行索引是表名。
索引一章中,loc[,] 可以取出基于元素对应行、列的值,返回序列,故使用loc索引器从表中取值出序列,在使用本章的append实现序列与表的毗连
答案如下:
  1. import numpy as npimport pandas as pdresult=pd.DataFrame(columns=['Confirmed','Deaths','Recovered','Active'])date = pd.date_range('20200412', '20201116').to_series()date = date.dt.month.astype('string').str.zfill(2) +'-'+ date.dt.day.astype('string').str.zfill(2) +'-'+ '2020'for d in date:    df= pd.read_csv('D:/Program Files/python/joyful-pandas-master/data/us_report/' + d + '.csv')    df=df.set_index('Province_State')    s = df.loc['New York',['Confirmed','Deaths','Recovered','Active']]#返回序列       result=result.append(s)result.index = dateresult
复制代码


来源:https://blog.csdn.net/haohaoxuexidexiaocai/article/details/111869656
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )