利用Python进行数据分析(7)-pandas库

目录

0. 回顾

1. 索引对象的其他功能

1.1 更换索引

1.2 删除

1.3 算术和数据对齐

2. 数据结构之间的运算

2.1 灵活的运算符号方法

2.2 dataframe和series对象之间的运算

3. 函数应用和映射

3.1 操作元素的函数

3.2 按行或列执行的操作        

3.3 统计函数

0. 回顾

        之前我们学习了dataframe,这一节我们学习索引对象的一些操作。

1. 索引对象的其他功能

1.1 更换索引

        index索引对象定义之后就不能改变了,但是可以执行更换索引操作来解决这个问题。

        示例1

import pandas as pd

ser = pd.Series([2, 5, 6], index=['one', 'two', 'three'])
print(ser)
ser1 = ser.reindex(['three', 'two', 'one'])
print(ser1)

        运行结果为:

one      2
two      5
three    6
dtype: int64
three    6
two      5
one      2
dtype: int64

        可以看到,此时是改变索引之后再赋值给另一个才行,原来的series是不会改变的,并且索引是之前出现的。

        示例2:对缺失的索引值进行填充。

import pandas as pd

ser = pd.Series([2, 5, 6], index=[0, 3, 5])
print(ser)
ser1 = ser.reindex(range(6), method='ffill')
print(ser1)

        运行结果为:

0    2
3    5
5    6
dtype: int64
0    2
1    2
2    2
3    5
4    5
5    6
dtype: int64

        可以看到,此时利用ffill方法进行填充,其range值是从索引的0位开始的,到最后的地方结束。此时,我们插入的值是参考前面的值,还可以利用bfill参考后面的值。

1.2 删除

        利用drop()函数进行删除。

        示例3

import pandas as pd

ser = pd.Series([2, 5, 6],)
print(ser)
ser1 = ser.drop([0, 2])
print(ser1)

        运行结果为:

0    2
1    5
2    6
dtype: int64
1    5
dtype: int64

        示例4

import pandas as pd

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=['yi', 'er', 'san'])
print(df)
df1 = df.drop([0])
print(df1)
df2 = df.drop(['er'], axis=1)
print(df2)

        运行结果为:

   yi  er  san
0   3   5    7
1   2   4    6
   yi  er  san
1   2   4    6
   yi  san
0   3    7
1   2    6

        需要注意的是,对列进行操作时,需要指定axis轴。

1.3 算术和数据对齐

        当进行操作时,两个对象都有的索引进行运算,不同的则进行保留并赋值为NaN。

        示例5

import pandas as pd

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=['yi', 'er', 'san'])
print(df)
df1 = df.reindex(range(1, 3), method="ffill")
print(df1)
print(df + df1)

        运行结果为:

   yi  er  san
0   3   5    7
1   2   4    6
   yi  er  san
1   2   4    6
2   2   4    6
    yi   er   san
0  NaN  NaN   NaN
1  4.0  8.0  12.0
2  NaN  NaN   NaN

2. 数据结构之间的运算

2.1 灵活的运算符号方法

       可以使用各种算术方法进行运算。

        示例6: 

import pandas as pd

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=['yi', 'er', 'san'])
print(df)
df1 = df.reindex(range(1, 3), method="ffill")
print(df1)
print(df.add(df1))
print(df.mul(df1))

        运行结果为:

   yi  er  san
0   3   5    7
1   2   4    6
   yi  er  san
1   2   4    6
2   2   4    6
    yi   er   san
0  NaN  NaN   NaN
1  4.0  8.0  12.0
2  NaN  NaN   NaN
    yi    er   san
0  NaN   NaN   NaN
1  4.0  16.0  36.0
2  NaN   NaN   NaN
2.2 dataframe和series对象之间的运算

        示例7

import pandas as pd
import numpy as np

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=[0, 1, 2])
print(df)
ser = pd.Series([2, 4, 6])
print(ser)
print(df+ser)

        运行结果为:

   0  1  2
0  3  5  7
1  2  4  6
0    2
1    4
2    6
dtype: int64
   0  1   2
0  5  9  13
1  4  8  12

        可以看到,series的index进行运算时,变成了columns。

3. 函数应用和映射

3.1 操作元素的函数

        示例8

import pandas as pd
import numpy as np

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=[0, 1, 2])
print(df)
print(np.sqrt(df))

        运行结果为:

   0  1  2
0  3  5  7
1  2  4  6
          0         1         2
0  1.732051  2.236068  2.645751
1  1.414214  2.000000  2.449490
3.2 按行或列执行的操作        

        示例9

import pandas as pd

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=[0, 1, 2])
print(df)

f = lambda x: x.max() - x.min()
print(df.apply(f))
print(df.apply(f, axis=1))

        运行结果为:

   0  1  2
0  3  5  7
1  2  4  6
0    1
1    1
2    1
dtype: int64
0    4
1    4
dtype: int64

        可以看到此时,默认为进行列操作,要进行行操作则将axis设置为1。

        示例10

import pandas as pd

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=[0, 1, 2])
print(df)


def f(x):
    return pd.Series([x.max(), x.min()], index=['max', 'min'])


print(df.apply(f))

        运行结果为:

   0  1  2
0  3  5  7
1  2  4  6
     0  1  2
max  3  5  7
min  2  4  6

        同样,也是默认为列,也可以使用axis为1进行行操作。

3.3 统计函数

        示例11:利用相关的函数进行计算。

import pandas as pd

df = pd.DataFrame([[3, 5, 7], [2, 4, 6]],
                  columns=[0, 1, 2])
print(df)
print(df.sum())
print(df.mean())
print(df.describe())

        运行结果为:

   0  1  2
0  3  5  7
1  2  4  6
0     5
1     9
2    13
dtype: int64
0    2.5
1    4.5
2    6.5
dtype: float64
              0         1         2
count  2.000000  2.000000  2.000000
mean   2.500000  4.500000  6.500000
std    0.707107  0.707107  0.707107
min    2.000000  4.000000  6.000000
25%    2.250000  4.250000  6.250000
50%    2.500000  4.500000  6.500000
75%    2.750000  4.750000  6.750000
max    3.000000  5.000000  7.000000
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值