阿倍森

导航

江荣烽---第四次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/BD-HairlineMaintenanceAssociation
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/BD-HairlineMaintenanceAssociation/homework/12469
这个作业的目标 <学习Pandas为实战做准备>
学号 <212106419>
一:学习流程
看完Pandas视频:https://www.bilibili.com/video/BV1Qg411F7QZ?p=14
笔记:
import pandas as pd
import numpy as np
stock_change = np.random.normal(0,1,(10,5))

pd.DataFrame(stock_change)

增加行索引:
stock_rise = pd.DataFrame(stock_change)
初始化行下标:stock_code = ["股票{}".format(i+1)for i in range(stock_rise.shape[0])]
加入行下标:pd.DataFrame(stock_change,index = stock_code)

日期时间:data = pd.data_range(start = "20220210"#起始时间,end = "20220215"#结束时间,periods = stock_rise.shape[1]#个数,freq = "B"#设置统计方式)
加入列下标:pd.DataFrame(stock_change,index = stock_code,columns = data)

.head(int)#如果不输入形参,默认显示矩阵的前五行
.tail(int)#后五行

对行或列下标进行索引更改时,必须进行整体的改变,单独某行是无法改变的(.index(int),.columns(int))

重设索引(行或者列):.reset_index(drop = True#是否删除原有的下标)

以字典创建矩阵:

df = pd.DataFrame({"day":[1,2,3,4],
"month":[3,4,5,6],
"year":[2019,2020,2021,2022]
})

keys索引:df.set_index(keys = ["year","month"])

Pandas索引必须遵守先列后行

1班	2班	3班

男生 甲 乙 丙
女生 丁 戊 庚

列:查找“甲”list[1班][男生]

.loc[]:

list.loc["男生":“女生”,"1班"]#先行后列索引

.iloc[]:同上,但是是通过下标进行索引#0 1 2 3

.ix[]:混合索引

Pandas赋值操作:

list.1班 = ...
list["1班"] = ...

排序:

sort_values(by = ["成员"],ascending = True or False)#排序的行,升序或降序
sort_index()行排序

算数运算:

list["1班"].add(10)#此列每行+10

逻辑运算><&|:

data[list["列"]>5]#列出此列下大于5的行

逻辑运算函数:正常调用时返回True 和 False,可以通过data[]获取具体的数值.

data.query("条件表达式")
data.isin([values])#筛选存在的值

显示图形:

.plot()
需要import matplotlib.pyplot as plt
plt.show()需要调用show才能显示结果

自定义运算:

.apply(func,axis)#可以是匿名函数,axis=1以行

文件读取与存储:

CSV:pd.read_csv("路径",usecols = ["要读取的列下标"])
.to_csv("要保存的路径",columns = ["要保存的列"],index = True是否保存行下标)
HDF:pd.read_hdf("路径")
.to_hdf("要存的路径",key = "指定的键")#再次读取时要制定键
JSON:pd.read_json("路径",orient = ,lines = )
.to_json("要存的路径",orient = "按照什么方式进行读取",lines = True是否按照行来进行读取)

如何处理缺失值:

pd.isnull()
pd.notnull()#一般配合np.any(),np.all()使用

删除缺失值:.dropna()#不修改原来数值

替换缺失值.fillna(value = 用来替代的内容(一般用.mean()平均数来替换),inplace = True是否对原数据进行更改)

如果缺失值不是NAN:.replace(to_replace = "?",value = "NaN")或者直接使用.dropna()删除缺失值

数据离散化:

pd.qcut(要分类的内容,bins类数)
.value_counts()计算每个类的数量
pd.cut(分组的对象,bins每个组的范围)bins = [-100,1,-10,20]划分区间进行自定义分组
pd.getdummies(已经被分类好的对象,prefix = "列下标更好的声明")#one_hot编码

数据合并:

pd.concat(对象,对象,axis = 1或0)
pd.merge(left左表,right右表,on = 指定键(也就是列下标),how = "按什么方式进行拼接")

交叉表与透视表:

pd.crosstab()返回具体数量
对象.pivot_table()返回占比情况

分组和聚合:

分组之后不进行聚合没有任何意义

对象.groupby(list["键值"])["对象"].mean()之后要聚合

posted on 2022-02-17 20:23  阿倍森  阅读(22)  评论(0编辑  收藏  举报