Pandas
一个用于表示表格类型的内容
- 课时4:jupyter21 分22 秒
- 课时5:pandas的内容24 分31 秒
- 课时6:series内容38 分19 秒
- 课时7:dataframe25 分50 秒
1 2 3
| import pandas as pd import numpy as np
|
1
| s = pd.Series([2,4,6,8,10])
|
0 2
1 4
2 6
3 8
4 10
dtype: int64
1 2 3 4 5 6
| d = pd.DataFrame([ [2,4,6,8,10], [7,3,4,7,15], ])
d
|
|
0 |
1 |
2 |
3 |
4 |
0 |
2 |
4 |
6 |
8 |
10 |
1 |
7 |
3 |
4 |
7 |
15 |
0 2
1 7
Name: 0, dtype: int64
这里要注意直接用中括号获取的是,列,因为比如我们要获取一个表中的age属性,通常的拿这age一列的数据出来,所以想要获取一条数据,需要再中括号一下
获取一行怎么获取
0 2
1 4
2 6
3 8
4 10
Name: 0, dtype: int64
这个给我们返回的是一个series
实际上这个dataframe是由多个series组成的
所以我们可以这么写
1 2 3 4 5
| d2 = pd.DataFrame([ pd.Series([2,4,6,8,10]), pd.Series([7,3,4,7,15]), ]) d2
|
|
0 |
1 |
2 |
3 |
4 |
0 |
2 |
4 |
6 |
8 |
10 |
1 |
7 |
3 |
4 |
7 |
15 |
1 2 3 4 5 6 7 8
| class1 = pd.Series({'hong': 50, 'huang': 90, 'qing': 60})
class1_values = {'hong': 50, 'huang': 90, 'qing': 60} class1_index = ['hong', 'lv', 'lan']
class1 = pd.Series(class1_values, index=class1_index) class1
|
hong 50.0
lv NaN
lan NaN
dtype: float64
1 2 3 4 5 6 7 8 9 10 11 12
| class1
class1.values
class1.index
class1.index[2] class1.index.values
|
array(['hong', 'lv', 'lan'], dtype=object)
1 2 3 4 5
| class1_index class1.hong
|
50.0
lv NaN
lan NaN
hong 50.0
dtype: float64
hong 50.0
dtype: float64
hong True
lv False
lan False
dtype: bool
hong 50.0
dtype: float64
hong 51.0
lv NaN
lan NaN
dtype: float64
- 这种整体的加一,他是效率非常非常高的
- 如果是我们的列表,想要实现这个效果,那就得循环这个列表
从列表中获取一个数据,把这个数据+1,放到新的列表中
- 而我们这个是将三条数据同时拿出来(就像并发一样),然后同时进行+1操作
然后在同时放到一个新的里面.
- 我们可以通过那个运算时间的魔术命令来帮忙验证一下
1 2 3 4 5 6
| %%timeit
class2_values = [1024,3,5,7,9,10,13,115,127,149,221]
class2 = pd.Series(class2_values) class2+1
|
198 µs ± 9.37 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
100 µs ± 3.56 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
1 2 3
| %%timeit for i in range(100000): i+=1
|
4.12 ms ± 108 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
1 2 3 4
| %%timeit a = pd.Series(range(100000)) a+1
|
562 µs ± 72 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
我猜可能是因为这个数据量不够大,还显示不出来这个库的优势,所以得多试试才行
有的时候需要用GPU来计算,如果用CPU,会非常耗CPU,因为GPU更擅长这种小量的计算,他就相当于一堆小学生,这中加减乘除,小学生比CPU数学家更厉害
11.0
11.0
1 2 3 4 5 6
| class2 = pd.Series([1024,3,5,7,9,10,13,115,127,149,221])
print(class2.mean()) print(np.mean(class2)) class2
|
153.0
153.0
0 1024
1 3
2 5
3 7
4 9
5 10
6 13
7 115
8 127
9 149
10 221
dtype: int64
1 2 3 4 5 6 7 8
| class3 = pd.Series([1024,13,5,7,9,10,1,115,127,149,221])
print(np.median(class3))
print(class3.median())
|
13.0
13.0
89190.6
298.6479532827908
1 2 3 4 5 6 7 8 9 10 11
| print(class2) print("-"*50) print(class2+1) print("-"*50)
print(10 in class2) print("-"*50) print(5 in class2 + 1)
|
0 1024
1 3
2 5
3 7
4 9
5 10
6 13
7 115
8 127
9 149
10 221
dtype: int64
--------------------------------------------------
0 1025
1 4
2 6
3 8
4 10
5 11
6 14
7 116
8 128
9 150
10 222
dtype: int64
--------------------------------------------------
True
--------------------------------------------------
True
1 2 3
| print(4 in class2) print(4 in class2.values)
|
True
False
1 2 3 4 5 6 7 8 9 10
| class2['ming'] = 0 class2['hua'] = 0 class2['hong'] = 0
class2[['hua','hong']] = 55 class2[['hua','hong']] = [35, 55] class2['hua','hong'] = [1, 2] class2
|
0 1024
1 3
2 5
3 7
4 9
5 10
6 13
7 115
8 127
9 149
10 221
ming 0
hua 1
hong 2
dtype: int64
1 2 3 4 5
| class4 = class2.copy() class4 = class4+1 print(class2) class4
|
0 1024
1 3
2 5
3 7
4 9
5 10
6 13
7 115
8 127
9 149
10 221
ming 0
hua 1
hong 2
dtype: int64
0 1025
1 4
2 6
3 8
4 10
5 11
6 14
7 116
8 128
9 150
10 222
ming 1
hua 2
hong 3
dtype: int64
1 2
| class2.index = [22,23,24,28,24,29,1,2,3,4,8,5,9,21] class2
|
22 1024
23 3
24 5
28 7
24 9
29 10
1 13
2 115
3 127
4 149
8 221
5 0
9 1
21 2
dtype: int64
1 2 3 4
| df = pd.read_csv("./source/test.csv") df
|
|
ro |
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
c7 |
c8 |
c9 |
c10 |
c11 |
c12 |
c13 |
c14 |
c15 |
c16 |
c17 |
c18 |
0 |
a |
0 |
5 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
1 |
b |
1 |
6 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
11 |
2 |
c |
2 |
7 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
12 |
3 |
d |
3 |
8 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
13 |
4 |
e |
4 |
9 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
14 |
csv中的数据都是用逗号隔开的,出自:
python:pandas——read_csv方法