zoukankan      html  css  js  c++  java
  • pandas实践

    1. pd.DataFrame

    1.1. 获取schema

    import pandas as pd
    df = pd.DataFrame(data={"age": [1, 2, 3], "name": ['a', 'b', 'c']})
    print(df.dtypes)
    

    输出:

    age      int64
    name    object
    dtype: object
    

    df.dtypes 是一个Series,它的索引就是列名,值是类型,看一下age的类型:

    import pandas as pd
    df = pd.DataFrame(data={"age": [1, 2, 3], "name": ['a', 'b', 'c']})
    t = df.dtypes['age']
    print(type(t))
    print(t)
    print(t.type)
    

    输出:

    <class 'numpy.dtype'>
    int64
    <class 'numpy.int64'>
    

    从输出来看dtypes 的结构实际上是列名->dtype而并不是像np.int64这样的类型。

    2. pd.Series

    2.1. 转换

    s = pd.Series([1, 2, 3])
    print(type(s.values))
    print(s.values)  # 转换成numpy 数组,如果是数字
    print(s.values.tolist())  # 转换成python数组
    print(s.to_dict())  # 转换成字典,索引为key
    

    输出:

    <class 'numpy.ndarray'>
    [1 2 3]
    [1, 2, 3]
    {0: 1, 1: 2, 2: 3}
    

    3. numpy 的类型

    3.1. 基本类型

    在numpy中有np.int64, np.float64, 这样的类型,它是一个class,这个class的实例是什么呢?

    import numpy as np
    i = np.int64(1)
    print(type(i))
    print(i)
    print(i == 1)
    

    输出:

    <class 'numpy.int64'>
    1
    True
    

    在numpy中并没有使用python的基本类型,而是它自己的一套,int/int64/int32 之间的关系怎样的?

    int:

    import numpy as np
    print(np.int == int)
    

    输出:

    True
    

    np.int实际上就是python的int;

    int32:
    实际上是np.intc,它继承于signedinteger, 其定义:

    class intc(signedinteger):
        """ 32-bit integer. Character code 'i'. C int compatible. """
        def __abs__(self, *args, **kwargs): # real signature unknown
            """ abs(self) """
            pass
    

    int64:
    实际上是np.long,它继承于signedinteger, 其定义:

    class long(signedinteger):
        """ 64-bit integer. Character code 'l'. Python int compatible. """
    

    int32/int64 是numpy的类型,都继承于signedinteger, np.int是python的类型跟那俩没啥关系:

    import numpy as np
    
    i1 = np.int64(1)
    i2 = np.int32(1)
    i3 = np.int(1)
    
    print(isinstance(i1, np.signedinteger))
    print(isinstance(i2, np.signedinteger))
    print(isinstance(i3, np.signedinteger))
    print(type(i3))
    

    输出:

    True
    True
    False
    <class 'int'>
    

    应用1:判断一个类型是否为int
    如果是np.int/np.int32/int64 任何一个类的实例就是int。

  • 相关阅读:
    hdu 5059 判断数字表示方式以及范围合法(int型之内)
    hdu1024 最大m子序列和
    POJ 1573 Robot Motion 模拟 难度:0
    POJ 2632 Crashing Robots 模拟 难度:0
    POJ 1068 Parencodings 模拟 难度:0
    ncs安装及初次运行
    POJ 1328 Radar Installation 贪心 难度:1
    POJ 3094 Quicksum 难度:0
    django.test.client 使用随记
    POJ 2255 Tree Recovery 树的遍历,分治 难度:0
  • 原文地址:https://www.cnblogs.com/oaks/p/13567482.html
Copyright © 2011-2022 走看看