Pandas包

2021-04-17  本文已影响0人  风一样的我1
Pandas.png

一、两个基本数据结构

Series和DataFrame。其中Series的一维的,DateFrame是多维的。

二、与Numpy的不同

  1. Numpy数组中的数据类型是同质的;df中数据类型可以是不同的。
  2. df有索引的对象。index在pd中是一种数据类型。

三、基本属性

index:表示索引
columns:表示列名,其实也是一种索引对象。一般函数默认是按行索引,除非传入index=columns或者axis=1的参数

四、索引对象

五、Series介绍

介绍:单维数组型对象

1.查看索引和值

series_obj.index
series_obj.values

2.生成

a. 传入序列:pd.Series(序列,index=序列),可以指定index
b. 通过字典生成,这样index就是字典键,values是对应的键值

六、DataFrame

1.生成

a. 字典,pd.DataFrame(字典,columns=【可以指定列的顺序】)
b. 嵌套字典,即字典的键值还是字典,通过两个字典的键来确定索引
c. 2维数组
d. 多维列表

2.修改和增加

3.删除

与字典的操作类似,del df[索引]
注意:从df种选取的列是视图,做修改也会改变原数据。

七、索引相关操作

1.重建索引

2.删除索引

八、索引数据

1.标签索引

2.切片和整数

df[2:4]选择行元素
df[列表]选择列元素

3.布尔值索引

df[series > 2]

4.loc和iloc函数

同时选择行标签和列标签的数据

九、算术运算

1.对齐运算

2.广播运算

df和series之间的运算

十、统计方法

十一、排序

十二、特殊函数

1.series.unique()返回Series中的唯一值,相当于sql中的distinct
2.series.value_counts()返回每个值出现的次数。
3.series.isin(序列)返回布尔值,表示series是否在序列中的布尔值。
4.series.str,通过Series的str属性,我们可以对文本进行操作,如去除文本中的某些符号,或利用正则表达式进行匹配。字符串的方法同Python内建字符串方法。

十三、分组聚合

十四、多表关联

  1. 和数据库中的join用法类似。Pandas中有两种方法:
df1=pd.DataFrame({'key':['a', 'b', 'c', 'd', 'a', 'b'], 'data1':range(6)})
df2=pd.DataFrame({'key':['a','b','a','b','d'],'data2':range(5)})
print(df1)
print(df2)
--result
  key  data1
0   a      0
1   b      1
2   c      2
3   d      3
4   a      4
5   b      5
  key  data2
0   a      0
1   b      1
2   a      2
3   b      3
4   d      4
--合并
df1.merge(right=df2, on='key',how='inner')
--合并结果
key data1   data2
0   a   0   0
1   a   0   2
2   a   4   0
3   a   4   2
4   b   1   1
5   b   1   3
6   b   5   1
7   b   5   3
8   d   3   4
  1. 按照索引进行合并
    和merge用法相似,但是按照index进行连接;
  2. concat连接法
    用法:pd.concat([df1, df2])
    像sql中的union用法,即将两个表连接到一块,可以上下连接,也可以左右连接。
df1=pd.DataFrame(
{'A':list('abcde'),
'B':list('ghjik')}
)
df2=pd.DataFrame(
{'C':list('abcde'),
'D':list('ghjik')}
)
print(df1)
print(df2)
--result
 A  B
0  a  g
1  b  h
2  c  j
3  d  i
4  e  k
   C  D
0  a  g
1  b  h
2  c  j
3  d  i
4  e  k
pd.concat([df1,df2])
--result
A   B   C   D
0   a   g   NaN NaN
1   b   h   NaN NaN
2   c   j   NaN NaN
3   d   i   NaN NaN
4   e   k   NaN NaN
0   NaN NaN a   g
1   NaN NaN b   h
2   NaN NaN c   j
3   NaN NaN d   i
4   NaN NaN e   k
-左右连接,相当于join,按照索引进行连接
```python
pd.concat([df1,df2],axis=1)
--result
A   B   C   D
0   a   g   a   g
1   b   h   b   h
2   c   j   c   j
3   d   i   d   i
4   e   k   e   k

十五、去除空值和重复值

  1. fillna()使用指定的对象填充;
  2. dropna(),删除所有含有空值的行。若要删除列,则改变axis=1
  3. 查找重复值,df.duplicated() 返回一个布尔数组,如果该数据是在其它行也出现,则返回True。注,如果是查找df的重复,则两行数据完全相等才会返回True,因此一般判断某个字段。

十六、apply函数的用法

apply函数可以让我们自定义函数并运用于整个数组。
eg. 首先通过city字段进行聚合,再找出每个分组内按照positionId排序前两个的数据。
原表如图:


image.png
def fun(x):
    x.sort_values(by=['positionId'],ascending=True)
    return x[:2]
position.groupby(by=['city']).apply(fun)

进行聚类分组,结果如图


image.png

十七、数据透视表

通过数据透视表,将数据按照多个维度进行聚类。

position.pivot_table(index=['city','education'],columns='industryField',values='companyId')

返回的结果:


image.png

如果让不同的列使用不同的聚类函数,可以使用aggfunc自定义函数
,使用列表为每个values字段传入不同的函数,注意传入的函数是自定义形式

上一篇下一篇

猜你喜欢

热点阅读