服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

7个极其重要的Pandas函数!

日期: 来源:简说Python收集编辑:尤而小屋

公众号:尤而小屋
作者:Peter
编辑:Peter

本文介绍Pandas中7个极其重要的函数,它们在日常的数据分析会经常使用。

  • isnull
  • apply
  • groupby
  • unique
  • reset_index
  • sort_values
  • to_csv

同时你还将学会如何造假数据

模拟数据

通过numpy和pandas库模拟一份数据,使用了numpy.random.choice方法

In [1]:

import pandas as pd
import numpy as np

In [2]:

names = ["apple","orange","pear","grape","banana","cantaloupe"]

places = ["陕西","江西","山西","甘肃","新疆","江苏","浙江"]

In [3]:

df = pd.DataFrame({"name": np.random.choice(names, 30),  # 名称
                   "place": np.random.choice(places, 30),  # 产地
                   "price": np.random.randint(1,10,30),  # 单价
                   "weight":np.random.randint(100,1000,30)  # 重量
                  })

df.head(10)  # 显示前10条数据

函数1:isnull

查看数据中的缺失值信息。

下面是直接查看数据中的每个位置是否为缺失值:是为True;否为False

In [4]:

df.isnull()  

查看每个字段是否存在缺失值;在执行sum的时候,False表示0,True表示1:

In [5]:

df.isnull().sum()  

Out[5]:

name      0
place     0
price     0
weight    0
dtype: int64

上面的结果默认是在列方向上求和;可以执行在行axis=1上求和:

In [6]:

df.isnull().sum(axis=1)  

函数2:apply

apply能够对pandas中的数据进行批量操作。

1、单个字段的操作

比如将name字段全部变成首字母大写:

In [7]:

df["new_name"] = df["name"].apply(lambda x: x.title())

df.head()

2、多个字段的同时操作:

比如根据price和weight求乘积,结果为amount:

In [8]:

df["amount"] = df[["price","weight"]].apply(lambda x: x["price"] * x["weight"], axis=1)

df.head()

函数3:groupby

进行分组聚合的操作:

In [9]:

# 1、统计不同水果的总金额


df.groupby("name")["amount"].sum()

Out[9]:

name
apple         13360
banana        12570
cantaloupe    18777
grape         20960
orange        29995
pear           3694
Name: amount, dtype: int64

上面得到的结果是Series型数据;如果是groupby + agg,得到的则是DataFrame型数据:

In [10]:

# groupby + agg

df.groupby("name").agg({"amount":sum})

Out[10]:

In [11]:

# groupby + to_frame 结果也变成了DataFrame型数据

df.groupby("name")["amount"].sum().to_frame()

Out[11]:

函数4:unique

统计数据的唯一值信息。比如统计每个水果name对应的产地信息place:

In [12]:

df.groupby("name")["place"].unique()  # 有去重

Out[12]:

name
apple                         [浙江, 山西]
banana        [江苏, 陕西, 山西, 江西, 甘肃, 浙江]
cantaloupe                [江西, 新疆, 山西]
grape             [浙江, 江西, 陕西, 山西, 江苏]
orange                    [浙江, 山西, 江苏]
pear                          [山西, 新疆]
Name: place, dtype: object

In [13]:

df.groupby("name")["place"].apply(list)  # 不去重

Out[13]:

name
apple                                 [浙江, 山西]
banana                [江苏, 陕西, 山西, 江西, 甘肃, 浙江]
cantaloupe                [江西, 江西, 新疆, 山西, 新疆]
grape         [浙江, 江西, 陕西, 山西, 浙江, 江苏, 浙江, 江苏]  # 有重复值
orange            [浙江, 山西, 山西, 江苏, 山西, 浙江, 山西]
pear                                  [山西, 新疆]
Name: place, dtype: object

如果是直接使用list函数,则会在对应的列表中展示全部的数据(包含重复值):

函数5:reset_index

将DataFrame的索引进行重置:

In [15]:

data = df.groupby("name")["amount"].sum()  # 不加reset_index()

data

Out[15]:

name
apple         13360
banana        12570
cantaloupe    18777
grape         20960
orange        29995
pear           3694
Name: amount, dtype: int64

In [16]:

type(data)  # Series型数据

Out[16]:

pandas.core.series.Series

In [17]:

data = df.groupby("name")["amount"].sum().reset_index()  # 不加reset_index()

data

Out[17]:


nameamount
0apple13360
1banana12570
2cantaloupe18777
3grape20960
4orange29995
5pear3694

In [18]:

type(data)  # DataFrame数据

Out[18]:

pandas.core.frame.DataFrame

函数6:sort_values

sort_values是对数据进行排序,默认是升序

In [19]:

data  # 使用上面的data数据

Out[19]:


nameamount
0apple13360
1banana12570
2cantaloupe18777
3grape20960
4orange29995
5pear3694

In [20]:

data.sort_values(by="amount")  # 默认升序

Out[20]:


nameamount
5pear3694
1banana12570
0apple13360
2cantaloupe18777
3grape20960
4orange29995

In [21]:

data.sort_values(by="amount", 
                 ascending=False  # 指定降序
                )  

Out[21]:


nameamount
4orange29995
3grape20960
2cantaloupe18777
0apple13360
1banana12570
5pear3694

In [22]:

data.sort_values(by="amount", 
                 ascending=False, # 指定降序
                 ignore_index=True  # 忽略索引设置
                )  

Out[22]:


nameamount
0orange29995
1grape20960
2cantaloupe18777
3apple13360
4banana12570
5pear3694

函数7:to_csv

将DataFrame保存成csv格式:

In [23]:

df.to_csv("newdata.csv",index=False)     # csv格式
# df.to_csv("newdata.xls",index=False)   # Excel格式

留言说说你常用的Pandas函数~互相学习。


加我微信,了解更多 Python、Go 知识,了解更多优惠活动。


扫码即可加我微信

相关阅读

  • Python搞定表格可视化!

  • 分享一个Python工具plottable,轻松制作高度个性化的表格,底层为Matplotlib。例如这样的,或者这样的,第一张图详细代码:# 导入相关包from pathlib import Pathimport matplotlibim
  • 连中两篇WWW顶会!

  • Datawhale干货 作者:鸣也,中国科学院大学,Datawhale成员转载自公众号:Datawhale很幸运能在WWW23中稿两篇论文,作为22年中旬才开始做深度学习方面的科研新手来说,给即将入门科研的
  • Python的那些"地图"神器!

  • 老表荐书图书介绍:《Python金融量化分析学习教程》本书是有关Python在金融量化分析领域应用的一本从入门到精通类图书。全书分4篇共10章。第1篇(第1~3章)简单介绍了Python的基
  • 对比Excel系列的又一本新书发布!

  • 数据相关从业者应该都听过《对比Excel系列》图书,这个系列累计销量已超20w册,预计影响了10w+数据人。时隔一年,对比Excel系列的又一本新书发布,就是下面这本《对比Excel,轻松学习
  • 《HelloGitHub》第 82 期

  • 兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。https://github.com/521xueweihan/HelloGitHub这里有实战项目、入
  • 2023 年该学点什么技术?「GitHub 热点速览 v.23.03」

  • 作者:HelloGitHub-小鱼干春节期间,小鱼干读了一篇万字回顾数据库行业的文章,在文字缝隙里我看见了两个词:AI+ 和数据两个词(当然数据是废话,毕竟是一个数据库的回顾文)。在 GitHub
  • 让人眼前一亮的应用「GitHub 热点速览」

  • 作者:HelloGitHub-小鱼干大开眼界的一期 GitHub 热门项目,类似 Django 存在的 pynecone,搞定 Windows、Office 激活的 Microsoft-Activation-Scripts,都让我的收藏夹蠢蠢欲动。

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 7个极其重要的Pandas函数!

  • 公众号:尤而小屋作者:Peter编辑:Peter本文介绍Pandas中7个极其重要的函数,它们在日常的数据分析会经常使用。isnullapplygroupbyuniquereset_indexsort_valuesto_csv同时你还将
  • 开工后的第一个Python私活,我赚了2w

  • 今天是节后上班第一天,祝大家开工大吉!先说个好消息:每年春节后,会迎来Python圈内兼职接单的小高潮。近期可以很轻松地,接到爬虫类和数据分析类的私活,需求大报酬高。往年春节开工
  • Python搞定表格可视化!

  • 分享一个Python工具plottable,轻松制作高度个性化的表格,底层为Matplotlib。例如这样的,或者这样的,第一张图详细代码:# 导入相关包from pathlib import Pathimport matplotlibim
  • 连中两篇WWW顶会!

  • Datawhale干货 作者:鸣也,中国科学院大学,Datawhale成员转载自公众号:Datawhale很幸运能在WWW23中稿两篇论文,作为22年中旬才开始做深度学习方面的科研新手来说,给即将入门科研的
  • Python的那些"地图"神器!

  • 老表荐书图书介绍:《Python金融量化分析学习教程》本书是有关Python在金融量化分析领域应用的一本从入门到精通类图书。全书分4篇共10章。第1篇(第1~3章)简单介绍了Python的基
  • 豆瓣9.3,这部神作终于升级了!

  • 关注我们丨文末赠书扫下方二维码加我微信,2.10 将在朋友圈送几本给需要的读者朋友。扫码即可加我微信不久前,自称“业余up主”的AI大神李沐开源了一个剪辑神器 ,再圈一波技术粉