Vue框架:
从项目学Vue
OJ算法系列:
神机百炼 - 算法详解
Linux操作系统:
风后奇门 - linux
C++11:
通天箓 - C++11
一行检查是否下载过Pandas:
pip list
一行下载:
pip install pandas
函数 | 功能 |
---|---|
count | 统计非空值个数 |
max | 最大值 |
min | 最小值 |
sum | 求和 |
prod | 乘积 |
cumsum | 累和 |
cumprod | 累乘 |
cummax | 累积最大值 |
cummin | 累积最小值 |
mean | 平均值 |
std | 标准差 |
var | 方差 |
median | 算数中位数 |
abs | 绝对值 |
unique | 唯一值列表 |
nunique | 唯一值个数 |
value_counts | 唯一值及其频数 |
skew | 三阶偏度 |
kurt | 四阶峰度 |
corr | 相关系数矩阵 |
cov | 协方差矩阵 |
describe将显示所有数值型特征的count(),mean(),std(),max&min()等
import pandas as pd
dataframe = pd.DataFrame({'a' : [1, 2, 3, 4, 5],'b' : [1.1, 1.2, 1.3, 1.4, 1.5],'c' : ['a', 'b', 'c', 'd', 'e']
})
dataframe.describe()
# 均值
print(DataFrame.mean())# 标准差
print(DataFrame.std())# 累和
print(DataFrame.cumsum())# 累乘
print(DataFrame.iloc[:, 0:2].cumprod())
import numpy as np
dataframe = pd.DataFrame({'id' : np.arange(10),#等比数列:起点、终点、个数,幂'value' : np.logspace(1, 10, 10, base = 2),#等差数列:起点、终点、个数'weight' : np.linspace(1, 10, 10)
})
print(dataframe)
#skew()>0,value右侧异常值比较多
print(dataframe.skew())
#挑选数值型特征
num_feats = dataframe.dtypes[dataframe.dtypes != 'object'].index
import matplotlib.pyplot as plt
plt.figure(figsize = (8, 8))#8inch * 8inch
fig, ax = plt.subplots(2, 2)
for row in range(2):for col in range(2):if row*2+col > 2 :continuedata = dataframe[num_feats[row*2+col]]ax[row][col].plot(data.index, data.values)ax[row][col].set_title(f'{num_feats[row*2+col]}')
# 自动保持子图之间的正确间距。
fig.tight_layout()
plt.show()
Kurtosis=E[(x−E(x))/(D(x))4]−3Kurtosis = E[(x - E(x)) / (\sqrt{D(x)})^4] - 3Kurtosis=E[(x−E(x))/(D(x))4]−3
print(dataframe.kurt())
cov(X,Y)=E[(X−E[X])∗(Y−E[Y])],cov(X,Y)=E[ (X-E[X]) * (Y-E[Y]) ],cov(X,Y)=E[(X−E[X])∗(Y−E[Y])],
dataframe.cov()
dataframe.corr()
#转型字典
gendermap = {'F' : 0, 'M' : 1}#数据
dataframe = pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(15,50,10),"salary":np.random.randint(5,50,10),})#map方法
dataframe['gender'] = dataframe['gender'].map(gendermap)
print(dataframe)
dataframe = pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(15,50,10),"salary":np.random.randint(5,50,10),})
print(dataframe)
print('*'*40)#转型函数
def gender_map(x) :gender = 0 if x == 'F' else 1return genderdataframe['gender'] = dataframe['gender'].map(gender_map)print(dataframe)
df=pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(15,50,10),"salary":np.random.randint(5,50,10),})print(df)
print('*'*40)
print(df[['age', 'salary']].apply(lambda x: x*2))
#传入的函数也可以是pandas和python内置函数
print(df[['age', 'salary']].apply(max))
print('*'*30)
print(df[['age', 'salary']].apply(np.mean))
#按值遍历调用
def apply_func(row):a = row['name']b = row['gender']c = row['age']return f'name:{a},gender:{b}, age:{c}'#原地修改,增加一列all
df["all"] = df.apply(lambda row:apply_func(row), axis = 1)
#axis = 1,每次row为dataframe内的一行
print(df)
import numpy as np
dfc=pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(25,28,10),"salary":np.random.randint(5,50,10),})#划分成组后求对应组的和结果
print(dfc.groupby(by='gender').sum())
print("*"*25)
# groupby查传入的可以时多个属性
print(dfc.groupby(by=['gender','age']).sum())
df=pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(25,28,10),"salary":np.random.randint(5,50,10),})
print(df)
print('*'*40)#此处的x也是一个dataframe
def group_staff_salary(x):df1 = x.sort_values(by = 'salary',ascending=True)
#ascending = True为从大到小的顺序,默认倒序return df1df.groupby('gender',as_index=True).apply(group_staff_salary)
#只看每组最高工资:
df=pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(25,28,10),"salary":np.random.randint(5,50,10),})
print(df)
print("*"*40)#此处的x也是一个dataframe
def group_staff_salary(x):df1 = x.sort_values(by = 'salary',ascending=True)return df1.iloc[-1, :]df.groupby('gender',as_index=True).apply(group_staff_salary)
# 1:字典:key为列,val为操作函数
df=pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":np.random.randint(25,28,10),"salary":np.random.randint(5,50,10),})df.agg({'age':['max'], 'salary':['mean', 'std']})
df.groupby('gender').agg(['max', 'min', 'median'])
df.groupby(['gender']).agg(lambda x: x.mean()-x.min())
df.groupby(['gender']).agg([lambda x: x.max()-x.min(), lambda x: x.mean()-x.min()])
pd.read_csv('./test.csv')
df.to_csv('./test.csv',index=False)
#不写行名
pd.read_excel('./test.xlsx')
df.to_excel('./test.xlsx',index=True)
#写行名