0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享10个Pandas在实际应用中肯定会用到的技巧

数据分析与开发 来源:机器之心 作者:机器之心 2022-11-21 14:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


	

pandas是数据科学家必备的数据处理库,我们今天总结了10个在实际应用中肯定会用到的技巧。

1、Select from table where f1=’a’ and f2=’b’

使用AND或OR选择子集:

dfb=df.loc[(df.Week==week)&(df.Day==day)]
OR的话是这样dfb=df.loc[(df.Week==week)|(df.Day==day)]

2、Select where in

从一个df中选择一个包含在另外一个df的数据,例如下面的sql

select*fromtable1wherefield1in(selectfield1fromtable2)

我们有一个名为“days”的df,它包含以下值。

3bcecdd4-6955-11ed-8abf-dac502259ad0.png

如果有第二个df:

3be44466-6955-11ed-8abf-dac502259ad0.png

可以直接用下面的方式获取

days=[0,1,2]
df[df(days)]

3、Select where not in

就像IN一样,我们肯定也要选择NOT IN,这个可能是更加常用的一个需求,但是却很少有文章提到,还是使用上面的数据:

days=[0,1,2]
df[~df(days)]

使用~操作符就可以了

3bfd4f4c-6955-11ed-8abf-dac502259ad0.png

4、select sum(*) from table group by

分组统计和求和也是常见的操作,但是使用起来并不简单:

df(by=['RepID','Week','CallCycleDay']).sum()

如果想保存结果或稍后使用它们并引用这些字段,请添加 as_index=False

df.groupby(by=['RepID','Week','CallCycleDay'],as_index=False).sum()

3c14cc94-6955-11ed-8abf-dac502259ad0.png

使用as_index= false,可以表的形式保存列

5、从一个表更另外一个表的字段

我们从一个df中更改了一些值,现在想要更新另外一个df,这个操作就很有用。

dfb=dfa[dfa.field1='somevalue'].copy()
dfb['field2']='somevalue'
dfa.update(dfb)

这里的更新是通过索引匹配的。

6、使用apply/lambda创建新字段

我们创建了一个名为address的新字段,它是几个字段进行拼接的。

dfa['address']=dfa.apply(lambdarow:row['StreetName']+','+
row['Suburb']+','+str(row['PostalCode']),axis=1)

7、插入新行

插入新数据的最佳方法是使用concat。我们可以用有pd. datafframe .from_records一将新行转换为df。

newRow=row.copy()
newRow.CustomerID=str(newRow.CustomerID)+'-'+str(x)
newRow.duplicate=True
df=pd.concat([df,pd.DataFrame.from_records([newRow])])

8、更改列的类型

可以使用astype函数将其快速更改列的数据类型

df=pd.read_excel(customers_.xlsx')
df['Longitude']=df['Longitude'].astype(str)
df['Latitude']=df['Longitude'].astype(str)

9、删除列

使用drop可以删除列:

defcleanColumns(df):
forcolindf.columns:
ifcol[0:7]=="Unnamed":
df.drop(col,inplace=True,axis=1)
returndf

10、地图上标注点

这个可能是最没用的技巧,但是他很好玩

这里我们有一些经纬度的数据:

3c37a2b4-6955-11ed-8abf-dac502259ad0.png

现在我们把它根据经纬度在地图上进行标注:

df_clustercentroids=pd.read_csv(centroidFile)
lst_elements=sorted(list(dfm.cluster2.unique()))
lst_colors=['#%06X'%np.random.randint(0,0xFFFFFF)foriinrange(len(lst_elements))]
dfm["color"]=dfm["cluster2"]
dfm["color"]=dfm["color"].apply(lambdax:lst_colors[lst_elements.index(x)])

m=folium.Map(location=[dfm.iloc[0].Latitude,dfm.iloc[0].Longitude],zoom_start=9)

forindex,rowindfm.iterrows():
folium.CircleMarker(location=[float(row['Latitude']),float(row['Longitude'])],radius=4,popup=str(row['RepID'])+'|'+str(row.CustomerID),color=row['color'],fill=True,fill_color=row['color']
).add_to(m)

forindex,rowindf_clustercentroids.iterrows():
folium.Marker(location=[float(row['Latitude']),float(row['Longitude'])],popup=str(index)+'|#='+str(dfm.loc[dfm.cluster2==index].groupby(['cluster2'])['CustomerID'].count().iloc[0]),icon=folium.Icon(color='black',icon_color=lst_colors[index]),tooltip=str(index)+'|#='+str(dfm.loc[dfm.cluster2==index].groupby(['cluster2'])['CustomerID'].count().iloc[0])).add_to(m)

m

结果如下:

3c62f5cc-6955-11ed-8abf-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7315

    浏览量

    93998
  • SQL
    SQL
    +关注

    关注

    1

    文章

    789

    浏览量

    46377

原文标题:分享 10 个 Pandas 的小技巧!

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CANdelaStudio中如何修改肯定响应抑制位

    首先打开cddt文件,点击ProtocolServices,找到对应的诊断服务,如19服务;2、然后右击选择Properties;3、最后点击右侧手指的图标,修改对应寻址方式下的肯定响应抑制位置1或者置0,保存即可。
    的头像 发表于 12-02 10:27 137次阅读
    <b class='flag-5'>在</b>CANdelaStudio中如何修改<b class='flag-5'>肯定</b>响应抑制位

    为什么电能表中的初级变压器保护会用到PTC热敏电阻?

    电表(无论是家用智能电表还是工业电表)之所以会用到PTC热敏电阻,正是因为它完美契合了电表对可靠性、安全性和免维护的极高要求。 保护通讯接口(最核心的应用) 现代电表(尤其是智能电表)都具备数据远程
    发表于 11-27 14:29

    哪些场合会用到volatile关键字?

    当你理解 volatile关键字的含义之后,你就能明白,其实很多场合都能用到 volatile关键字。 1.全局变量单片机开发,难免会用到全局变量。一些初级工程师,更是全局变量满天飞。这种情况下
    发表于 11-25 08:19

    哪些电子产品会用到贴片Y电容?

    贴片Y电容,又称为表面贴装Y电容,外观通常为扁平的矩形,是一种特殊的电容器类型。由于其独特的性能优势用于许多电子产品。哪些电子产品会用到贴片Y电容呢?
    的头像 发表于 11-13 11:05 256次阅读
    哪些电子产品<b class='flag-5'>会用到</b>贴片Y电容?

    监测气象会用到哪些传感器

    监测气象需要使用多种传感器来精确测量不同气象要素,这些传感器基于物理、化学或电子原理,能够实时、连续地采集数据。以下是监测气象时常用的传感器类型及其功能: 1. 温度传感器 功能 :测量空气、土壤或水体的温度。 类型 : 热敏电阻 :通过电阻值随温度变化的特性测量温度。 热电偶 :利用两种金属的温差产生电动势来测量温度。 红外传感器 :非接触式测量,通过物体辐射的红外线强度推算温度。 应用 :气象站、农业温室、工业过程控
    的头像 发表于 09-16 09:57 760次阅读

    【中科昊芯Core_DSC280025C开发板试用体验】+3.DSP基础外设调试(含源码)

    的文件。 至于中断函数中,肯定会涉及到一些业务逻辑相关数据和功能函数,所以,我增加了回调函数机制(这个是参考ST的Hal库机制) 这样的好处是,工程文件不会交叉调用,看起来没有那么乱糟糟的。当然,这只
    发表于 07-13 16:07

    工业物联网网关会用到哪些电子模组

    工业物联网网关通常会用到通信模组、主控模组、安全模组、接口扩展模组和电源管理模组等,以下是具体介绍: 通信模组:用于实现网关与外部网络或设备的通信连接。常见的有5G/4G模组,如华为MH5000、移
    的头像 发表于 07-11 17:56 734次阅读

    工业RTU会用到哪些芯片

    工业RTU(远程终端单元)通常会用到处理器芯片、通信芯片、数据采集芯片、存储芯片和电源管理芯片等。
    的头像 发表于 07-05 09:15 572次阅读

    工业网关会用到哪些芯片

    工业网关通常会集成多种芯片以满足其复杂的功能需求,具体可能会用到以下几类芯片: 处理器芯片:这是工业网关的核心部件,负责执行控制指令、数据处理以及运行操作系统等任务。可能会采用高性能的ARM架构
    的头像 发表于 07-03 17:26 544次阅读

    HTTP协议工业领域会用到

    HTTP协议工业领域会用到,并且工业互联网、设备管理、数据交互等多个方面发挥着重要作用,以下为你详细介绍: 工业互联网场景 设备接入与管理 原理:工业互联网平台中,各类工业设备(
    的头像 发表于 06-03 09:17 524次阅读

    实际硬件设计中非常经典巧妙的20电路合集,带分析,收藏起来慢慢看!

    1、防反接保护(二极管)实际电子设计中,防反接保护电路非常重要,不要觉得自己肯定不会接错,实际上无论多么小心,还是会犯错误......最简单的就是利用二极管了,利用二极管的单向导电性
    发表于 03-24 13:49

    请问DMD芯片可以用透明硅胶胶封不?

    DMD芯片是由精微反射镜面组成的,这些镜面肯定会有开合的,不知道这些镜面的上层是否有玻璃等透明材质做隔离,要是有的话,感觉理论上是可以用透明硅胶对DMD芯片做整体胶封的?
    发表于 02-26 06:03

    如何通过仿真准确的预测信号完整性

    ,我们就可以计算得到信号的带宽。一般来说芯片厂家提供的仿真模型无论是IBIS还是Spice模型都是很信号带宽相匹配的。比如说一器件的IBIS模型中肯定不会包含serdes信号的模型,如果器件中有serdes接口厂家肯定会提供S
    的头像 发表于 01-22 11:51 2466次阅读
    如何通过仿真准确的预测信号完整性

    对于PD信号,是要用到数字GND,还是模拟GND比较好?

    对于ADC芯片,数字信号模拟信号都会用到各自的GND(数字GND/模拟GND) 那么对于PD(Power down)信号,是要用到数字GND,还是模拟GND比较好?
    发表于 01-16 07:48

    LabVIEW抽象消息使用教程(上)

    自学LabVIEW的Actor FrameWork的消息与抽象消息的时候肯定会觉得非常模糊。小编将给大家带来一有关抽象消息的教程,分为上下两期,本期将带领大家创建Actor中的方法并为方法创建对应的消息。
    的头像 发表于 01-03 14:22 2041次阅读
    LabVIEW抽象消息使用教程(上)