内容:
·各种函数运算
·DataFrame运算
·DataFrame和一个数的运算
·DataFrame和DataFrame的运算
·DataFrame和numpy数组的运算
·DataFrame和Series数组的运算
·根据某一列的数值,将整个数组重新排列
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# 定义DataFrame数组->df
index = ["fom", "gom", "hom", "jom", "kom", "lom"]
dict_things = {
"number": Series(data=np.random.randint(0, 100, size=6), index=index),
"sum": Series(data=np.random.randint(0, 100, size=6), index=index),
"much": Series(data=np.random.randint(0, 100, size=6), index=index)
}
df = DataFrame(dict_things)
print("df:\n", df)
运行结果:
【函数运算】
函数运算大致和Series数组一致,下例是“加法函数”大致代码:
在这里,需要注意:
求对某一行的运算时,令axis=1;
求对某一列的运算时,令axis=0。
# 求平均值:
# 求行平均值:axis="columns" or axis=1
# 求列平均值:axis="index" or axis=0
print("行平均值:\n", df.mean(axis="columns"))
print("列平均值:\n", df.mean(axis=0))
print()
运行结果:
【DataFrame运算】
(DataFrame和一个数的运算)
DataFrame和一个数字进行运算(广播机制)
# DataFrame和一个数字进行运算(广播机制)
print("df+1:\n", df + 1)
运行结果:
(DataFrame和DataFrame的运算)
# DataFrame和DataFrame进行运算(索引对齐,不分方向)
df_1 = DataFrame(data=np.random.randint(0, 100, size=(5, 5)),
columns=list("ABCDE"),
index=list("abcde"))
df_2 = DataFrame(data=np.random.randint(0, 100, size=(4, 4)),
columns=list("ABCD"),
index=list("abcd"))
print("df_1+df_2:\n", df_1 + df_2)
print()
运行结果:
(DataFrame和numpy数组的运算)
DataFrame和numpy数组的运算,符合广播机制,如果形状一致,那么就会按照对应位置,进行相应的运算。
# DataFrame和numpy数组进行运算:(广播机制)
# 如果形状一致,那么就会按照对应位置,进行相应的运算
arr = df_1.values
print("arr:\n", arr)
print("df_2+arr:\n", df_1 + arr)
运行结果:
(DataFrame和Series数组的运算)
# DataFrame和Series数组进行运算,要注意索引对齐,axis=0(索引对齐,axis控制方向)
ser = Series(data=np.random.randint(0, 100, size=4), index=list("ABCD"))
print("df_1+ser:\n", df_1+ser)
print(df_1.add(ser, axis=1))
运行结果:
【根据某一列的数值,将整个数组重新排列】
return_things = role_things.sort_values(by="索引,默认为列索引", ascending=True,axis=0)
传入参数by=“索引,默认为列索引”
ascending=True:从小到大
ascending=False:从大到小