分享14条非常实用的Pandas函数方法,建议珍藏!!

今天和大家来分享几个十分好用的pandas函数,可能平时并不是特别的常见,但是却能够帮助我们在平时的工作、学习当中极大的提高效率,小编也希望读者朋友们在看完本文之后能够大有收获

1

ExcelWriter

使用ExcelWriter()可以向同一个excel的不同sheet中写入对应的表格数据,首先要创建一个writer对象,传入的主要参数为文件名及其路径

import pandas as pd


a = pd.DataFrame({
    "a": [1, 2, 3, 4, 5],
    "b": [2, 5, 6, 8, 10],
})
b = pd.DataFrame({
    "c": [5, 2, 3, 1, 4],
    "d": [2, 5, 7, 8, 10],
})
# 写入到同一个excel当中去
with pd.ExcelWriter("data.xlsx") as writer:


    a.to_excel(writer, sheet_name="a_sheet", index = False)
    b.to_excel(writer, sheet_name="b_sheet", index = False)

2

pipe

pipe()方法可以将一连串的函数以链式的结构嵌套在数据集当中,例如一个脏数据集当中有重复值、空值和极值等等,我们分别建立了3个函数来"drop_duplicates","remove_outliers"和"fill_nans"分别处理上面提到的3个问题,然后用pipe()方法将这三个函数以链式的结构串联起来作用在同一个数据集上面,代码如下图所示

df_preped = (df.pipe(drop_duplicates).
             pipe(remove_outliers, ['price', 'carat', 'depth']).
             pipe(encode_categoricals, ['cut', 'color', 'clarity'])
            )

3

explode

我们可以通过一个简单的例子来说明一下该函数的作用,

df = pd.Series(
    [1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]
).to_frame("dirty")

分享14条非常实用的Pandas函数方法,建议珍藏!!_第1张图片

df.explode("dirty", ignore_index=True)

分享14条非常实用的Pandas函数方法,建议珍藏!!_第2张图片

要是遇到一行的数据当中含有多个元素,explode()方法可以将这一行的数据展开到多行,ignore_index = True,意味着数据展开来之后,索引也会逐行地递增

4

between

between是用来提取出给定范围当中的值的,看下面的例子

data = {'name': ['John', 'Mike', 'Tom', 'Greg', 'Jim'],
        'income': [8000, 9000, 10000, 10000, 20000],
        'age': [20, 24, 25, 23, 28]}
df = pd.DataFrame(data)

我们挑选出收入在8000到10000范围之内的数据

df[df['income'].between(8000, 10000, inclusive='neither')]

分享14条非常实用的Pandas函数方法,建议珍藏!!_第3张图片

5

convert_dtypes

pandas当中的convert_dtypes可以自动推断数据类型并且进行转化,例如

df = pd.DataFrame(
    {'a':[1,2,3],
     'b':[0.55,0.66,1.55],
     'c':['Jack','Tony','Posi']}
)
df.dtypes

分享14条非常实用的Pandas函数方法,建议珍藏!!_第4张图片

df.convert_dtypes().dtypes

分享14条非常实用的Pandas函数方法,建议珍藏!!_第5张图片

6

select_dtypes

pandas当中的select_dtypes()方法功能是返回那些指定数据类型的列,当中的include顾名思义就是筛选出指定数据类型的列,例如下面我们挑选出是bool数据类型的数据来

a = pd.DataFrame({
    "a": [1, 2, 3, 4, 5],
    "b": [True, False, False, True, True],
    "c": ["John", "Tom", "Mike", "Jim", "Dylan"]
})
a.select_dtypes(include='bool')

分享14条非常实用的Pandas函数方法,建议珍藏!!_第6张图片

而exclude就是排除掉指定数据类型的数据,将其他类型的数据筛选出来

a.select_dtypes(exclude='bool')

分享14条非常实用的Pandas函数方法,建议珍藏!!_第7张图片

7

mask

pandas当中的mask()方法主要是对按照指定的条件对数据集当中的数据进行替换,例如下面数据集当中对于大于0的数据替换成0

df = pd.DataFrame({"A":[12, 4, 5, 44, 1], 
                   "B":[5, 2, 54, 3, 2], 
                   "C":[20, 16, 7, 3, 8], 
                   "D":[14, 3, 17, 2, 6]}) 

分享14条非常实用的Pandas函数方法,建议珍藏!!_第8张图片

# 将大于10的数字替换成0
df.mask(df > 10, 0)

分享14条非常实用的Pandas函数方法,建议珍藏!!_第9张图片

8

nlargest和nsmallest

nlargest和nsmallest的作用在于可以让我们看到根据特定的列排序的最大或者是最小的若干列,例如

data = {'name': ['John', 'Mike', 'Tom', 'Greg', 'Jim'],
        'income': [2500, 4500, 5000, 3000, 2000],
        'age': [20, 24, 25, 23, 28]}
df = pd.DataFrame(data)

我们按照income这一列将数据排序,并且显示出最大的前3行

df.nlargest(3, 'income')

分享14条非常实用的Pandas函数方法,建议珍藏!!_第10张图片

9

idxmax和idxmin

主要用来返回最大值或者是最小值的位置,也就是索引值

data = {'income': [8000, 9000, 10000, 10000, 20000],
        'age': [20, 24, 25, 23, 28]}
df = pd.DataFrame(data, index = ['John', 'Mike', 'Tom', 'Greg', 'Jim'])

分享14条非常实用的Pandas函数方法,建议珍藏!!_第11张图片

我们找出income最高和最低的那个人是谁

df['income'].idxmax()
>>>> Jim


df['income'].idxmin()
>>> John

10

clip

在给出指定范围的前提下,对于数据集当中超出该范围的值进行更改,例如我们将范围限定在-4到6之间,超过6的数字会被设置为6,超过-4的数字会被设置为-4

data = {'col_0': [9, -3, 0, -1, 5],
        'col_1': [-2, -7, 6, 8, -5]}
df = pd.DataFrame(data)

分享14条非常实用的Pandas函数方法,建议珍藏!!_第12张图片

df.clip(-4, 6)

分享14条非常实用的Pandas函数方法,建议珍藏!!_第13张图片

11

at_time和between_time

pandas当中at_time()方法和between_time()方法主要是用来处理时间序列的数据,根据给出的时间点或者时间范围来筛选出数据

index = pd.date_range("2021-08-01", periods=100, freq="H")
data = pd.DataFrame({"col": list(range(100))}, index=index)
data.head()

分享14条非常实用的Pandas函数方法,建议珍藏!!_第14张图片

我们筛选出那些下午2点的数据

data.at_time("14:00")

当然我们可以使用between_time这个方法来挑选出某个时间范围内的数

data.between_time("11:00", "12:00")

分享14条非常实用的Pandas函数方法,建议珍藏!!_第15张图片

12

at和iat

我们一般用pandas当中的loc和iloc比较多,用来筛选出我们想要的数据,而at和iat也能够实现loc和iloc的功能,而且更加的快捷

data = {'name': ['John', 'Mike', 'Tom', 'Greg', 'Jim'],
        'income': [8000, 9000, 10000, 10000, 20000],
        'age': [20, 24, 25, 23, 28]}
df = pd.DataFrame(data)

分享14条非常实用的Pandas函数方法,建议珍藏!!_第16张图片

# [index, label]
df.at[1, "income"]
>>> 9000


# [index, index]
df.iat[2, 3]
>>> 1000

13

pandas styler

pandas还能够对数据集当中的数据进行上色,我们可以通过该方法将某些我们觉得重要的数据给标注出来,例如我们对数据集中每列的最大值最小值标注出来

df = pd.DataFrame(np.random.randn(5, 5), columns=list('ABCDE'))


# 我们标注出最大、最小的值
df.style.highlight_max(color = "yellow")

分享14条非常实用的Pandas函数方法,建议珍藏!!_第17张图片

分享14条非常实用的Pandas函数方法,建议珍藏!!_第18张图片

具体的可以去小编另外写的一篇文章中去看个究竟:厉害了,Pandas表格还能五彩斑斓的展示数据,究竟是怎么做到的呢?

14

hasnans

假如数据集当中存在空值,可以用hasnans方法来检查,要是有空值,则返回True,反之则返回False

s = pd.Series([2, 4, 6, "abcde", np.nan])
s.hasnans
>>>> True

历史文章

可视化图表告诉你,这部让网友直呼过瘾的国产剧究竟火在哪里

干货分享 | 如何用Python来操作PDF文件,建议收藏

职场性骚扰、PUA、性别歧视?数说现在的打工人日子过得到底有多难

世界500强最新一轮排名出炉,最赚钱的行业竟然是它!?

分享、收藏、点赞、在看安排一下?

你可能感兴趣的:(数据可视化,html,数据分析,less,csv)