1. 11pandas简介及其数据结构Series详解_笔记
    2. # 熊猫( panda的名词复数 )
    3. # pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
    4. # Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
    5. # pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
    6. # 你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
    7. # pandas 依赖python库:setuptools numpy python-dateutil pytz
    8. # pandas 的三大作用:数据的引入 数据的特征提取 数据的清洗
    9. # pandas的基本数据结构:Series和DataFrame
    10. # Series:一种类似于一维数组的对象,是由一组数据(各种numpy数据类型)以及一组与之相关的
    11. # 数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象,注意:Series中的索引值是可以重复的
    12. # DataFrame数据框架:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等)
    13. # DataFrame既有行索引也有列索引,可以被看作是由Series组成的字典
    14. # 第一种:Series通过一维数组创建
    15. # 通过数组创建Series的时候,如果没有为数据指定索引的话,会自动创建一个从0到n-1的整数索引
    16. # 当Series对象创建好后,可以通过index修改索引值
    17. # 明确给定索引值与数据类型
    18. # 第二种:Series通过字典的方式创建
    19. # -*- coding: utf-8 -*-
    20. __author__ = 'dongfangyao'
    21. __date__ = '2018/1/1 下午7:10'
    22. __product__ = 'PyCharm'
    23. __filename__ = 'pandas1'
    24. import numpy as np
    25. import pandas as pd
    26. # numpy ndarray
    27. # pandas Series DataFrame
    28. # arr = np.random.randint(10, 20, (3, 4))
    29. # print(arr)
    30. arr = np.array([22, 33, np.nan, 90])
    31. # print(arr, arr.dtype)
    32. s1 = pd.Series(arr)
    33. # print(s1)
    34. # print('series的属性')
    35. # print(s1.dtype)
    36. # print(s1.index)
    37. # print(s1.values)
    38. s1.index = [u'东方', 'a2', 'a3', 'a2']
    39. # print(s1)
    40. s2 = pd.Series(data=[88, 99, 100], index=['语文', '数学', '外语'], dtype=np.float)
    41. print(s2)
    42. print('-----')
    43. dict1 = {'语文': 88, '数学': 99, '外语': 100}
    44. s3 = pd.Series(dict1, dtype=np.float)
    45. print(s3)
    46. 复制代码
    47. # Series值的获取的两种方式:
    48. # 1、通过方括号+索引的方式获取对应索引的数据,可能返回多条数据
    49. # 2、通过方括号+下标值的方式获取数据,下标值的取值范围为:[0, len(Series.values));另外下标值也可以是负数,表示从右往左获取数据
    50. # Series获取多个值的方式类似Numpy中的ndarray的切片操作
    51. # 通过方括号+下标值/索引值+冒号(的形式来截取series对象中的一部分数据
    52. # -*- coding: utf-8 -*-
    53. __author__ = 'dongfangyao'
    54. __date__ = '2018/1/1 下午7:24'
    55. __product__ = 'PyCharm'
    56. __filename__ = 'pandas2'
    57. import pandas as pd
    58. import numpy as np
    59. dict1 = {'语文': 88, '数学': 99, '外语': 100}
    60. s1 = pd.Series(dict1, dtype=np.float)
    61. # print(s1)
    62. # print(s1['数学':'语文'])
    63. # print(s1[1:2])
    64. arr1 = np.array([100, 20, 30])
    65. # print(s1+arr1)
    66. s2 = pd.Series({'dfy': 100, 'zhangsan': 88})
    67. # print(s2)
    68. # s2.index = ['a', 'b']
    69. s2 = pd.Series(s2, index=['dfy', 'zhangsan', 'c'])
    70. # print(s2)
    71. print('-----')
    72. s2[pd.isnull(s2)] = 0
    73. # print(s2)
    74. # 自动对齐
    75. s4 = pd.Series(data=[22, 33, 44], index=['s1', 's2', 's3'])
    76. s5 = pd.Series(data=[22, 33, 99], index=['s3', 's4', 's2'])
    77. print(s4+s5)
    78. print('-----')
    79. # name series对象 index也有name属性
    80. s6 = pd.Series({'dfy': 100, 'zs': 88, 'ls': 99})
    81. s6.name = '数学'
    82. s6.index.name = '考试成绩'
    83. print(s6)
    84. 复制代码
    85. # 注意:使用下标值去切片是前闭后开区间 使用索引值去切片是全闭区间
    86. # Series的运算
    87. # numpy中的数组运算,在Series中都保留了,都可以使用,并且Series在进行数组运算的时候
    88. # 索引与值之间的映射关系不会发生改变
    89. # 注意:其实在操作Series的时候,基本上可以把Series看成numpy中的一维数组来进行
    90. # NaN在pandas中表示一个缺失值或NA值
    91. # pandas中的isnull和notnull两个函数可以用于在Series中检测缺失值,这两个函数返回一个布尔类型的Series
    92. # 可以快速找到缺失值并给其赋一个默认值
    93. # Series自动对齐
    94. # 当多个series对象之间进行运算的时候,如果不同series之间具有不同的索引值,那么运算会
    95. # 自动对齐不同索引值的数据,如果某个series没有某个索引值,那么结果会赋值为NaN
    96. # Series及其索引的name属性
    97. # Series对象本身与其索引都有一个name属性,默认为空,根据需要可以进行赋值操作