区分Numpy的Array,pandas的DataFrame,pandas的Series
区分 map apply applymap
区分map apply applymap
map() 是一个Series的函数,DataFrame结构中没有map()。map()将一个自定义函数应用于Series结构中的每个元素(elements)。
apply() 将一个函数作用于DataFrame中的每个行或者列, 默认应用于列,default 0
axis =1 ,apply function to each row. 应用于行
axis =0,apply function to each column, 应用于列
applymap() 将函数做用于DataFrame中的所有元素(elements)
apply 用在dataframe上,用于对row或者column进行计算;
applymap 用于dataframe上,是元素级别的操作;
map (其实是python自带的)用于series上,是元素级别的操作。
pandas基础示例
# import
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# https://blog.csdn.net/MsSpark/article/details/83050261
# 参考博客文章Python-Pandas中Series用法总结
# Series = list + dict + array
# 通过列表List创建Series
s = Series([1, 2, 3, 4])
print(s) # index + value
# 通过字典dict创建Series
s = Series({'a': 1, 'b': 2, 'c': 3})
print(s)
# 通过数组array创建Series
s = Series(np.arange(4), index=['a', 'c', 'b', 'c']) # 可另置index
print(s)
# Series包括index和values两部分
print(s.index)
print(s.values)
0 1
1 2
2 3
3 4
dtype: int64
a 1
b 2
c 3
dtype: int64
a 0
c 1
b 2
c 3
dtype: int64
Index(['a', 'c', 'b', 'c'], dtype='object')
[0 1 2 3]
# access
print(s)
print(s['a'])
print(s['c'])
print('s[0]=', s[0])
print(s[0:2])
print(s+10)
print('----------')
print(s[s>2])
print("----------")
print(s['a':'b'])
# 报错,因为key中为c的选项不唯一
try: print(s['a':'c'])
except KeyError as e: print(e)
a 0
c 1
b 2
c 3
dtype: int64
0
c 1
c 3
dtype: int64
s[0]= 0
a 0
c 1
dtype: int64
a 10
c 11
b 12
c 13
dtype: int64
----------
c 3
dtype: int64
----------
a 0
c 1
b 2
dtype: int64
"Cannot get right slice bound for non-unique label: 'c'"
# DataFrame = Series of Series
# https://blog.csdn.net/MsSpark/article/details/83050572
# 参考博客文章 Python-Pandas之DataFrame用法总结
# 通过numpy创建DataFrame
df = DataFrame(np.arange(9).reshape((3, 3)))
print(df)
# 指定index和columns
df = DataFrame(np.arange(9).reshape((3, 3)), \
columns=['c1', 'c2', 'c3'], index=['i1', 'i2', 'i3'])
print(df)
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
c1 c2 c3
i1 0 1 2
i2 3 4 5
i3 6 7 8
# access 获取数据
print(df['c2']['i2'])
print(df.loc['i2', 'c2'])
print(df.iloc[1, 1])
print(df+10) # 每项+10
print(df[df>4]) # 找到>4的数据
print(df.T) # 求其转置
4
4
4
c1 c2 c3
i1 10 11 12
i2 13 14 15
i3 16 17 18
c1 c2 c3
i1 NaN NaN NaN
i2 NaN NaN 5.0
i3 6.0 7.0 8.0
i1 i2 i3
c1 0 3 6
c2 1 4 7
c3 2 5 8
# drop (and add) 删除数据
print(df.drop('i2'))
print(df.drop(['i1', 'i2']))
print(df.drop('c2', axis='columns'))
c1 c2 c3
i1 0 1 2
i3 6 7 8
c1 c2 c3
i3 6 7 8
c1 c3
i1 0 2
i2 3 5
i3 6 8
# map
def workSeries(s):
print(s)
print('s[0]=',s[0])
print('-----------')
return s if s[0] < 1 else s+10
def workValue(v):
print(v)
return v if v < 1 else v+10
tmp = DataFrame(np.arange(9).reshape((3, 3)))
print(tmp)
# apply() 将一个函数作用于DataFrame中的每个行或者列
# axis =1, apply function to each row. 应用于行
# axis =0, apply function to each column, 应用于列,默认应用于列,是default 0
# 默认应用于列,所以worSeries方法参数中的s指tmp的三列数据,s[0]指s的每列中的第一个数据
# workSeries方法是在s[0]<1时返回s本身,其余时s均加十
tmp = tmp.apply(workSeries)
# tmp = tmp.apply(workSeries, axis = 0)
print('tmp=')
print(tmp)
print('xxxxxxxxxxxxxxxxxxxxxxxxx')
# apply方法在axis为1时应用于行
tmp2 = DataFrame(np.arange(9).reshape((3, 3)))
tmp2 = tmp2.apply(workSeries, axis = 1)
print('tmp2=')
print(tmp2)
print('xxxxxxxxxxxxxxxxxxxxxxxxx')
tmp = df.copy()
# applymap() 将函数做用于DataFrame中的所有元素(elements)
tmp = tmp.applymap(workValue)
print(tmp)
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
0 0
1 3
2 6
Name: 0, dtype: int64
s[0]= 0
-----------
0 0
1 3
2 6
Name: 0, dtype: int64
s[0]= 0
-----------
0 1
1 4
2 7
Name: 1, dtype: int64
s[0]= 1
-----------
0 2
1 5
2 8
Name: 2, dtype: int64
s[0]= 2
-----------
tmp=
0 1 2
0 0 11 12
1 3 14 15
2 6 17 18
xxxxxxxxxxxxxxxxxxxxxxxxx
0 0
1 1
2 2
Name: 0, dtype: int64
s[0]= 0
-----------
0 0
1 1
2 2
Name: 0, dtype: int64
s[0]= 0
-----------
0 3
1 4
2 5
Name: 1, dtype: int64
s[0]= 3
-----------
0 6
1 7
2 8
Name: 2, dtype: int64
s[0]= 6
-----------
tmp2=
0 1 2
0 0 1 2
1 13 14 15
2 16 17 18
xxxxxxxxxxxxxxxxxxxxxxxxx
0
3
6
0
3
6
1
4
7
2
5
8
c1 c2 c3
i1 0 11 12
i2 13 14 15
i3 16 17 18
# statistics 数据统计
# head():查看数据前几项,看数据长什么样
# info():查看数据类型,以及数据缺失情况
# descibe():查看数据描述统计性信息,数据大概分布情况)
df.iloc[:, :] = np.random.randn(9).reshape((3, 3))
print(df)
print('xxxxxxxxx')
print(df.head(1))
print(df.tail(1))
print('xxxxxxxxx')
# 求和,求均值,求标准差
print(df.sum())
print(df.mean())
print(df.std())
print('xxxxxxxxx')
print(df.describe())
# DataFrame.corr(method='pearson', min_periods=1)
# 参数说明:
# method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
# pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
# kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
# spearman:非线性的,非正太分析的数据的相关系数
# min_periods:样本最少的数据量
# 返回值:各类型之间的相关系数DataFrame表格。
print(df.corr())
c1 c2 c3
i1 0.449184 -0.156909 0.856688
i2 1.685423 0.621874 -0.683549
i3 0.097459 0.135776 -0.261908
xxxxxxxxx
c1 c2 c3
i1 0.449184 -0.156909 0.856688
c1 c2 c3
i3 0.097459 0.135776 -0.261908
xxxxxxxxx
c1 2.232067
c2 0.600741
c3 -0.088769
dtype: float64
c1 0.744022
c2 0.200247
c3 -0.029590
dtype: float64
c1 0.834029
c2 0.393374
c3 0.795965
dtype: float64
xxxxxxxxx
c1 c2 c3
count 3.000000 3.000000 3.000000
mean 0.744022 0.200247 -0.029590
std 0.834029 0.393374 0.795965
min 0.097459 -0.156909 -0.683549
25% 0.273322 -0.010567 -0.472728
50% 0.449184 0.135776 -0.261908
75% 1.067304 0.378825 0.297390
max 1.685423 0.621874 0.856688
c1 c2 c3
c1 1.000000 0.828912 -0.547359
c2 0.828912 1.000000 -0.921856
c3 -0.547359 -0.921856 1.000000
# csv file read (and write)
# more formats: json, XML, pickle
df = pd.read_csv("titanic.csv")
print(df)
print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
# 显示数据集的后五行
print(df.tail(5))
# 显示Survived的平均值
print(df['Survived'].mean())
# 显示Age的统计描述信息
print(df['Age'].describe())
print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
# 读取Age的数值并排序展示
age = df['Age'].values
print(age)
age.sort()
print(age)
PassengerId Survived Pclass \
0 1 0 3
1 2 1 1
2 3 1 3
3 4 1 1
4 5 0 3
.. ... ... ...
886 887 0 2
887 888 1 1
888 889 0 3
889 890 1 1
890 891 0 3
Name Sex Age SibSp \
0 Braund, Mr. Owen Harris male 22.0 1
1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1
2 Heikkinen, Miss. Laina female 26.0 0
3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1
4 Allen, Mr. William Henry male 35.0 0
.. ... ... ... ...
886 Montvila, Rev. Juozas male 27.0 0
887 Graham, Miss. Margaret Edith female 19.0 0
888 Johnston, Miss. Catherine Helen "Carrie" female NaN 1
889 Behr, Mr. Karl Howell male 26.0 0
890 Dooley, Mr. Patrick male 32.0 0
Parch Ticket Fare Cabin Embarked
0 0 A/5 21171 7.2500 NaN S
1 0 PC 17599 71.2833 C85 C
2 0 STON/O2. 3101282 7.9250 NaN S
3 0 113803 53.1000 C123 S
4 0 373450 8.0500 NaN S
.. ... ... ... ... ...
886 0 211536 13.0000 NaN S
887 0 112053 30.0000 B42 S
888 2 W./C. 6607 23.4500 NaN S
889 0 111369 30.0000 C148 C
890 0 370376 7.7500 NaN Q
[891 rows x 12 columns]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PassengerId Survived Pclass Name \
886 887 0 2 Montvila, Rev. Juozas
887 888 1 1 Graham, Miss. Margaret Edith
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie"
889 890 1 1 Behr, Mr. Karl Howell
890 891 0 3 Dooley, Mr. Patrick
Sex Age SibSp Parch Ticket Fare Cabin Embarked
886 male 27.0 0 0 211536 13.00 NaN S
887 female 19.0 0 0 112053 30.00 B42 S
888 female NaN 1 2 W./C. 6607 23.45 NaN S
889 male 26.0 0 0 111369 30.00 C148 C
890 male 32.0 0 0 370376 7.75 NaN Q
0.3838383838383838
count 714.000000
mean 29.699118
std 14.526497
min 0.420000
25% 20.125000
50% 28.000000
75% 38.000000
max 80.000000
Name: Age, dtype: float64
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[22. 38. 26. 35. 35. nan 54. 2. 27. 14. 4. 58.
20. 39. 14. 55. 2. nan 31. nan 35. 34. 15. 28.
8. 38. nan 19. nan nan 40. nan nan 66. 28. 42.
nan 21. 18. 14. 40. 27. nan 3. 19. nan nan nan
nan 18. 7. 21. 49. 29. 65. nan 21. 28.5 5. 11.
22. 38. 45. 4. nan nan 29. 19. 17. 26. 32. 16.
21. 26. 32. 25. nan nan 0.83 30. 22. 29. nan 28.
17. 33. 16. nan 23. 24. 29. 20. 46. 26. 59. nan
71. 23. 34. 34. 28. nan 21. 33. 37. 28. 21. nan
38. nan 47. 14.5 22. 20. 17. 21. 70.5 29. 24. 2.
21. nan 32.5 32.5 54. 12. nan 24. nan 45. 33. 20.
47. 29. 25. 23. 19. 37. 16. 24. nan 22. 24. 19.
18. 19. 27. 9. 36.5 42. 51. 22. 55.5 40.5 nan 51.
16. 30. nan nan 44. 40. 26. 17. 1. 9. nan 45.
nan 28. 61. 4. 1. 21. 56. 18. nan 50. 30. 36.
nan nan 9. 1. 4. nan nan 45. 40. 36. 32. 19.
19. 3. 44. 58. nan 42. nan 24. 28. nan 34. 45.5
18. 2. 32. 26. 16. 40. 24. 35. 22. 30. nan 31.
27. 42. 32. 30. 16. 27. 51. nan 38. 22. 19. 20.5
18. nan 35. 29. 59. 5. 24. nan 44. 8. 19. 33.
nan nan 29. 22. 30. 44. 25. 24. 37. 54. nan 29.
62. 30. 41. 29. nan 30. 35. 50. nan 3. 52. 40.
nan 36. 16. 25. 58. 35. nan 25. 41. 37. nan 63.
45. nan 7. 35. 65. 28. 16. 19. nan 33. 30. 22.
42. 22. 26. 19. 36. 24. 24. nan 23.5 2. nan 50.
nan nan 19. nan nan 0.92 nan 17. 30. 30. 24. 18.
26. 28. 43. 26. 24. 54. 31. 40. 22. 27. 30. 22.
nan 36. 61. 36. 31. 16. nan 45.5 38. 16. nan nan
29. 41. 45. 45. 2. 24. 28. 25. 36. 24. 40. nan
3. 42. 23. nan 15. 25. nan 28. 22. 38. nan nan
40. 29. 45. 35. nan 30. 60. nan nan 24. 25. 18.
19. 22. 3. nan 22. 27. 20. 19. 42. 1. 32. 35.
nan 18. 1. 36. nan 17. 36. 21. 28. 23. 24. 22.
31. 46. 23. 28. 39. 26. 21. 28. 20. 34. 51. 3.
21. nan nan nan 33. nan 44. nan 34. 18. 30. 10.
nan 21. 29. 28. 18. nan 28. 19. nan 32. 28. nan
42. 17. 50. 14. 21. 24. 64. 31. 45. 20. 25. 28.
nan 4. 13. 34. 5. 52. 36. nan 30. 49. nan 29.
65. nan 50. nan 48. 34. 47. 48. nan 38. nan 56.
nan 0.75 nan 38. 33. 23. 22. nan 34. 29. 22. 2.
9. nan 50. 63. 25. nan 35. 58. 30. 9. nan 21.
55. 71. 21. nan 54. nan 25. 24. 17. 21. nan 37.
16. 18. 33. nan 28. 26. 29. nan 36. 54. 24. 47.
34. nan 36. 32. 30. 22. nan 44. nan 40.5 50. nan
39. 23. 2. nan 17. nan 30. 7. 45. 30. nan 22.
36. 9. 11. 32. 50. 64. 19. nan 33. 8. 17. 27.
nan 22. 22. 62. 48. nan 39. 36. nan 40. 28. nan
nan 24. 19. 29. nan 32. 62. 53. 36. nan 16. 19.
34. 39. nan 32. 25. 39. 54. 36. nan 18. 47. 60.
22. nan 35. 52. 47. nan 37. 36. nan 49. nan 49.
24. nan nan 44. 35. 36. 30. 27. 22. 40. 39. nan
nan nan 35. 24. 34. 26. 4. 26. 27. 42. 20. 21.
21. 61. 57. 21. 26. nan 80. 51. 32. nan 9. 28.
32. 31. 41. nan 20. 24. 2. nan 0.75 48. 19. 56.
nan 23. nan 18. 21. nan 18. 24. nan 32. 23. 58.
50. 40. 47. 36. 20. 32. 25. nan 43. nan 40. 31.
70. 31. nan 18. 24.5 18. 43. 36. nan 27. 20. 14.
60. 25. 14. 19. 18. 15. 31. 4. nan 25. 60. 52.
44. nan 49. 42. 18. 35. 18. 25. 26. 39. 45. 42.
22. nan 24. nan 48. 29. 52. 19. 38. 27. nan 33.
6. 17. 34. 50. 27. 20. 30. nan 25. 25. 29. 11.
nan 23. 23. 28.5 48. 35. nan nan nan 36. 21. 24.
31. 70. 16. 30. 19. 31. 4. 6. 33. 23. 48. 0.67
28. 18. 34. 33. nan 41. 20. 36. 16. 51. nan 30.5
nan 32. 24. 48. 57. nan 54. 18. nan 5. nan 43.
13. 17. 29. nan 25. 25. 18. 8. 1. 46. nan 16.
nan nan 25. 39. 49. 31. 30. 30. 34. 31. 11. 0.42
27. 31. 39. 18. 39. 33. 26. 39. 35. 6. 30.5 nan
23. 31. 43. 10. 52. 27. 38. 27. 2. nan nan 1.
nan 62. 15. 0.83 nan 23. 18. 39. 21. nan 32. nan
20. 16. 30. 34.5 17. 42. nan 35. 28. nan 4. 74.
9. 16. 44. 18. 45. 51. 24. nan 41. 21. 48. nan
24. 42. 27. 31. nan 4. 26. 47. 33. 47. 28. 15.
20. 19. nan 56. 25. 33. 22. 28. 25. 39. 27. 19.
nan 26. 32. ]
[ 0.42 0.67 0.75 0.75 0.83 0.83 0.92 1. 1. 1. 1. 1.
1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
3. 3. 3. 3. 3. 3. 4. 4. 4. 4. 4. 4.
4. 4. 4. 4. 5. 5. 5. 5. 6. 6. 6. 7.
7. 7. 8. 8. 8. 8. 9. 9. 9. 9. 9. 9.
9. 9. 10. 10. 11. 11. 11. 11. 12. 13. 13. 14.
14. 14. 14. 14. 14. 14.5 15. 15. 15. 15. 15. 16.
16. 16. 16. 16. 16. 16. 16. 16. 16. 16. 16. 16.
16. 16. 16. 16. 17. 17. 17. 17. 17. 17. 17. 17.
17. 17. 17. 17. 17. 18. 18. 18. 18. 18. 18. 18.
18. 18. 18. 18. 18. 18. 18. 18. 18. 18. 18. 18.
18. 18. 18. 18. 18. 18. 18. 19. 19. 19. 19. 19.
19. 19. 19. 19. 19. 19. 19. 19. 19. 19. 19. 19.
19. 19. 19. 19. 19. 19. 19. 19. 20. 20. 20. 20.
20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20.5
21. 21. 21. 21. 21. 21. 21. 21. 21. 21. 21. 21.
21. 21. 21. 21. 21. 21. 21. 21. 21. 21. 21. 21.
22. 22. 22. 22. 22. 22. 22. 22. 22. 22. 22. 22.
22. 22. 22. 22. 22. 22. 22. 22. 22. 22. 22. 22.
22. 22. 22. 23. 23. 23. 23. 23. 23. 23. 23. 23.
23. 23. 23. 23. 23. 23. 23.5 24. 24. 24. 24. 24.
24. 24. 24. 24. 24. 24. 24. 24. 24. 24. 24. 24.
24. 24. 24. 24. 24. 24. 24. 24. 24. 24. 24. 24.
24. 24.5 25. 25. 25. 25. 25. 25. 25. 25. 25. 25.
25. 25. 25. 25. 25. 25. 25. 25. 25. 25. 25. 25.
25. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26. 26.
26. 26. 26. 26. 26. 26. 26. 27. 27. 27. 27. 27.
27. 27. 27. 27. 27. 27. 27. 27. 27. 27. 27. 27.
27. 28. 28. 28. 28. 28. 28. 28. 28. 28. 28. 28.
28. 28. 28. 28. 28. 28. 28. 28. 28. 28. 28. 28.
28. 28. 28.5 28.5 29. 29. 29. 29. 29. 29. 29. 29.
29. 29. 29. 29. 29. 29. 29. 29. 29. 29. 29. 29.
30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30.
30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30.
30. 30.5 30.5 31. 31. 31. 31. 31. 31. 31. 31. 31.
31. 31. 31. 31. 31. 31. 31. 31. 32. 32. 32. 32.
32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32.
32. 32. 32.5 32.5 33. 33. 33. 33. 33. 33. 33. 33.
33. 33. 33. 33. 33. 33. 33. 34. 34. 34. 34. 34.
34. 34. 34. 34. 34. 34. 34. 34. 34. 34. 34.5 35.
35. 35. 35. 35. 35. 35. 35. 35. 35. 35. 35. 35.
35. 35. 35. 35. 35. 36. 36. 36. 36. 36. 36. 36.
36. 36. 36. 36. 36. 36. 36. 36. 36. 36. 36. 36.
36. 36. 36. 36.5 37. 37. 37. 37. 37. 37. 38. 38.
38. 38. 38. 38. 38. 38. 38. 38. 38. 39. 39. 39.
39. 39. 39. 39. 39. 39. 39. 39. 39. 39. 39. 40.
40. 40. 40. 40. 40. 40. 40. 40. 40. 40. 40. 40.
40.5 40.5 41. 41. 41. 41. 41. 41. 42. 42. 42. 42.
42. 42. 42. 42. 42. 42. 42. 42. 42. 43. 43. 43.
43. 43. 44. 44. 44. 44. 44. 44. 44. 44. 44. 45.
45. 45. 45. 45. 45. 45. 45. 45. 45. 45. 45. 45.5
45.5 46. 46. 46. 47. 47. 47. 47. 47. 47. 47. 47.
47. 48. 48. 48. 48. 48. 48. 48. 48. 48. 49. 49.
49. 49. 49. 49. 50. 50. 50. 50. 50. 50. 50. 50.
50. 50. 51. 51. 51. 51. 51. 51. 51. 52. 52. 52.
52. 52. 52. 53. 54. 54. 54. 54. 54. 54. 54. 54.
55. 55. 55.5 56. 56. 56. 56. 57. 57. 58. 58. 58.
58. 58. 59. 59. 60. 60. 60. 60. 61. 61. 61. 62.
62. 62. 62. 63. 63. 64. 64. 65. 65. 65. 66. 70.
70. 70.5 71. 71. 74. 80. nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan]
版权声明:本文为qiao_qiao_happy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。