pandas (2) DataFrame数据结构

分手后的思念是犯贱 2022-06-01 10:08 343阅读 0赞
  1. import numpy as np
  2. import pandas as pd
  3. from pandas import DataFrame
  4. # DataFrame是一个表格型数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等),
  5. # DataFrame既有行索引又有列索引,它可以被看做由Series组成的字典
  6. #1.可以通过直接传入一个由等长的列表或Numpy数组组成的字典构建一个DataFrame
  7. data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
  8. 'year': [2000, 2000, 2001, 2002, 2001],
  9. 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
  10. frame = DataFrame(data)
  11. print(frame)
  12. #2.如果指定了列序列,则DataFrame的列会按照指定序列进行排列
  13. print(DataFrame(data, columns=['year', 'state', 'pop']))
  14. #3.跟Series一样,如果传入的列在数据中找不到,就会产生NA值
  15. frame2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])
  16. print(frame2)
  17. #4.通过类似字典标记或属性的方式,可以将DataFrame的列获取一个Series,
  18. #注意,返回的Series拥有原DataFrame相同的索引,且其name属性也被相应设置好了
  19. print(frame2['state'])
  20. print(frame2.year)
  21. #5.DataFrame中的行也可以通过位置或名称的方式获取,比如通过索引字段ix:
  22. print(frame2.ix['three'])
  23. #6.列可以通过赋值的方式直接修改,我们可以那个空的"debt"赋上一个标量或者一组值,
  24. #将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配
  25. frame2['debt'] = 16.5
  26. print(frame2)
  27. frame2['debt'] = np.arange(5.)
  28. print(frame2)
  29. frame2['debt'] = [11, 22, 33, 44, 55]
  30. print(frame2)
  31. #7.也可以对frame2中没有的键进行赋值,例如对frame2中的debt1键进行赋值,DataFrame会自动增加一个debt1键
  32. frame2['debt1'] = 16.8
  33. print(frame2)
  34. #8.如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位置都会被填上缺失值
  35. val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
  36. frame2['debt1'] = val
  37. print(frame2)
  38. #9.为不存在的列赋值会创建一个新列,关键字del用于删除列
  39. frame2['eastern'] = frame2.state == 'Ohio'
  40. print(frame2)
  41. del frame2['eastern']
  42. print(frame2.columns)
  43. #通过索引方式返回的列只是相应数据的视图,并不是副本.因此,对返回的Series所做的任何就地修改全都会反映到源DataFrame.通过Series的copy方法
  44. #即可显示的复制列
  45. #10.嵌套字典(字典中的字典),外层字典的键作为列,内层键作为行索引
  46. pop = {'Nevada':{2001: 2.4, 2002: 2.9}, 'Ohio':{2000: 1.5, 2001: 1.7, 2002: 3.6}}
  47. frame3 = DataFrame(pop)
  48. print(frame3)
  49. #11.可以对结果进行转置,内层字典的键会被合并,排序以形成最终的索引
  50. print(frame3.T)
  51. #如果显示指定索引,怎不会这样
  52. print(DataFrame(pop, index=[2001, 2002, 2003]))
  53. #12.如果设置了DataFrame的index和columns的name属性,则这些信息也可以被显示出来
  54. print('*****************')
  55. frame3.index.name = 'year'
  56. frame3.columns.name = 'state'
  57. print(frame3)
  58. #13.跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据
  59. print('*****************')
  60. print(frame3.values)
  61. #14.如果DataFrame各列的数据类型不同,则值数组的数据类型就会选用能兼容所有列的数据类型
  62. print(frame2.values)

另外, pandas的构造器可以输入如下类型的数据:

  1. ![SouthEast][]

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读