以下两行返回相同的结果:df['new_col'].where(d

简介: 以下两行返回相同的结果:df['new_col'].where(df['new_col'] > 0 , 0)np.where(df['new_col'] < 0

在这篇文章中,我将举例来解释20个常用的pandas函数。

有些是很常见的,我敢肯定你以前用过。

import numpy as npimport pandas as pd1.query我们有时需要根据条件过滤一个数据帧。

过滤数据帧的一个简单方法是query函数。

values_1 = np.random.randint(10, size=10)values_2 = np.random.randint(10, size=10)years = np.arange(2010,2020)groups = ['A','A','B','A','B','B','C','A','C','C']df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1, 'value_2':values_2})df使用查询函数非常简单,只需要编写过滤条件。

df.query('value_1 < value_2')2.insert当我们想向dataframe添加一个新列时,默认情况下会在末尾添加它。

#新建列new_col = np.random.randn(10)#在位置2插入新列df.insert(2, 'new_col', new_col)df3.Cumsum数据帧包含3个不同组的年份值。

Pandas了一个易于使用的函数来计算累计和,即cumsum。

如果我们只应用cumsum函数,group里的(A,B,C)将被忽略,因为我们无法区分不同的组。

我们可以应用groupby和cumsum函数,这样就可以区分出不同的组。

df['cumsum_2'] = df[['value_2','group']].groupby('group').cumsum()df4.SampleSample方法允许你从序列或数据帧中随机选择值。

sample1 = df.sample(n=3)sample1我们用n参数指定值的数目,但我们也可以将比率传递给frac参数。

例如,0.5将返回一半的行。

sample2 = df.sample(frac=0.5)sample2为了获得可重复的样本,我们可以使用随机的状态参数。

如果将整数值传递给random_state,则每次运行代码时都将生成相同的示例。

5. Where“Where”用于根据条件替换行或列中的值。

默认的替换值是NaN,但是我们也可以指定替换的值。

df['new_col'].where(df['new_col'] > 0 , 0)“where”的工作方式是选择符合条件的值,其余值替换为指定值。

where(df[‘new_col’]>0, 0)选择“new_col”中大于0的所有值,其余值替换为0。

重要的一点是,Pandas 和Numpy的“where”并不完全相同。

DataFrame.where按原数据选择符合条件的值,其他值将替换为指定的值。

以下两行返回相同的结果:df['new_col'].where(df['new_col'] > 0 , 0)np.where(df['new_col'] < 0, df['new_col'], 0)6.Isin在处理数据帧时,我们经常使用过滤或选择方法。

years = ['2010','2014','2017']df[df.year.isin(years)]7.Loc and ilocLoc和iloc用于选择行和列。

行标签要分情况,如果我们不分配任何特定的索引,pandas默认创建整数索引。

iloc 按位置索引数据使用iloc选择前3行和前2列:使用loc选择前3行和前2列:注:当使用loc时,切片得到的结果包括索引的边界,而使用iloc则不包括这些边界。

8.Pct_change此函数用于计算一系列值的变化百分比。

假设我们有一个包含[2,3,6]的序列。

如果我们对这个序列应用pct_change,则返回的序列将是[NaN,0.5,1.0]。

假设我们有一个包含[1,7,5,3]的序列s。

可以用这些序作排序操作df['rank_1'] = df['value_1'].rank()df10.MeltMelt用于将宽数据帧转换为窄数据帧。

在某些情况下,将这些列表示为行可能更适合我们的任务。

考虑以下数据帧:我们有三个不同的城市,在不同的日子进行测量。

我们可以通过使用Melt函数轻松实现:df_wide.melt(id_vars=['city'])默认情况下,会给出变量和值列名。

我们可以使用melt函数的var_name和value_name参数来指定新的列名。

11.Explode假设你的数据集在一个观测(行)中包含一个要素的多个条目,但你希望在单独的行中分析它们。

我们想在不同的行上看到“day"1在ID为c上的测量值,用explode来完成。

df1.explode('measurement').reset_index(drop=True)12.NuniqueNunique统计列或行上的唯一条目数。

它在分类特征中非常有用,特别是在我们事先不知道类别数量的情况下。

让我们看看我们的初始数据帧:df.year.nunique()10df.group.nunique()3我们可以直接将nunique函数应用于dataframe,并查看每列中唯一值的数量:如果axis参数设置为1,nunique将返回每行中唯一值的数目。

13.lookup它可以用于根据其他行-列对上的值在数据帧中查找值。

假设我们有以下数据帧:每天,我们有4个人的测量数据和一个列,其中包括这4个人的名字。

我们要创建一个新列,该列显示“person”列中人员对应他们的度量。

因此,对于第一行,新列中的值将是4(“Alex”列中的值)。

df['Person_point'] = df.lookup(df.index, df['Person'])df14.Infer_objectsPandas支持广泛的数据类型,其中之一就是object。

考虑以下数据帧:df2.dtypesA object B object C object D object dtype: object所有的数据类型都是object。

让我们看看推断的数据类型是什么:df2.infer_objects().dtypesA int64 B float64 C bool D object dtype: object它可能看起来没什么用,但在有很多列时绝对有用。

15.Memory_usageMemory_usage返回每行使用的内存量(以字节为单位)。

它非常有用,尤其是当我们处理大型数据帧时。

考虑下面的数据帧,其中有一百万行。

df_large = pd.DataFrame({'A': np.random.randn(1000000), 'B': np.random.randint(100, size=1000000)})df_large.shape(1000000, 2)以及每列的内存使用情况(以字节为单位):df_large.memory_usage()Index 128 A 8000000 B 8000000 dtype: int64整个数据帧的内存使用量(MB):df_large.memory_usage().sum() / (1024**2) 15.258911132812516.Describe描述函数计算数字列的基本统计信息,这些列包括计数、平均值、标准差、最小值和最大值、中值、第一个和第三个四分位数。

因此,它了数据帧的统计摘要。

17.MergeMerge()根据共享列中的值组合数据帧。

我们可以根据列中的共享值合并它们。

df1和df2是基于column_a中的公共值进行合并的,merge函数的how参数允许以不同的方式组合数据帧。

inner:仅在on参数指定的列中具有相同值的行(how参数的默认值)outer:所有行left:左数据帧中的所有行right:右数据帧中的所有行类似于sql语句中的join18.Select_dtypesSelect_dtypes函数根据对数据类型设置的条件返回数据帧列的子集。

df.select_dtypes(include='int64')df.select_dtypes(exclude='int64')19.replace顾名思义,它允许替换数据帧中的值。

df.replace('A', 'A_1')第一个参数是要替换的值,第二个参数是新值。

df.replace({'A':'A_1', 'B':'B_1'})20.ApplymapApplymap函数用于将函数应用于dataframe元素。

例如,如果我们想将每个元素乘以一个数字,我们不需要也不应该使用applymap函数。

在这种情况下,简单的向量化操作(例如df*4)要快得多。

例如,我们可以使用pandas dataframes的Style属性来更改dataframe的样式。

def color_negative_values(val): color = 'red' if val < 0 else 'black' return 'color: %s' % color我们需要使用applymap函数将此函数应用于数据帧。


以上是文章"

以下两行返回相同的结果:df['new_col'].where(d

"的内容,欢迎阅读甘青宁科技网的其它文章