当前位置:   article > 正文

【学习笔记】Python大数据处理与分析——pandas数据分析_pandas dtype=int32

pandas dtype=int32

一、pandas中的对象

1、Series对象

        由两个相互关联的数组(values, index)组成,前者(又称主数组)存储数据,后者存储values内每个元素对应关联的标签。

  1. import numpy as np
  2. import pandas as pd
  3. s1 = pd.Series([1, 3, 5, 7])
  4. print(s1)
  5. 0 1
  6. 1 3
  7. 2 5
  8. 3 7
  9. dtype: int64
  10. print(s1.values)
  11. →[1 3 5 7]
  12. print(s1.index)
  13. →RangeIndex(start=0, stop=4, step=1)

        通过NumPy数组导入Series对象:

  1. arr1 = np.array([1, 3, 5, 7])
  2. s2 = pd.Series(arr1, index=['a', 'b', 'c', 'd'])
  3. s2_ = pd.Series(s2)
  4. print(s2)
  5. →a 1
  6. b 3
  7. c 5
  8. d 7
  9. dtype: int32
  10. print(s2_)
  11. →a 1
  12. b 3
  13. c 5
  14. d 7
  15. dtype: int32

        若index数组的值在字典中有对应的键,则生成的Series中对应的元素是字典中对应的值(如果没有,其值为NaN空值)。

  1. dict1 = {"a": 3, "b": 4, "c": 5}
  2. s3 = pd.Series(dict1, index=["a", "b", "c", "d"])
  3. print(s3)
  4. →a 3.0
  5. b 4.0
  6. c 5.0
  7. d NaN
  8. dtype: float64

2、DataFrame对象

        将Series的使用场景扩展到多维,由按一定顺序的多列数据(可不同类型)组成,有两个索引数组(index, columns)。

  1. dict2 = {"a": [1, 2, 3, 4], "b": [5, 6, 7, 8], "c": [9, 10, 11, 12]}
  2. df1 = pd.DataFrame(dict2)
  3. print(df1)
  4. → a b c
  5. 0 1 5 9
  6. 1 2 6 10
  7. 2 3 7 11
  8. 3 4 8 12
  9. df2 = pd.DataFrame(np.arange(16).reshape((4, 4)),
  10. index=["one", "two", "three", "four"],
  11. columns=["ball", "pen", "pencil", "paper"])
  12. print(df2)
  13. → ball pen pencil paper
  14. one 0 1 2 3
  15. two 4 5 6 7
  16. three 8 9 10 11
  17. four 12 13 14 15

二、pandas的基本操作

1、导入与导出数据

(1)csv文件导入

        函数原型read_csv(filepath, sep, names, encoding),参数分别为:导入csv文件的路径、分隔符、导入的列和指定列的顺序(默认按顺序导入所有列)和文件编码(一般为utf-8)。

(2)txt文件导入

        read_table()的参数与read_csv()一样,但txt文件的分隔符不确定,所以参数设置需要更严格准确。

(3)Excel文件导入

        read_excel()的参数只有三个:路径名、读取表格名和读取列名,一般只需要第一个。

        示例如下,其中data.csv的内容如下:

        data.txt的内容如下:

        data.xlsx的内容如下:

  1. df3 = pd.read_csv(r"D:\Pycharm professional\pythonProject\test_pandas_files\data.csv")
  2. print(df3)
  3. 0 1 2
  4. 0 1 2 3
  5. 1 4 5 6
  6. 2 7 8 9
  7. 3 10 11 12
  8. df4 = pd.read_table(r"D:\Pycharm professional\pythonProject\test_pandas_files\data.txt", sep=' ', header=None)
  9. print(df4)
  10. 0 1
  11. 0 1 2
  12. 1 3 4
  13. 2 5 6
  14. 3 7 8
  15. 4 9 10
  16. df5 = pd.read_excel(r"D:\Pycharm professional\pythonProject\test_pandas_files\data.xlsx")
  17. print(df5)
  18. 0 1 2 3
  19. 0 a b c d
  20. 1 e f g h
  21. 2 i j k l

 (4)数据导出

        函数原型为to_csv(filepath, sep, names, encoding),参数分别为:导出csv文件的路径、分隔符(默认为逗号)、是否输出索引(默认为True,即输出索引)和文件编码(一般为utf-8)。

  1. df3.to_csv(r"D:\Pycharm professional\pythonProject\test_pandas_files\data1.csv", index=True, header=True)
  2. df3.to_csv(r"D:\Pycharm professional\pythonProject\test_pandas_files\data2.csv", index=False, header=True)

        data1.csv的内容如下: 

        data2.csv的内容如下: 

2、数据的查看与检查

(1)Series对象

  1. print(s1[2])
  2. 5
  3. print(s2['c'])
  4. 5
  5. print(s2[0:2])
  6. →a 1
  7. b 3
  8. dtype: int32
  9. print(s2[['a', 'b']])
  10. →a 1
  11. b 3
  12. dtype: int32

(2)DataFrame对象

  1. print(df2.columns)
  2. →Index(['ball', 'pen', 'pencil', 'paper'], dtype='object')
  3. print(type(df2.columns))
  4. →<class 'pandas.core.indexes.base.Index'>
  5. print(df2.index)
  6. →Index(['one', 'two', 'three', 'four'], dtype='object')
  7. print(type(df2.index))
  8. →<class 'pandas.core.indexes.base.Index'>
  9. print(df2.values)
  10. →[[ 0 1 2 3]
  11. [ 4 5 6 7]
  12. [ 8 9 10 11]
  13. [12 13 14 15]]
  14. print(type(df2.values))
  15. →<class 'numpy.ndarray'>
  16. print(df2["pencil"])
  17. →one 2
  18. two 6
  19. three 10
  20. four 14
  21. Name: pencil, dtype: int32
  22. print(df2.pen)
  23. →one 1
  24. two 5
  25. three 9
  26. four 13
  27. Name: pen, dtype: int32
  28. print(df2[0:2])
  29. → ball pen pencil paper
  30. one 0 1 2 3
  31. two 4 5 6 7

3、数据的增删查改

        创建Series对象如下:

s4 = pd.Series([1, 3, 5, 7], index=['a', 'b', 'c', 'd'])

(1)增加

  1. s4['e'] = 9
  2. print(s4)
  3. →a 1
  4. b 3
  5. c 5
  6. d 7
  7. e 9
  8. dtype: int64

(2)删除

  1. s4.pop('e')
  2. print(s4)
  3. →a 1
  4. b 3
  5. c 5
  6. d 7
  7. dtype: int64
  8. print(s4.drop('c'))
  9. →a 1
  10. b 3
  11. d 7
  12. dtype: int64
  13. print(s4)
  14. →a 1
  15. b 3
  16. c 5
  17. d 7
  18. dtype: int64

(3)查找与修改

  1. s4[2] = 6
  2. s4['a'] = 0
  3. print(s4)
  4. →a 0
  5. b 3
  6. c 6
  7. d 7
  8. dtype: int64
  9. print(s4[s4 > 4])
  10. →c 6
  11. d 7
  12. dtype: int64
  13. df2["pencil"][1] = 12
  14. print(df2)
  15. → ball pen pencil paper
  16. one 0 1 2 3
  17. two 4 5 12 7
  18. three 8 9 10 11
  19. four 12 13 14 15

4、pandas的基本运用

(1)数据统计

        创建DataFrame对象如下:

  1. arr2 = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape(4, 2)
  2. df6 = pd.DataFrame(arr2, index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
  3. print(df6)
  4. → one two
  5. a 1 2
  6. b 3 4
  7. c 5 6
  8. d 7 8
① 求和
  1. print(df6.sum())
  2. →one 16
  3. two 20
  4. dtype: int64
  5. print(df6.sum(axis=1))
  6. →a 3
  7. b 7
  8. c 11
  9. d 15
  10. dtype: int64
② 累计求和
  1. print(df6.cumsum())
  2. → one two
  3. a 1 2
  4. b 4 6
  5. c 9 12
  6. d 16 20
③ 返回最值行名称
  1. print(df6.idxmax())
  2. →one d
  3. two d
  4. dtype: object
  5. print(df6.idxmin())
  6. →one a
  7. two a
  8. dtype: object
④ 去重

        unique()返回NumPy数组,value_counts()返回Series对象(index为不重复的元素,values为不重复元素的频数)。

  1. s5 = pd.Series([1, 3, 5, 7, 2, 4, 3, 5, 7, 6, 7])
  2. print(s5.unique())
  3. →[1 3 5 7 2 4 6]
  4. print(type(s5.unique()))
  5. →<class 'numpy.ndarray'>
  6. print(s5.value_counts())
  7. 7 3
  8. 3 2
  9. 5 2
  10. 1 1
  11. 2 1
  12. 4 1
  13. 6 1
  14. dtype: int64
  15. print(type(s5.value_counts()))
  16. →<class 'pandas.core.series.Series'>
⑤ 筛选数据

        isin()判定Series对象中每个元素是否包含在给定的参数中。

  1. print(s5.isin([2, 4]))
  2. 0 False
  3. 1 False
  4. 2 False
  5. 3 False
  6. 4 True
  7. 5 True
  8. 6 False
  9. 7 False
  10. 8 False
  11. 9 False
  12. 10 False
  13. dtype: bool
  14. print(s5[s5.isin([2, 4])])
  15. 4 2
  16. 5 4
  17. dtype: int64

(2)算术运算

  1. s6 = pd.Series([20, 40, 60, 80])
  2. print(s6 / 2)
  3. 0 10.0
  4. 1 20.0
  5. 2 30.0
  6. 3 40.0
  7. dtype: float64
  8. print(np.log(s6))
  9. 0 2.995732
  10. 1 3.688879
  11. 2 4.094345
  12. 3 4.382027
  13. dtype: float64

(3)数据对齐

        数据清洗的重要过程,可按索引进行对齐运算,没对齐的位置填充NaN,数据末尾也可填充NaN。

  1. s7 = pd.Series({"b": 4, "c": 5, "a": 3})
  2. s8 = pd.Series({"a": 1, "b": 7, "c": 2, "d": 11})
  3. print(s7 + s8)
  4. →a 4.0
  5. b 11.0
  6. c 7.0
  7. d NaN
  8. dtype: float64
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/963729
推荐阅读
相关标签
  

闽ICP备14008679号