Python-Pandas学习

数据结构

Pandas是基于Numpy的库,其拥有两种数据结构:Series 和 DataFrame。

pandas-series

pandas-dataframe

案例

创建空DataFrame并一行一行写入数据

1
2
3
4
5
6
7
8
9
import pandas as pd
import numpy as np

df = pd.DataFrame(columns=('x', 'y'))
for i in range(100):
[x, y, z] = np.random.random(size=3)
record = {'x': x, 'y': y, 'z': z}
df = df.append(record, ignore_index=True)
print(df)

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
           x         y         z
0 0.771321 0.020752 0.633648
1 0.748804 0.498507 0.224797
2 0.198063 0.760531 0.169111
3 0.088340 0.685360 0.953393
4 0.003948 0.512192 0.812621
.. ... ... ...
95 0.396118 0.897280 0.058822
96 0.405379 0.130176 0.086969
97 0.783964 0.304573 0.584056
98 0.878466 0.880792 0.600954
99 0.645228 0.056628 0.297484

写文件:

1
df.to_csv('output.csv', index=None)

过滤:取某些行

取行

1
2
mult_row = df.loc[1:4]
print(mult_row)

结果 ,注意这里的行是包括第四行的。

1
2
3
4
5
          x         y         z
1 0.302333 0.146756 0.092339
2 0.186260 0.345561 0.396767
3 0.538817 0.419195 0.685220
4 0.204452 0.878117 0.027388

根据条件过过滤

错误用法

1
2
# wrong example
df1 = df[(df['x'] > 0.5) and (df['y'] > 0.3)]

正确的过滤用法

1
2
3
4
5
6
# right example
df1 = df[(df['x'] > 0.5) & (df['y'] > 0.3)]
print(df1)

df2 = df.query('x > 0.5 & y > 0.3')
print(df2)

上面两个的输出都是,注意索引:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
           x         y         z
3 0.538817 0.419195 0.685220
5 0.670468 0.417305 0.558690
7 0.968262 0.313424 0.692323
17 0.678836 0.211628 0.265547
31 0.578390 0.408137 0.237027
33 0.617145 0.326645 0.527058
34 0.885942 0.357270 0.908535
35 0.623360 0.015821 0.929437
44 0.561030 0.018647 0.800633
53 0.846829 0.239848 0.493770
60 0.629718 0.210174 0.752756
63 0.924808 0.263297 0.065961
65 0.931972 0.013952 0.234362
79 0.593481 0.433676 0.807361
83 0.918602 0.000402 0.976759
88 0.864479 0.322681 0.670789
94 0.662720 0.270208 0.252367

过滤:取某些列

取列

1
2
3
4
# 取单个列
sing_col = df['x']
## 取多个列
mult_col = df[['x', 'y']]

取列并转换为列表

1
x_list = df['x'].tolist()

取某个值

1
print(df.loc[2][2])

参考

Thanks for rewarding