• Python数据分析库pandas ------ 初识pandas、Series对象


    pandas在python中的使用:

      在python中默认用 import pandas as pd 导入pandas库,你可以用 pd.__version__ 查看你安装的版本。

      pandas中主要有两种数据结构:Series 和 DataFrame。下面我们将介绍 Series 。

      Series:一种类似于一维数组的对象,是由一组数据(一种NumPy数据类型)以及一组与之相关的数据标签(即索引)

        组成。仅有一组数据也可以产生简单的Series对象。注意:Series中的索引值是可以重复的。

      DataFrame:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔型等),

        DataFrame 即有行索引也有列索引,可以被看做是由Series组成的字典。

      上面的表诉来源于博客:pandas---Series基础使用 

    Series对象:

     生成Series对象

     1 import pandas as pd
     2 # print(pd.__version__)
     3 s = pd.Series([True, 1, 2, 'kl'])  # 默认添加index
     4 print("python%s的数据:
    " % type(s), s)
     5 Out[1]:
     6 python<class 'pandas.core.series.Series'>的数据:
     7  0    True
     8 1       1
     9 2       2
    10 3      kl
    11 dtype: object

      为Series对象添加index

    1 s = pd.Series([True, 1, 2, 'kl'], index=['logical', 'num1', 'num2', 'id'])
    2 print("python%s的数据:
    " % type(s), s)
    3 Out[2]:
    4 python<class 'pandas.core.series.Series'>的数据:
    5  logical    True
    6 num1          1
    7 num2          2
    8 id           kl
    9 dtype: object

     获取元素

     1 print(s.values)
     2 print(s.index)
     3 print(s[2])
     4 print(s['num1'])
     5 print(s[:2])
     6 print(s[['num1', 'num2']])
     7 Out[3]:
     8 [True 1 2 'kl']
     9 Index(['logical', 'num1', 'num2', 'id'], dtype='object')
    10 2
    11 1
    12 logical    True
    13 num1          1
    14 dtype: object
    15 num1    1
    16 num2    2
    17 dtype: object

     为元素赋值

     1 s = pd.Series([True, 1, 2, 'kl'], index=['logical', 'num1', 'num2', 'id'])
     2 s[0] = False
     3 s['num1'] = 1.1
     4 print(s)
     5 Out[4]:
     6 logical    False
     7 num1         1.1
     8 num2           2
     9 id            kl
    10 dtype: object

     用Numpy数组或其他Series对象定义新Series对象

     1 a = np.array([1, 2, 3, 4])
     2 s1 = pd.Series(a)
     3 s2 = pd.Series(s1)
     4 print("s1:
    ", s1)
     5 print("s2:
    ", s2)
     6 print(s1 == s2)
     7 s1[2] = 100
     8 print("s1更改后的s2:
    ", s2)
     9 Out[5]:
    10 s1:
    11 0    1
    12 1    2
    13 2    3
    14 3    4
    15 dtype: int32
    16 s2:
    17 0    1
    18 1    2
    19 2    3
    20 3    4
    21 dtype: int32
    22 0    True
    23 1    True
    24 2    True
    25 3    True
    26 dtype: bool
    27 s1更改后的s2:
    28 0      1
    29 1      2
    30 2    100
    31 3      4
    32 dtype: int32

      注意上面的s1更改之后,s2也发生了相应的变化,对比深复制与浅复制。

     筛选元素

    1 a = pd.Series(np.array([1, 2, 3, 4]))
    2 print(a[a < 3])
    3 Out[6]:
    4 [1 2]

     运算和数学函数

     1 s1 = pd.Series([6, 1, 2, 9])  # 可以加减乘除
     2 b = s1 + 2
     3 print(b)
     4 print(np.log(s1))
     5 Out[7]:
     6 0     8
     7 1     3
     8 2     4
     9 3    11
    10 dtype: int64
    11 0    1.791759
    12 1    0.000000
    13 2    0.693147
    14 3    2.197225
    15 dtype: float64

     Series对象的组成元素 

     1 color = pd.Series([1, 0, 2, 1, 2, 3], index=['white', 'white', 'blue', 'green', 'green', 'yellow'])
     2 print("color:
    ", color)
     3 print("color.unique():
    ", color.unique())
     4 print("color.value_counts():
    ", color.value_counts())
     5 print("color.isin():
    ", color.isin([0, 3]))
     6 print("color[color.isin([0, 3])]:
    ", color[color.isin([0, 3])])
     7 Out[8]:
     8 color:
     9 white     1
    10 white     0
    11 blue      2
    12 green     1
    13 green     2
    14 yellow    3
    15 dtype: int64
    16 color.unique():
    17  [1 0 2 3]
    18 color.value_counts():
    19 2    2
    20 1    2
    21 3    1
    22 0    1
    23 dtype: int64
    24 color.isin():
    25 white     False
    26 white      True
    27 blue      False
    28 green     False
    29 green     False
    30 yellow     True
    31 dtype: bool
    32 color[color.isin([0, 3])]:
    33 white     0
    34 yellow    3
    35 dtype: int64

     缺失值NaN

     1 s = pd.Series([1, 2, np.nan, 6])
     2 print(s.isnull())
     3 print(s.notnull())
     4 print(s[s.notnull()])
     5 Out[9]:
     6 0    False
     7 1    False
     8 2     True
     9 3    False
    10 dtype: bool
    11 0     True
    12 1     True
    13 2    False
    14 3     True
    15 dtype: bool
    16 0    1.0
    17 1    2.0
    18 3    6.0
    19 dtype: float64

     Series用作字典

    1 mydict = {'red':200, 'blue':100, 'yellow':50, 'orange':100}
    2 myseries = pd.Series(mydict)
    3 print(myseries)
    4 Out[10]:
    5 red       200
    6 blue      100
    7 yellow     50
    8 orange    100
    9 dtype: int64

      当然你也可以用index参数指定index。

     Series 对象之间的运算

     1 mydict0 = {'red':200, 'blue':100, 'yellow':50, 'orange':100}
     2 myseries0 = pd.Series(mydict0)
     3 print(myseries0)
     4 mydict1 = {'red':200, 'blue':100, 'yellow':50, 'orange':100, 'black':30}
     5 myseries1 = pd.Series(mydict1)
     6 print(myseries0 + myseries1)
     7 Out[11]:
     8 red       200
     9 blue      100
    10 yellow     50
    11 orange    100
    12 dtype: int64
    13 black       NaN
    14 blue      200.0
    15 orange    200.0
    16 red       400.0
    17 yellow    100.0
    18 dtype: float64

      注意 myseries0 是没有black的 所以相加时默认以NaN补位。

    清澈的爱,只为中国
  • 相关阅读:
    JAVA编程-------29、求3*3矩阵对角线元素之和
    JAVA编程---------28、对10个数进行排序(冒泡排序)
    JAVA编程-------------27、100以内的素数
    JAVA编程----------26、请输入星期几的第一个字母来判断一下星期几, 第一个字母相同,则判断第二个字母,以此类推
    JAVA编程-----------25、查找5位数的回文数
    JAVA编程---------24、输入一个数,判断位数,并逆序输出
    JAVA编程------------23、递归
    JAVA编程------------22、利用递归求5!
    JAVA编程--------21、求1!+2!+....+20!=
    JAVA编程------------20、计算2/1+3/2+5/3+8/5+...求前20项之和
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/9394447.html
Copyright © 2020-2023  润新知