7个极其重要的Pandas函数!

共 7288字,需浏览 15分钟

 ·

2023-01-03 22:48

公众号:尤而小屋
作者:Peter
编辑: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格式



1、知网被罚 8760 万元!全网沸腾

2、5 分钟,教你用 Python 制作一个生日提醒!

3、教你用 Python 自制简单版《我的世界》

4、为什么Python不适合写游戏?

5、Python速查表大全

点击关注公众号,阅读更多精彩内容

浏览 44
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐