学会这29个常用函数,你就是Pandas专家

目录
  • 1、读取 csv 文件 df.read_csv
  • 2、写入 csv 文件 df.to_csv
  • 3、数据帧 pd.DataFrame
  • 4、 获取数据帧的形状 df.shape
  • 5、查看前 n 行 df.head(n)
  • 6、打印列的类型 df.dtypes
  • 7、修改列的类型 astype
  • 8-9、打印有关 DataFrame 的描述性信息
  • 10、 填充 NaN 值 df.fillna
  • 11、数据帧的关联 df.merge
  • 12、数据帧排序 df.sort_values
  • 13、数据帧分组 df.groupby
  • 14、重命名列 df.rename
  • 15、删除列 df.drop
  • 16、增加列
  • 17、数据帧过滤-布尔型过滤
  • 18、数据帧过滤-之获取某一列
  • 19、数据帧过滤-按标签选择 df.loc
  • 20、数据帧过滤-按索引选择 df.iloc
  • 21、数据帧中对某一列去重
  • 22、数据帧中获取某一列去重后的个数
  • 23、将函数应用于 DataFrame df.apply
  • 24、标记重复行 df.duplicated
  • 25、删除重复行 df.drop_duplicates
  • 26、寻找值的分布 value_counts
  • 27、 重置 DataFrame 的索引 df.reset_index
  • 28、查找交叉表 df.crosstab
  • 29、透视数据帧

1、读取 csv 文件 df.read_csv

csv 通常是读取 Pandas DataFrame 的最流行的文件格式,你可以使用 pd.read_csv() 方法创建 Pandas DataFrame,类似的函数还有 read_excel,用法如下:

file = "file.csv"

df = pd.read_csv(file)
print(df)
####### out put ##########
   col1  col2 col3
0     1     2    A
1     3     4    B

2、写入 csv 文件 df.to_csv

将 DataFrame 导出到 csv,类似的函数是 df.to_excel,用法如下:

df.to_csv("file.csv", sep = "|", index = False)

查看 file.csv

!cat file.csv
col1|col2|col3
1|2|A
3|4|B

3、数据帧 pd.DataFrame

用来创建 Pandas 的 DataFrame:

data = [[1, 2, "A"], 
        [3, 4, "B"]]

df = pd.DataFrame(data, 
                  columns = ["col1", "col2", "col3"])
print(df)

####### out put ##########
   col1  col2 col3
0     1     2    A
1     3     4    B

借助这个构造函数,我们还可以把字典转换为 DataFrame:

data = {'col1': [1, 2], 
        'col2': [3, 4], 
        'col3': ["A", "B"]}

df = pd.DataFrame(data=data)
print(df)
####### out put ##########
   col1  col2 col3
   col1  col2 col3
0     1     3    A
1     2     4    B

4、 获取数据帧的形状 df.shape

df.shape 属性可以获取 DataFrame 的形状,也就是几行几列这样的数据:

print(df)
print("Shape:", df.shape)
####### out put ##########
   col1  col2 col3
   col1  col2 col3
0     1     3    A
1     2     4    B

Shape: (2, 3)

5、查看前 n 行 df.head(n)

数据帧(DataFrame) 会有很多行,通常我们只对查看 DataFrame 的前 n 行感兴趣,这时可以使用 df.head(n) 方法打印前 n 行:

print(df.head(5))
####### out put ##########
   col1  col2 col3
0     1     2    A
1     3     4    B
2     5     6    C
3     7     8    D
4     9    10    E

6、打印列的类型 df.dtypes

Pandas 为 DataFrame 中的每一列分配适当的数据类型。使用 dtypes 参数打印所有列的数据类型:

df.dtypes

####### out put ##########
col1     int64
col2     int64
col3    object
dtype: object

7、修改列的类型 astype

如果要更改列的数据类型,可以使用 astype() 方法,如下所示:

df["col1"] = df["col1"].astype(np.int8)
print(df.dtypes)
####### out put ##########
col1      int8
col2     int64
col3    object
dtype: object

8-9、打印有关 DataFrame 的描述性信息

这里有两个函数,第一个 df.info():

df.info()
####### out put ##########
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   col1    10 non-null     int8  
 1   col2    10 non-null     int64 
 2   col3    10 non-null     object
dtypes: int64(1), int8(1), object(1)
memory usage: 298.0+ bytes

第二个是 df.describe()。

如果要打印每个数值列的平均值、标准偏差、最大值等标准统计信息,就可以这样:

print(df.describe())
####### out put ##########
        col1   col2
count  10.00  10.00
mean   10.00  11.00
std     6.06   6.06
min     1.00   2.00
25%     5.50   6.50
50%    10.00  11.00
75%    14.50  15.50
max    19.00  20.00

10、 填充 NaN 值 df.fillna

假如有这样的 DataFrame:

df = pd.DataFrame([[1, 2, "A"], [np.nan, 4, "B"]], 
                  columns = ["col1", "col2", "col3"])
print(df)
####### out put ##########
   col1  col2 col3
0   1.0     2    A
1   NaN     4    B

里面有 NaN,如果要填充它,可以这样:

df.fillna(0, inplace = True)
print(df)
######## out put ##########
   col1  col2 col3
0   1.0     2    A
1   0.0     4    B

11、数据帧的关联 df.merge

如果你想用一个连接键合并两个 DataFrame,使用 pd.merge() 方法:

merge 之前:

df1 = ...
df2 = ...

print(df1)
print(df2)
######## out put ##########
   col1  col2 col3
0     1     2    A
1     3     4    A
2     5     6    B
  col3 col4
0    A    X
1    B    Y

使用 df.merge 后,可以生成新的数据帧

pd.merge(df1, df2, on = "col3")
######## out put ##########
  col1  col2 col3 col4
0     1     2    A    X
1     3     4    A    X
2     5     6    B    Y

12、数据帧排序 df.sort_values

排序是 DataFrame 非常典型的操作,我们可以使用 df.sort_values() 方法对 DataFrame 进行排序:

f = pd.DataFrame([[1, 2,  "A"], 
                   [5, 8,  "B"], 
                   [3, 10, "B"]], 
                  columns = ["col1", "col2", "col3"])

print(df.sort_values("col1"))
######## out put ##########
   col1  col2 col3
0     1     2    A
2     3    10    B
1     5     8    B

13、数据帧分组 df.groupby

要对 DataFrame 进行分组并执行聚合,使用 Pandas 中的 groupby() 方法,如下所示:

df = pd.DataFrame([[1, 2,  "A"], 
                   [5, 8,  "B"], 
                   [3, 10, "B"]], 
                  columns = ["col1", "col2", "col3"])

df.groupby("col3").agg({"col1":sum, "col2":max})
######## out put ##########
      col1  col2
col3            
A        1     2
B        8    10

14、重命名列 df.rename

如果要重命名列标题,请使用 df.rename() 方法,如下所示:

f = pd.DataFrame([[1, 2,  "A"], 
                   [5, 8,  "B"], 
                   [3, 10, "B"]], 
                  columns = ["col1", "col2", "col3"])

df.rename(columns = {"col1":"col_A"})

######## out put ##########

   col_A  col2 col3
0     1     2    A
1     5     8    B
2     3    10    B

15、删除列 df.drop

如果要删除数据帧中的某一列,可以这样:

df = pd.DataFrame([[1, 2,  "A"], 
                   [5, 8,  "B"], 
                   [3, 10, "B"]], 
                  columns = ["col1", "col2", "col3"])

print(df.drop(columns = ["col1"]))

######## out put ##########

   col2 col3
0     2    A
1     8    B
2    10    B

16、增加列

方法一:使用赋值运算符添加新列

df = pd.DataFrame([[1, 2], [3, 4]], 
                  columns = ["col1", "col2"])

df["col3"] = df["col1"] + df["col2"]
print(df)

######## out put ##########

   col1  col2  col3
0     1     2     3
1     3     4     7

方法二:df.assign()

df = pd.DataFrame([[1, 2], [3, 4]], 
                  columns = ["col1", "col2"])

df = df.assign(col3 = df["col1"] + df["col2"])

print(df)

######## out put ##########

   col1  col2  col3
0     1     2     3
1     3     4     7

17、数据帧过滤-布尔型过滤

如果该行上的条件评估为 True,则选择该行:

df = pd.DataFrame([[1, 2,  "A"], 
                   [5, 8,  "B"], 
                   [3, 10, "B"]], 
                  columns = ["col1", "col2", "col3"])

print(df[df["col2"] > 5])

######## out put ##########

   col1  col2 col3
1     5     8    B
2     3    10    B

18、数据帧过滤-之获取某一列

df["col1"] ## or df.col1

######## out put ##########

0    1
1    5
2    3
Name: col1, dtype: int64

19、数据帧过滤-按标签选择 df.loc

在基于标签的选择中,要求的每个标签都必须在 DataFrame 的索引中。整数也是有效的标签,但它们指的是标签而不是索引位置。

假如有如下 DataFrame:

df = pd.DataFrame([[6, 5,  10], 
                   [5, 8,  6], 
                   [3, 10, 4]], 
                  columns = ["Maths", "Science", "English"],
                  index = ["John", "Mark", "Peter"])

print(df)

######## out put ##########

       Maths  Science  English
John       6        5       10
Mark       5        8        6
Peter      3       10        4

我们使用 df.loc 方法进行基于标签的选择:

df.loc["John"]

######## out put ##########

Maths       6
Science     5
English    10
Name: John, dtype: int64
df.loc["Mark", ["Maths", "English"]]

######## out put ##########

Maths      5
English    6
Name: Mark, dtype: int64

但是在df.loc[]中,不允许使用索引来过滤 DataFrame,如下图:

20、数据帧过滤-按索引选择 df.iloc

以 19 里面的数据帧为例,使用 df.iloc 可以用索引:

df.iloc[0]

######## out put ##########

Maths       6
Science     5
English    10
Name: John, dtype: int64

21、数据帧中对某一列去重

df = pd.DataFrame([[1, 2,  "A"], 
                   [5, 8,  "B"], 
                   [3, 10, "A"]], 
                  columns = ["col1", "col2", "col3"])

df["col3"].unique()

######## out put ##########

array(['A', 'B'], dtype=object)

22、数据帧中获取某一列去重后的个数

df["col3"].nunique()

######## out put ##########

2

23、将函数应用于 DataFrame df.apply

非常实用:

def add_cols(row):
    return row.col1 + row.col2

df = pd.DataFrame([[1, 2], 
                   [5, 8], 
                   [3, 9]], 
                  columns = ["col1", "col2"])
                  
df["col3"] = df.apply(add_cols, axis=1)
print(df)

######## out put ##########

   col1  col2  col3
0     1     2     3
1     5     8    13
2     3     9    12

还可以将方法应用于单个列,如下所示:

def square_col(num):
    return num**2

df = pd.DataFrame([[1, 2], 
                   [5, 8], 
                   [3, 9]], 
                  columns = ["col1", "col2"])
                  
df["col3"] = df.col1.apply(square_col)
print(df)

######## out put ##########

   col1  col2  col3
0     1     2     1
1     5     8    25
2     3     9     9

24、标记重复行 df.duplicated

你可以使用 df.duplicated() 方法标记所有重复的行

df = pd.DataFrame([[1, "A"], 
                   [2, "B"], 
                   [1, "A"]], 
                  columns = ["col1", "col2"])
                  
df.duplicated(keep=False)

######## out put ##########

0     True
1    False
2     True
dtype: bool

25、删除重复行 df.drop_duplicates

可以使用 df.drop_duplicates() 方法删除重复的行,如下所示:

df = pd.DataFrame([[1, "A"], 
                   [2, "B"], 
                   [1, "A"]], 
                  columns = ["col1", "col2"])
                  
print(df.drop_duplicates())

######## out put ##########

col1 col2
0     1    A
1     2    B

26、寻找值的分布 value_counts

要查找列中每个唯一值的频率,请使用 df.value_counts() 方法:

df = pd.DataFrame([[1, "A"], 
                   [2, "B"], 
                   [1, "A"]], 
                  columns = ["col1", "col2"])
                  
print(df.value_counts("col2"))

######## out put ##########

col2
A    2
B    1
dtype: int64

27、 重置 DataFrame 的索引 df.reset_index

要重置 DataFrame 的索引,请使用 df.reset_index() 方法:

df = pd.DataFrame([[6, 5,  10], 
                   [5, 8,  6], 
                   [3, 10, 4]], 
                  columns = ["col1", "col2", "col3"],
                  index = [2, 3, 1])

print(df.reset_index())

######## out put ##########

   index  col1  col2  col3
0      2     6     5    10
1      3     5     8     6
2      1     3    10     4

要删除旧索引,请将 drop=True 作为参数传递给上述方法:

df.reset_index(drop=True)

######## out put ##########

   col1  col2  col3
0     6     5    10
1     5     8     6
2     3    10     4

28、查找交叉表 df.crosstab

要返回跨两列的每个值组合的频率,请使用 pd.crosstab() 方法:

df = pd.DataFrame([["A", "X"], 
                   ["B", "Y"], 
                   ["C", "X"],
                   ["A", "X"]], 
                  columns = ["col1", "col2"])

print(pd.crosstab(df.col1, df.col2))

######## out put ##########

col2  X  Y
col1      
A     2  0
B     0  1
C     1  0

29、透视数据帧

数据透视表是 Excel 中常用的数据分析工具。与上面讨论的交叉表类似,Pandas 中的数据透视表提供了一种交叉制表数据的方法。

假如 DataFrame 如下:

df = ...

print(df)
    Name  Subject  Marks
0   John    Maths      6
1   Mark    Maths      5
2  Peter    Maths      3
3   John  Science      5
4   Mark  Science      8
5  Peter  Science     10
6   John  English     10
7   Mark  English      6
8  Peter  English      4

使用 pd.pivot_table() 方法,可以将列条目转换为列标题:

pd.pivot_table(df, 
               index = ["Name"],
               columns=["Subject"], 
               values='Marks',
               fill_value=0)

######## out put ##########

Subject  English  Maths  Science
Name                            
John          10      6        5
Mark           6      5        8
Peter          4      3       10

到此这篇关于学会这29个常用函数,你就是Pandas专家的文章就介绍到这了,更多相关Pandas 函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python数据处理67个pandas函数总结看完就用

    目录 导⼊数据 导出数据 查看数据 数据选取 数据处理 数据分组.排序.透视 数据合并 不管是业务数据分析 ,还是数据建模.数据处理都是及其重要的一个步骤,它对于最终的结果来说,至关重要. 今天,就为大家总结一下 "Pandas数据处理" 几个方面重要的知识,拿来即用,随查随查. 导⼊数据 导出数据 查看数据 数据选取 数据处理 数据分组和排序 数据合并 # 在使用之前,需要导入pandas库 import pandas as pd 导⼊数据 这里我为大家总结7个常见用法. pd.Da

  • pandas dataframe drop函数介绍

    使用drop函数删除dataframe的某列或某行数据: drop(labels, axis=0, level=None, inplace=False, errors='raise') -- axis为0时表示删除行,axis为1时表示删除列 常用参数如下:  import pandas as pd import numpy as np data = {'Country':['China','US','Japan','EU','UK/Australia', 'UK/Netherland'], '

  • Pandas中常用的七个时间戳处理函数使用总结

    目录 1.查找特定日期的某一天的名称 2.执行算术计算 3.使用时区信息来操作转换日期时间 4.使用日期时间戳 5.创建日期系列 6.操作日期序列 7.使用时间戳数据对数据进行切片 在零售.经济和金融等行业,数据总是由于货币和销售而不断变化,生成的所有数据都高度依赖于时间.如果这些数据没有时间戳或标记,实际上很难管理所有收集的数据.Python 程序允许我们使用 NumPy timedelta64 和 datetime64 来操作和检索时间序列数据.sklern库中也提供时间序列功能,但 Pan

  • 分享5个数据处理更加灵活的pandas调用函数方法

    目录 0. 数据预览 1. apply 2. applymap 3. map 4. agg 5. pipe 0. 数据预览 这里的数据是虚构的语数外成绩,大家在演示的时候拷贝一下就好啦. import pandas as pd df = pd.read_clipboard() df 姓名 语文 数学 英语 性别 总分 0 才哥 91 95 92 1 1 小明 82 93 91 1 2 小华 82 87 94 1 3 小草 96 55 88 0 4 小红 51 41 70 0 5 小花 58 59

  • python基础篇之pandas常用基本函数汇总

    目录 前言 1.汇总函数 2.特征统计函数 3.唯一值函数 4.替换函数 总结 前言 这篇主要整理pandas常用的基本函数,主要分为五部分: 汇总函数 特征统计函数 唯一值函数 替换函数 排序函数 1.汇总函数 常用的主要是4个: tail(): 返回表或序列的后n行 head(): 返回表或序列的前n行 info(): 返回表的信息概况 describe(): 返回表中数值列对应的主要统计量 n默认为5 df.describe() #运行截图 Height Weight count 183.

  • 12个Pandas/NumPy中的加速函数使用总结

    目录 Numpy 的 6 种高效函数 argpartition() allclose() clip() extract() where() percentile() Pandas 数据统计包的 6 种高效函数 read_csv(nrows=n) map() apply() isin() copy() select_dtypes() 我们都知道,Numpy 是 Python 环境下的扩展程序库,支持大量的维度数组和矩阵运算:Pandas 也是 Python 环境下的数据操作和分析软件包,以及强大的

  • 学会这29个常用函数,你就是Pandas专家

    目录 1.读取 csv 文件 df.read_csv 2.写入 csv 文件 df.to_csv 3.数据帧 pd.DataFrame 4. 获取数据帧的形状 df.shape 5.查看前 n 行 df.head(n) 6.打印列的类型 df.dtypes 7.修改列的类型 astype 8-9.打印有关 DataFrame 的描述性信息 10. 填充 NaN 值 df.fillna 11.数据帧的关联 df.merge 12.数据帧排序 df.sort_values 13.数据帧分组 df.g

  • javascript常用函数归纳整理

    本文整理归纳了一些js常用函数,其中包括对数据操作,字符替换操作,日期及加解密操作函数,还有一些简单的验证函数.便于大家查阅参考.相信对大家会有所帮助. 1.typeof.constructor.instanceof对数组的判断 复制代码 代码如下: var arr = [1,5,6,9,8,5,4]; //var arr = new Array(1,5,6,9,8,5,4); console.log(typeof arr);//object console.log(arr.constructo

  • PostgreSQL 正则表达式 常用函数的总结

    PostgreSQL 正则表达式 常用函数的总结 对那些需要进行复杂数据处理的程序来说,正则表达式无疑是一个非常有用的工具.本文重点在于阐述 PostgreSQL 的一些常用正则表达式函数以及源码中的一些函数. 正则相关部分的目录结构 [root@localhost regex]# pwd /opt/hgdb-core/src/include/regex [root@localhost regex]# ll total 40 -rw-r--r--. 1 postgres postgres 349

  • PHP常用函数总结(180多个)

    PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3.floor(): 舍去法取整 echo floor(9.999); // 9 浮点数直接舍去小数部分 4.fmod(): 浮点数取余 $x = 5.7; $y = 1.3; // 两个浮点数,x>y 浮点余数 $r = fmod($x, $y); // $r equals 0.

  • javascript常用函数(2)

    文章主要内容列表: 16. 除去数组重复项 17. 操作cookie 18. 判断浏览器类型 19. 判断是否开启cookie 20. 断是否开启JavaScript 21. JavaScript 打字机效果 22. 简单打印 23. 禁止右键 24. 防止垃圾邮件 25.复制(javaeye flash版) 26. 阻止冒泡事件或阻止浏览器默认行为 27. 关闭或跳转窗口时提示 28. 用javascript获取地 址栏参数 29. 计算停留的时间 30. div为空,只有背景时,背景自动增高

  • MySQL中的常用函数

    在MySQL中,函数不仅可以出现在select语句及其子句中,而且还可以出现在update.delete语句中. 常用的函数有: 1. 字符串函数:主要用于处理字符串. 2. 数值函数:主要用于处理数字. 3. 日期和时间函数:主要用于处理日期和事件. 4. 系统信息函数:获取系统信息. 1. 使用字符串函数: 虽然每种数据库都支持SQL,但是每种数据库拥有各自所支持的函数. 1.1 合并字符串函数concat() 和 concat_ws(): 在MySQL中可以通过函数concat()和con

  • PHP封装curl的调用接口及常用函数详解

    如下所示: <?php /** * @desc 封装curl的调用接口,post的请求方式 */ function doCurlPostRequest($url, $requestString, $timeout = 5) { if($url == "" || $requestString == "" || $timeout <= 0){ return false; } $con = curl_init((string)$url); curl_setop

  • Golang字符串常用函数的使用

    目录 1)Golang字符串包含功能[区分大小写] 2)Golang ContainsAny()[区分大小写] 3)Golang Count() [区分大小写] 4)Golang EqualFold() [不区分大小写] 5) Golang Fields() 6)Golang FieldsFunc() 7)Golang HasPrefix() 8)Golang HasSuffix() 9)Golang Index() 10)Golang IndexAny() 11)Golang IndexByt

  • mysql常用函数之group_concat()、group by、count()、case when then的使用

    目录 场景: 一.行转列函数 group_concat(arg) 二.分组 group by.count().sum() 函数的组合使用 三.count() 配合 case when then 的使用 场景: 在mysql的关联查询或子查询中,函数 group_concat(arg) 可以合并多行的某列(或多列)数据为一行,默认以逗号分隔.以及分组函数和统计函数的组合使用 测试数据准备: 一.行转列函数 group_concat(arg) 1.单列合并,默认以逗号分隔 select group_

  • 关于Python常用函数中NumPy的使用

    目录 1. txt文件 2. CSV文件 3.成交量加权平均价格 = average()函数 4. 算数平均值函数 = mean()函数 5. 时间加权平均价格 6. 最大值和最小值 7. 统计分析 8. 股票收益率 1. txt文件 (1) 单位矩阵 即主对角线上的元素均为1,其余元素均为0的正方形矩阵. 在NumPy中可以用eye函数创建一个这样的二维数组,我们只需要给定一个参数,用于指定矩阵中1的元素个数. 例如,创建3×3的数组: import numpy as np I2 = np.e

随机推荐