精华内容
下载资源
问答
  • 入门pandas计算列

    2021-01-29 16:24:20
    path = 'C:/Users/Administrator/Desktop/playground2/计算列.xlsx' data = pd.read_excel(path) data['销售金额']=data['单价']*data['销售数量'] print(data) 序号 商品名称 单价 销售数量 销售金额 0 1 香蕉 5 ...

    全部列

    import pandas as pd
    path = 'C:/Users/Administrator/Desktop/playground2/计算列.xlsx'
    data = pd.read_excel(path)
    data['销售金额']=data['单价']*data['销售数量']
    print(data)
    
       序号 商品名称  单价  销售数量  销售金额
    0   1   香蕉   5    20   100
    1   2   苹果   6    15    90
    2   33    18    54
    

    部分列

    import pandas as pd
    path = 'C:/Users/Administrator/Desktop/playground2/计算列.xlsx'
    data = pd.read_excel(path)
    for i in range(1,3):   #i=1,i=2时候计算
        data['销售金额'].at[i] = data['单价'].at[i] * data['销售数量'].at[i]
    print(data)
    
       序号 商品名称  单价  销售数量  销售金额
    0   1   香蕉   5    20   NaN
    1   2   苹果   6    15  90.0
    2   33    18  54.0
    
    for i in range(1,3):  #i=1 i=2
        if i%2==0:    #i为偶数时候计算
            data['销售金额'].at[i] = data['单价'].at[i] * data['销售数量'].at[i]
    
       序号 商品名称  单价  销售数量  销售金额
    0   1   香蕉   5    20   NaN
    1   2   苹果   6    15   NaN
    2   33    18  54.0
    

    pandas apply() 函数

    apply() 函数可以作用于 Series 或者整个 DataFrame,功能也是自动遍历整个 Series 或者 DataFrame, 对每一个元素运行指定的函数
    apply()前面放需要参考的数据

    # 将单价提高3元
    data['单价'] = data['单价'].apply(lambda x:x+3)
    print(data)
    
       序号 商品名称  单价  销售数量  销售金额
    0   1   香蕉   8    20   NaN
    1   2   苹果   9    15   NaN
    2   36    18   NaN
    
    # 民族不是汉族的加3分
    data['加分'] = data['民族'].apply(lambda x:3 if x !='汉'else 0)
    data['最终分数'] = data['总分']+data['加分']
    print(data)
    
       序号  姓名 民族   总分  加分  最终分数
    0   1  张三  汉  591   0   591
    1   2  李四  满  589   3   592
    2   3  王五  回  587   3   590
    

    apply() 函数当然也可执行 python 内置的函数,比如我们想得到 Name 这一列字符的个数,如果用 apply() 的话:

    数据['姓名字符个数']=数据['姓名'].apply(len)
    

    DataFrame.apply() 函数则会遍历每一个元素,对元素运行指定的 function。比如下面的示例:计算数组的平方根

    import pandas as pd
    import numpy as np
    arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
    data = pd.DataFrame(arr,columns=['x','y','z'],index=['a','b','c'])
    print(data.apply(np.square))
    
        x   y   z
    a   1   4   9
    b  16  25  36
    c  49  64  81
    

    如果只想 apply() 作用于指定的行和列

    # 只作用于x列
    data2 = data.apply(lambda a:np.square(a) if a.name == 'x'else a)
    #或者 data['x'] = data['x'].apply(lambda a: a*a)
    print(data2)
    
    # 对 x 和 y 列进行平方运算:
    data3 = data.apply(lambda a : np.square(a) if a.name in ['x','y'] else a)
    print(data3)
    
    #对b行进行运算
    data4 = data.apply(lambda m:np.square(m) if m.name == 'b'else m,axis=1)
    print(data4)
    
    # 对b,c行进行运算
    data5 = data.apply(lambda m:np.square(m) if m.name in['b','c'] else m,axis=1)
    print(data5)
    

    默认情况下 axis=0 表示按列,axis=1 表示按行。

    apply函数计算日期相减

    import pandas as pd
    path = 'C:/Users/Administrator/Desktop/playground2/计算日期.xlsx'
    data = pd.read_excel(path)
    间隔 = data['结束日期'] - data['起始日期']
    data['间隔'] = 间隔.apply(lambda x : x.days)  #这样加了单位可以让结果不带有days
    print(data)
    
       序号       起始日期       结束日期   间隔
    0   1 2020-01-01 2020-01-08    7
    1   2 2020-03-01 2020-09-07  190
    2   3 2020-05-03 2020-08-08   97
    3   4 2020-04-08 2020-11-08  214
    4   5 2020-07-30 2021-09-03  400
    
    展开全文
  • map:选中,对中的每个元素进行映射,映射函数只能有个参数 apply:可以实现map的功能,也可以跨操作。映射函数可以有多个参数,实现更复杂的功能 applymap:对df中的元素逐个操作。用途不如apply广,但特定...

    逐行、逐列、逐元素的操作

    Pandas数据处理三板斧——map、apply、applymap详解

    分别对应map apply applymap 三种方法
    map:选中列,对列中的每个元素进行映射,映射函数只能有一个参数
    apply:可以实现map的功能,也可以跨列操作。映射函数可以有多个参数,实现更复杂的功能
    applymap:对df中的元素逐个操作。用途不如apply广,但特定情况下比较香

    例子数据

    import random
    import pandas as pd
    import numpy as np
    boolean=[True,False]
    gender=["男","女"]
    color=["white","black","yellow"]
    data=pd.DataFrame({
        "height":np.random.randint(150,190,100),
        "weight":np.random.randint(40,90,100),
        "smoker":[boolean[x] for x in np.random.randint(0,2,100)],
        "gender":[gender[x] for x in np.random.randint(0,2,100)],
        "age":np.random.randint(15,90,100),
        "color":[color[x] for x in np.random.randint(0,len(color),100) ]
    })
    

    map用法:将gender列女换成0,男换成1

    用replace

    data.loc[:,'gender'].replace('男','1',inplace=True)
    data.loc[:,'gender'].replace('女','0',inplace=True)
    

    用map

    # 按字典映射
    data['gender'] = data['gender'].map({'男':1,'女':0})
    # 按函数映射
    def trans_gender(x):  # x就是该列的逐个元素
    	return 1 if x == '男', else 0
    data['gender'] = data['gender'].map(trans_gender)
    

    map好用

    apply用法:根据身高体重计算BMI

    用apply

    def BMI(series):
    	return series['weight'] / (series['height']/100)**2
    data['BMI'] = data.apply(BMI, axis=1)  # 默认axis = 0
    

    axis = 1时,函数传入的参数是iterrow
    axis = 0时,可以代替map。例如:

    data['height'].apply(np.mean)
    data['gender'].apply(trans_gender)
    # 换成map照样用
    

    但是比map多的功能是可以传入多个参数。例如,把年龄+3:

    def fix_age(x, bias):
    	return x+bias
    data['age'].apply(fix_age, args=(3,))
    

    args以元组的形式传入更多参数。

    初步看来map和apply是有重合的,apply更强大。axis=1时,映射函数传入参数是iterrow,axis=0时,apply相当于map,对选定列的每一个元素进行操作

    applymap用法:将df中的小数全部保留2位小数

    df = pd.DataFrame(
        {"A":np.random.randn(5),
            "B":np.random.randn(5),
            "C":np.random.randn(5),
            "D":np.random.randn(5),
            "E":np.random.randn(5),
        })
    df.applymap(lambda x: round(x,2))
    

    很简单,但有时候很快.

    展开全文
  • 另外,如果要为每一列计算唯一元素,请参见以下文章。 15_Pandas计算元素的数量和频率(出现的次数) 对以下内容进行具体的说明。 满足特定条件的元素数量的计数流程 计数pandas.DataFrame中的任何列 多个条件

    35_Pandas计算满足特定条件的元素的数量

    将说明在pandas.DataFrame和pandas.Series中,如何按行/列以及整体来计算满足特定条件的元素数。

    请参阅以下文章,了解如何提取符合条件的行。

    另外,如果要为每一列计算唯一元素,请参见以下文章。

    对以下内容进行具体的说明。

    • 满足特定条件的元素数量的计数流程
    • 计数pandas.DataFrame中的任何列
    • 多个条件的逻辑乘积(和),逻辑和(或)和否定(非)
      具体的例子如下。
    • 通过指定数值条件进行计数
    • 通过指定字符串条件进行计数
    • 计算缺失值NaN的数量,非NaN元素的数量

    以下面的数据为例。

    import pandas as pd
    
    df = pd.read_csv('./data/35/sample_pandas_normal.csv')
    
    print(df)
    #       name  age state  point
    # 0    Alice   24    NY     64
    # 1      Bob   42    CA     92
    # 2  Charlie   18    CA     70
    # 3     Dave   68    TX     70
    # 4    Ellen   24    CA     88
    # 5    Frank   30    NY     57
    

    满足特定条件的元素数量的计数流程

    满足特定条件的元素数量的计数流程如下。

    • 判断pandas.DataFrame,pandas.Series对象的每个元素并获取布尔类型(真,假)
    • 用sum()方法计算布尔对象
      • 按列计数:sum()
      • 每行计数:sum(axis= 1)
      • 总计数:values.sum()

    将比较运算符应用于pandas.DataFrame和pandas.Series对象时,将判断每个元素,并获得相同大小的布尔类型(True,False)pandas.DataFrame和pandas.Series对象。

    df_bool = (df == 'CA')
    print(df_bool)
    #     name    age  state  point
    # 0  False  False  False  False
    # 1  False  False   True  False
    # 2  False  False   True  False
    # 3  False  False  False  False
    # 4  False  False   True  False
    # 5  False  False  False  False
    

    在Python中,True被视为1,而False被视为0,因此在布尔值对象上调用sum()方法将为您提供满足条件的元素数。

    默认情况下,不带参数时,它按列计算,而参数axis=1时,则按行计算。

    print(df_bool.sum())
    # name     0
    # age      0
    # state    3
    # point    0
    # dtype: int64
    
    print(df_bool.sum(axis=1))
    # 0    0
    # 1    1
    # 2    1
    # 3    0
    # 4    1
    # 5    0
    # dtype: int64
    

    pandas.DataFrame和pandas.Series可以将整个元素的数据获取为具有值属性的NumPy数组numpy.ndarray。

    与pandas.DataFrame方法sum()不同,numpy.ndarray方法sum()默认情况下计算总和。因此,如果从bool对象的属性值(numpy.ndarray)调用sum(),则可以获得满足条件的元素总数(总数)。

    print(df_bool.values)
    # [[False False False False]
    #  [False False  True False]
    #  [False False  True False]
    #  [False False False False]
    #  [False False  True False]
    #  [False False False False]]
    
    print(type(df_bool.values))
    # <class 'numpy.ndarray'>
    
    print(df_bool.values.sum())
    # 3
    

    计数pandas.DataFrame中的任何列

    如果如上例所示将比较运算符应用于pandas.DataFrame,将对所有元素执行比较操作。

    要计算满足任何列条件的元素,请使用[]等指定列并执行相同的过程。

    s_bool = df['age'] < 25
    print(s_bool)
    # 0     True
    # 1    False
    # 2     True
    # 3    False
    # 4     True
    # 5    False
    # Name: age, dtype: bool
    
    print(s_bool.sum())
    # 3
    

    有关行/列的选择和提取,请参见以下文章。

    多个条件的逻辑乘积(和),逻辑和(或)和否定(非)

    当组合多个条件时,将每个条件(由其生成的布尔值的对象)括在括号()中,然后

    • AND:&
    • 或:|
      连接。
    • 否定(不):〜
      也可以使用。
    df_bool_multi = ((df == 'CA') | (df == 70))
    print(df_bool_multi)
    #     name    age  state  point
    # 0  False  False  False  False
    # 1  False  False   True  False
    # 2  False  False   True   True
    # 3  False  False  False   True
    # 4  False  False   True  False
    # 5  False  False  False  False
    
    print(df_bool_multi.sum())
    # name     0
    # age      0
    # state    3
    # point    2
    # dtype: int64
    
    print(df_bool_multi.sum(axis=1))
    # 0    0
    # 1    1
    # 2    2
    # 3    1
    # 4    1
    # 5    0
    # dtype: int64
    
    print(df_bool_multi.values.sum())
    # 5
    

    合并列之间的条件。

    df_bool_multi_and = ((df['state'] == 'CA') & (df['age'] < 30))
    print(df_bool_multi_and)
    # 0    False
    # 1    False
    # 2     True
    # 3    False
    # 4     True
    # 5    False
    # dtype: bool
    
    print(df_bool_multi_and.sum())
    # 2
    
    df_bool_multi_or = ((df['state'] == 'CA') | (df['age'] < 30))
    print(df_bool_multi_or)
    # 0     True
    # 1     True
    # 2     True
    # 3    False
    # 4     True
    # 5    False
    # dtype: bool
    
    print(df_bool_multi_or.sum())
    # 4
    

    否定(不):〜 示例。

    df_bool_not = ~(df == 'CA')
    print(df_bool_not)
    #    name   age  state  point
    # 0  True  True   True   True
    # 1  True  True  False   True
    # 2  True  True  False   True
    # 3  True  True   True   True
    # 4  True  True  False   True
    # 5  True  True   True   True
    
    print(df_bool_not.sum())
    # name     6
    # age      6
    # state    3
    # point    6
    # dtype: int64
    
    print(df_bool_not.sum(axis=1))
    # 0    4
    # 1    3
    # 2    3
    # 3    4
    # 4    3
    # 5    4
    # dtype: int64
    
    print(df_bool_not.values.sum())
    # 21
    

    通过指定数值条件进行计数

    如前面的示例中所述,比较运算符<,<=,>,> =,== 、! =等可以用于数字。

    df_num = df[['age', 'point']]
    print(df_num)
    #    age  point
    # 0   24     64
    # 1   42     92
    # 2   18     70
    # 3   68     70
    # 4   24     88
    # 5   30     57
    
    print((df_num <= 70).sum())
    # age      6
    # point    4
    # dtype: int64
    
    print(((df['age'] > 20) & (df['age'] < 40)).sum())
    # 3
    
    print((df_num % 2 == 1).sum())
    # age      0
    # point    1
    # dtype: int64
    

    通过指定字符串条件进行计数

    除比较运算符外,pandas.Series的字符串方法str还可用于字符串。 字符串方法如下。

    • str.contains():包含特定的字符串
    • str.endswith():以特定字符串结尾
    • str.startswith():以特定的字符串开头
    • str.match():匹配正则表达式模式
      请注意,字符串方法是pandas.Series方法,不在pandas.DataFrame中。
    df_str = df[['name', 'state']]
    print(df_str)
    #       name state
    # 0    Alice    NY
    # 1      Bob    CA
    # 2  Charlie    CA
    # 3     Dave    TX
    # 4    Ellen    CA
    # 5    Frank    NY
    
    print((df_str == 'NY').sum())
    # name     0
    # state    2
    # dtype: int64
    
    print(df_str['name'].str.endswith('e'))
    # 0     True
    # 1    False
    # 2     True
    # 3     True
    # 4    False
    # 5    False
    # Name: name, dtype: bool
    
    print(df_str['name'].str.endswith('e').sum())
    # 3
    

    有关如何使用字符串方法提取行的信息,请参见以下文章。

    计算缺失值NaN的数量,非NaN元素的数量

    使用泰坦尼克号幸存者数据作为处理缺失值NaN的示例。

    df = pd.read_csv('./data/35/train.csv')
    
    print(df.head())
    #    PassengerId  Survived  Pclass  \
    # 0            1         0       3
    # 1            2         1       1
    # 2            3         1       3
    # 3            4         1       1
    # 4            5         0       3
    #                                                 Name     Sex   Age  SibSp  \
    # 0                            Braund, Mr. Owen Harris    male  22.0      1
    # 1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1
    # 2                             Heikkinen, Miss. Laina  female  26.0      0
    # 3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1
    # 4                           Allen, Mr. William Henry    male  35.0      0
    #    Parch            Ticket     Fare Cabin Embarked
    # 0      0         A/5 21171   7.2500   NaN        S
    # 1      0          PC 17599  71.2833   C85        C
    # 2      0  STON/O2. 3101282   7.9250   NaN        S
    # 3      0            113803  53.1000  C123        S
    # 4      0            373450   8.0500   NaN        S
    

    如果您只想检查不缺少值Nan的元素数量,则可以使用info()方法显示它们。

    请注意,info()方法是pandas.DataFrame方法,不在pandas.Series中。

    df.info()
    # <class 'pandas.core.frame.DataFrame'>
    # RangeIndex: 891 entries, 0 to 890
    # Data columns (total 12 columns):
    # PassengerId    891 non-null int64
    # Survived       891 non-null int64
    # Pclass         891 non-null int64
    # Name           891 non-null object
    # Sex            891 non-null object
    # Age            714 non-null float64
    # SibSp          891 non-null int64
    # Parch          891 non-null int64
    # Ticket         891 non-null object
    # Fare           891 non-null float64
    # Cabin          204 non-null object
    # Embarked       889 non-null object
    # dtypes: float64(2), int64(5), object(5)
    # memory usage: 83.6+ KB
    

    下面的示例是pandas.DataFrame,但是使用pandas.Series可以进行相同的处理。

    使用notull()方法计算丢失的NaN的数量。 notull()是一种确定每个元素是否为NaN的方法。

    要对数字进行计数,可以像前面的示例一样应用sum()。

    print(df.isnull().head())
    #    PassengerId  Survived  Pclass   Name    Sex    Age  SibSp  Parch  Ticket  \
    # 0        False     False   False  False  False  False  False  False   False   
    # 1        False     False   False  False  False  False  False  False   False   
    # 2        False     False   False  False  False  False  False  False   False   
    # 3        False     False   False  False  False  False  False  False   False   
    # 4        False     False   False  False  False  False  False  False   False   
    #     Fare  Cabin  Embarked  
    # 0  False   True     False  
    # 1  False  False     False  
    # 2  False   True     False  
    # 3  False  False     False  
    # 4  False   True     False  
    
    print(df.isnull().sum())
    # PassengerId      0
    # Survived         0
    # Pclass           0
    # Name             0
    # Sex              0
    # Age            177
    # SibSp            0
    # Parch            0
    # Ticket           0
    # Fare             0
    # Cabin          687
    # Embarked         2
    # dtype: int64
    
    print(df.isnull().sum(axis=1).head())
    # 0    1
    # 1    0
    # 2    1
    # 3    0
    # 4    1
    # dtype: int64
    
    print(df.isnull().values.sum())
    # 866
    

    如果要获取不缺少值Nan的元素数作为pandas.Series或标量值,请使用count()方法。 与sum()类似,如果省略参数,则对列处理count();如果参数axis= 1,则对行处理count()。

    print(df.count())
    # PassengerId    891
    # Survived       891
    # Pclass         891
    # Name           891
    # Sex            891
    # Age            714
    # SibSp          891
    # Parch          891
    # Ticket         891
    # Fare           891
    # Cabin          204
    # Embarked       889
    # dtype: int64
    
    print(df.count(axis=1).head())
    # 0    11
    # 1    12
    # 2    11
    # 3    12
    # 4    11
    # dtype: int64
    
    print(df.count().sum())
    # 9826
    

    要将缺失值NaN排除或替换为另一个值,或者确定行/列是否包含缺失值NaN,请参阅以下文章。

    展开全文
  • 上周我们关于Python中科学计算库Numpy的介绍就结束了,今天我们开始介绍个新的常用的计算工具库,它就是大名鼎鼎的PandasPandas的全称是Python Data Analysis Library,是种基于Numpy的科学计算工具。它最大的...

    上周我们关于Python中科学计算库Numpy的介绍就结束了,今天我们开始介绍一个新的常用的计算工具库,它就是大名鼎鼎的Pandas

    Pandas的全称是Python Data Analysis Library,是一种基于Numpy的科学计算工具。它最大的特点就是可以像是操作数据库当中的表一样操作结构化的数据,所以它支持许多复杂和高级的操作,可以认为是Numpy的加强版。它可以很方便地从一个csv或者是excel表格当中构建出完整的数据,并支持许多表级别的批量数据计算接口。

    安装使用

    和几乎所有的Python包一样,pandas也可以通过pip进行安装。如果你装过Anaconda套件的话,那么像是numpy、pandas等库已经自动安装好了,如果没有安装过也没有关系,我们使用一行命令即可完成安装。

    pip install pandas

    和Numpy一样,我们在使用pandas的时候通常也会给它起一个别名,pandas的别名是pd。所以使用pandas的惯例都是:

    import pandas as pd

    如果你运行这一行没有报错的话,那么说明你的pandas已经安装好了。一般和pandas经常一起使用的还有另外两个包,其中一个也是科学计算包叫做Scipy,另外一个是对数据进行可视化作图的工具包,叫做Matplotlib。我们也可以使用pip将这两个包一起安装了,在之后的文章当中,用到这两个包的时候,也会简单介绍一下它们的用法。

    pip install scipy matplotlib

    Series 索引

    在pandas当中我们最常用的数据结构有两个,一个是Series另外一个是DataFrame。其中series是一维数据结构,可以简单理解成一维数组或者是一维向量。而DataFrame自然就是二维数据结构了,可以理解成表或者是二维数组。

    我们先来看看Series,Series当中存储的数据主要有两个,一个是一组数据构成的数组,另外一个是这组数据的索引或者是标签。我们简单创建一个Series打印出来看一下就明白了。

    d466351d527d82753e687a7028d157d4.png

    这里我们随意创建了一个包含四个元素的Series,然后将它打印了出来。可以看到打印的数据一共有两列,第二列是我们刚才创建的时候输入的数据,第一列就是它的索引。由于我们创建的时候没有特意指定索引,所以pandas会自动为我们创建行号索引,我们可以通过Series类型当中的values和index属性查看到Series当中存储的数据和索引:

    08b777d473a434ebaedec42d3a09a621.png

    这里输出的values是一个Numpy的数组,这并不奇怪,因为我们前面说了,pandas是一个基于Numpy开发的科学计算库,Numpy是它的底层。从打印出来的index的信息当中,我们可以看到这是一个Range类型的索引,它的范围以及步长。

    索引是Series构建函数当中的一个默认参数,如果我们不填,它默认会为我们生成一个Range索引,其实也就是数据的行号。我们也可以自己指定数据的索引,比如我们在刚才的代码当中加入index这个参数,我们就可以自己指定索引了。

    48a7d342e73e656b0c6e5411f0040864.png

    当我们指定了字符类型的索引之后,index返回的结果就不再是RangeIndex而是Index了。说明pandas内部对数值型索引和字符型索引是做了区分的。

    有了索引,自然是用来查找元素用的。我们可以直接将索引当做是数组的下标使用,两者的效果是一样的。不仅如此,索引数组也是可以接受的,我们可以直接查询若干个索引的值。

    04d2887d96ce6206213b2e2336f31fcc.png

    另外在创建Series的时候,重复的索引也是允许的。同样当我们使用索引查询的时候也会得到多个结果。

    9b60be6ea0d78c9264c080039f427e11.png

    不仅如此,像是Numpy那样的bool型索引也依然是支持的:

    7c999f83834c3599308668bbcadd590c.png

    Series计算

    Series支持许多类型的计算,我们可以直接使用加减乘除操作对整个Series进行运算

    bac2f59f96a02d60a9cdcace771e3392.png

    也可以使用Numpy当中的运算函数来进行一些复杂的数学运算,但是这样计算得到的结果会是一个Numpy的array。

    5af63a4de9987812b7b2e22905aa2707.png

    因为Series当中有索引,所以我们也可以使用dict的方式判断索引是否在Series当中

    f82068cd47cd2a619422a8be3d5a2bb3.png

    Series有索引也有值,其实和dict的存储结构是一样的,所以Seires也支持通过一个dict来初始化:

    97a22c95b7d8839f00269581d5b21626.png

    通过这种方式创建出来的顺序就是dict当中key存储的顺序,我们可以在创建的时候指定index,这样就可以控制它的顺序了。

    42f59f4a4f10f499c3374434cd48f97e.png

    我们在指定index的时候额外传入了一个没有在dict当中出现过的key,由于在dict当中找不到对应的值,Series会将它记成NAN(Not a number)。可以理解成是非法值或者是空值,在我们处理特征或者是训练数据的时候,经常会遇到存在一些条目的数据的某个特征空缺的情况,我们可以通过pandas当中isnull和notnull函数检查空缺的情况。

    5cefa57c618297c2ac015d1cd69bafcc.png

    当然Series当中也有isnull的函数,我们也可以调用。

    c2fe34e37351de653ddd90c8369b3529.png

    最后,Series当中的index也是可以修改的, 我们可以直接给它赋上新值:

    6b7d6fc0e112b0577ade5474170a09ab.png

    总结

    从核心本质上来说,pandas当中的Series就是在Numpy一维数组上做的一层封装,加上了索引等一些相关的功能。所以我们可以想见DataFrame其实就是一个Series的数组的封装,加上了更多数据处理相关的功能。我们把核心结构把握住了,再来理解整个pandas的功能要比我们一个一个死记这些api有用得多。

    pandas是Python数据处理的一大利器,作为一个合格的算法工程师几乎是必会的内容,也是我们使用Python进行机器学习以及深度学习的基础。根据调查资料显示,算法工程师日常的工作有70%的份额投入在了数据处理当中,真正用来实现模型、训练模型的只有30%不到。因此可见数据处理的重要性,想要在行业当中有所发展,绝不仅仅是学会模型就足够的。

    文章就到这里,如果喜欢本文,可以的话,请点个关注,给我一点鼓励,也方便获取更多文章。

    本文始发于公众号:TechFlow

    展开全文
  • pandas apply使用多列计算生成新的列

    万次阅读 2019-05-25 10:24:28
    在python数据分析中,有时需要根据多数据生成...pandas的apply方法用于对指定的每个元素进行相同的操作,下面生成个dataFrame用于演示: import pandas as pd a=range(5) b=range(5,10) c=range(10,15) dat...
  • 15_Pandas计算元素的数量和频率(出现的次数) 在pandas.Series的pandas.DataFrame中,将描述获取唯一元素数(不包括重复项的案例数)和每个元素的出现频率(出现数)的方法。 使用pandas.Series方法的unique()...
  • 来源:机器之心Python 是开源的,它很棒...有个用于数据科学的包绝对是必需的,它就是 pandaspandas 最有趣的地方在于里面隐藏了很多包。它是个核心包,里面有很多其他包的功能。这点很棒,因为你只需要使用 ...
  • pandas--统计某一列元素出现的个数

    千次阅读 2020-04-25 11:32:26
    count = labels.loc[:, ‘columname’].value_counts()
  • 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas个非常重要的Python包。它不仅提供了很多方法,使得数据处理非常简单,同时在数据处理速度上也做了很多优化,使得和Python内置方法相...
  • 来源:机器之心Python 是开源的,它很棒...有个用于数据科学的包绝对是必需的,它就是 pandaspandas 最有趣的地方在于里面隐藏了很多包。它是个核心包,里面有很多其他包的功能。这点很棒,因为你只需要使用 ...
  • 数据: ...import pandas as pd def merge_column(dataframe, column, seq=';') -> set: merge_sentence = set() all_sentences = dataframe[column].values.tolist() for s in all_sent
  • Pandas是为次性处理整个行或的矢量化操作而设计的,循环遍历每个单元格、行或并不是它的设计用途。所以,在使用Pandas时,你应该考虑高度可并行化的矩阵运算。 、避免使用for循环 尽量使用号或者行号进行...
  • Pandas str内置方法

    千次阅读 2018-08-19 16:27:12
    Pandas的DataFrame有时需要处理一些字符串类型,运用Series.str内置方法很方便。 1、one hot 独热编码,get_dummies series=data['列名'].str.get_dummies(sep=',') 实现DataFrame中有多值,且想把这...
  • 在日常使用pandas的过程中,由于我们所分析的数据表规模、格式上的差异,使得同样的函数或方法作用在不同数据上的效果存在差异。而pandas有着自己的一套「参数设置系统」,可以帮助我们在遇到不同的数据时灵活调节...
  • 它是个核心包,里面有很多其他包的功能。这点很棒,因为你只需要使用 pandas 就可以完成工作。pandas 相当于 python 中 excel:它使用表(也就是 dataframe),能在数据上做各种变换,但还有其他很多功能。如果你...
  • 本文详细介绍Pandas数据结构DataFrame和Series的常用方法。欢迎微信随缘关注@pythonic生物人本文可以学到什么?1、pandas简介 2、pandas数据结构之-Series pandas.Series快速创建 pandas.Series取出所有值:values ...
  • 选自towardsdatascience,作者:Félix Revert本文转自机器之心(nearhuman2014)Pandas 是为了解决数据分析任务而创建的种基于NumPy的工具包,囊括了许多其他工具包的功能,具有易用、直观、快速等优点。要想成为...
  • 需求:当我们处理行数据时,要求这行中不同的最值、最大值、最小值、均值等数据。 如例:  name Chinese Math English  PE tom 88 87 89 90 tony 98 97 99 90 ...
  • 对不同长度的对象进行协方差计算pandas会进行数据的自动对齐操作,即取得series_1的前八位元素与series_3的所有元素进行协方差运算 DataFrame对象之间的协方差计算 相关系数 排序 窗口函数 Rolling对象 ...
  • 主要介绍了pandas对dataFrame中某的数据进行处理的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • python pandas str内置方法

    万次阅读 2018-03-28 17:58:40
    pandas的DataFrame,有时需要处理一些字符串类型,运用Series.str内置方法很方便。1.one hot 独热编码,get_dummiesseries=data['列名'].str.get_dummies(sep=',')实现DataFrame中有多值,且想把这one hot下2...
  • 36_Pandas获取行数,数和元素总数(大小) 如何获取pandas.DataFrame和pandas.Series的行数,数和总元素(大小)。 pandas.DataFrame 显示行数,数等:df.info() 获取行数:len(df) 获取数:len(df....
  • 来源:机器之心Python 是开源的,它很棒...有个用于数据科学的包绝对是必需的,它就是 pandaspandas 最有趣的地方在于里面隐藏了很多包。它是个核心包,里面有很多其他包的功能。这点很棒,因为你只需要使用 ...
  • 方法有二:1. 在调用duplicated方法后,非重复的元素会被标记为False,而重复的元素会被标记为Truecount = 0 for i in users_info['user_id']....count【注】users_info为一个dataframe框,user_id为其中一列...
  • import pandas as pd //写入 df=pd.read_excel("XXX.xlsx") //新增 df["num"]=1 //赋值‘课程'和"num”两列给book变量 book=df[['课程',"num"]].copy() //按照课程分类,统计计算 book_counts=book.groupby('...
  • duplicated官方说明参考 duplicated方法说明: 简洁代码实现: ...实现任务:查询DataFrame 某列元素中重复的数据项 """ if __name__ == '__main__': df = DataFrame({'key1': ['a', 'a'...
  •   NumPy 的基本能力之是快速对每个元素进行运算,既包括基本算术运算(加、减、乘、除),也包括更复杂的运算。Pandas集成了Numpy的功能,也实现了一些高效技巧: 对于一元计算,输出结果保留行索引和标签 ...
  • Pandas 是为了解决数据分析任务而创建的种基于 NumPy 的工具包,囊括了许多其他工具包的功能,具有易用、直观、快速等优点。要想成为名高效的数据科学家,不会 Pandas 怎么行?Python 是开源的,它很棒,但是也...
  • pandas移动窗口计算脉动

    千次阅读 2015-08-02 22:59:34
    import pandas as pd import numpy as np #每个文件只取前三行后生成的maidong_files root = 'D:/maidong_files'all_U = pd.DataFrame() all_V = pd.DataFrame() all_chuizhi = pd.DataFrame()all_time = []#定义...
  • pandas增加一列id列 为了避免N + 1问题 ,Hibernate用户经常使用带有ID列表的IN谓词 。 在这篇文章中,我们将看到那些用户可能只是用一件不好的东西代替一件可怕的东西,虽然更好,但还不好。 原因如下: N + 1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,897
精华内容 5,158
关键字:

pandas一列计算元素