7个极其重要的Pandas函数!

Python客栈

共 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速查表大全

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

浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报