【pandas一篇就够了】

案例知识点

import numpy as np
import pandas as pd
stock_change = np.random.normal(0, 1, (10, 5))## 创建ndarray数据
data = pd.DataFrame(stock_change)
data = pd.DataFrame({“a”: [], “b”: []}) # 新的一种创建方法
data.shape # 获取DataFrame的行数列数
stock_code = [“股票{}”.format(i+1) for i in range(data.shape[0])] # 生成股票行索引
date = pd.date_range(“2022-01-01”, periods=data.shape[1], freq=‘B’) # 生成一个时间序列作为列索引, date_range(start, end, periods, freq)–(开始,结束,天数,递进单位-默认是1,B为略过周末)
print(pd.DataFrame(stock_change, index=stock_code, columns=date)) # 设置行索引、和列索引

DataFrame的属性

data.shape # 行列元组
data.index # 行索引列表
data.colums # 列索引列表
data.values # 值矩阵
data.T # 转置
data.head() # 看前几行,默认前5行,head(参数),参数决定看几行
data.tail() # 看后几行,默认后5行,tail(参数),参数决定看几行
data.index = [] # 改变DataFrame的索引
data.index[3] # 获取指定下标索引名称
data.reset_index() # drop参数,True为删除原来的索引,重新设置新的索引,False为相反。
data.set_index(keys=[], drop=True) # keys为索引列表,可以设置多个列为索引列,drop同上
data.set_index(“索引名”) # 第二种方法

“”“pandas基本操作”“”
data = pd.read_hdf(“”, key=“”) # hdf5文件,可以在hadoop里使用
data.to_hdf(“”, key=“”)
data = pd.read_csv(“”, usecols=[],) # 还包括read_json, read_excel等, usercols添加需要用到的列
data = pd.read_json(“”, orient=) # orient按什么方式读取文件 to_json也有这个参数
data.to_csv(“”, columns=[], index=False) # 还包括to_json, to_html等, coluns添加导入的列, index是否需要索引
data.drop([], axis=1) # 删除不必要的列
data[“列”][“行”] # 获取元素,规则是先列后行
data.loc[“行1”:“行2”, “列名”] # loc可以先行后列
data.iloc[:2, :5].head() # 取2行5列
data.columns.get_indexer([“列1”, “列2”]) # 获取列下标索引
data.index.get_indexer([“列1”, “列2”]) # 获取列下标索引
data.iloc[0] #取第一行的数据
data.loc[:,[‘A’]] #取’A’列所有行,多取几列格式为 data.loc[:,[‘A’,‘B’]]
data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
data.loc[[‘a’,‘b’],[‘A’,‘B’]] #提取index为’a’,‘b’,列名为’A’,'B’中的数据
data.iloc[[0,1],[0,1]] #提取第0、1行,第0、1列中的数据
data.loc[:,:] #取A,B,C,D列的所有行
data.iloc[:,:] #取第0,1,2,3列的所有行
data.loc[data[‘A’]==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
data.iloc[‘a’] # 取索引为’a’的行

pandas赋值操作

data[“列名”] = 1
data.列名 = 1

pandas排序操作

data.sort_values(by=, ascending=) # by=“列索引名”, by=[“列1”,“列2”], ascending=False降序,True为升序
data.sort_index() # 默认按索引升序排序,也有by和ascending等参数
data[“列名”].sort_values() # series 也可以使用上面这两种方法

pandas运算

data[“列名”].add(10) # 加法运算, div是除法,
data[“列名”]+10 # 加法运算
data[“新列名”] = data[“列名”].sub(data[“列名”]) # 减法操作,两列数据相减生成一个新的列
data[“列名”]>2 # 逻辑运算,判断某列数据是否大于2
data[data[“列名”]>2] # 判断的结果作为筛选的依据
data[(data[“列名”]>2)&(data[‘列名2’]>15)] # 多个条件作为筛选依据, 逻辑运算符:|&><
data.query(“列名1>2 & 列名2>15”) # 多个条件作为筛选依据, 和上面一样的效果
data[data[“列名”].isin([23,24])] # 判断某列是否包括23和24的数据,并依据筛选
data.describe() # 统计运算,显示多少行,平均值,标准差,最大最小值,四分位数
data.sum() # 求和, axis按行或按列求和
data.mean() # 平均数
data.median() # 中位数
data.min() # 最小值, max()最大值
data.mode() # 众数,出现次数最大的数
data.abs() # 绝对数
data.prod() # 乘积
data.var() # 方差
data.std() # 标准差
data.idmax() # 最大值索引
data.idmin() # 最小值索引
data.cumsum() # 计算前几个数的和
data.cumax() # 计算前几个数的最大值
data.cummin() # 计算前几个数的最小值
data.cumprod() # 计算前几个数的乘积

data[[“列名”]] # 一个括号获取的是series,两个中括号就是一个DataFrame
data[[“列名1”, “列2”]].apply(lambda x: x.max()-x.min(), axis=0) # 按行求最大值-最小值,匿名函数,可以自己写函数。, apply(自已定义函数,axis)

高级处理

np.NaN # 是一个空值,type(np.NaN)的类型是float
pd.isnull(data) # 如果是缺失值,返回True
np.any(pd.isnull(data)) # 配合np使用
pd.notnull(data) # 和isnull相反
data.dropna() # 删除缺失值
data[“列名”].fillna(value=1, inplace=True) # 替换空值,inplace是否修原数据
data.fillna() # 也是一样的
data[“列名”].unique() # 获取某列去重数据
data.replace(to_replace=“”, value=) # 替换前的值,替换后的值
pd.concat([data1, data2], axis=1) #按行或按列合并
pd.merge(data1, data2, on=[“列1”, “列2”],how=“inner/outer/left/right”) # merge合并的另一个函数,on指定键
data.astype(np.float) # 数据类型转换
pd.crosstab(data[“列1”], data[“列2”]) # 把列2里面数据,按列2标识分类统计个数。
data.pivot_table([“列2”], index=“列1”) # 列2按列1标识,计算机百分占比
data.groupby([“列1”])[“列2”].mean() # 分组聚合求平均值
data.groupby([“列1”, “列2”]).mean() # 多个列分组聚合
在这里插入图片描述

pandas画图

data.plot() # pandas 画图,回车第一次是个对象,再一次就出图像了,如果需要一次性出来,需要导入matplotlib, plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值