pandas学习

这篇具有很好参考价值的文章主要介绍了pandas学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(个人学习使用)

添加索引

# index是行索引,columns是列索引
pd.DataFrame(score, index=idx, columns=col)

常用属性和方法

data.shape    # 形状
data.index    # 行索引
data.columns    # 列索引
data.values    # 里面的值,结果是ndarray类型数组
data.T    # 进行转置

data.head(n)    # 默认查看前5行的内容
data.tail(n)    # 默认查看后5行

索引的修改

# 修改索引
data.index = new    # 必须整体修改索引,不能单独修改其中一个索引
# 重设索引
data.reset_index(drop=False)    # 不写默认参数为False,及是否删除之前的索引,
# 修改新索引
data.set_index('第一天',drop=True)    # 不写默认为True,及把'第一天'多为索引时,是否删除原来的'第一天'

series属性方法

sr = data.iloc[1, :]
    第0天   -1.272936
    第1天   -0.042801
    第2天    0.872491
    第3天    1.688880
    第4天   -0.374057
    第5天    0.728194
    第6天   -0.978928
    第7天    0.639998
    Name: 股票1, dtype: float64
sr.values    # 获取值    
    array([-1.27293566, -0.04280051,  0.87249129,  1.6888803 , -0.37405686,
            0.72819427, -0.97892826,  0.63999758])

sr.index    # 获取索引值    
    Index(['第0天', '第1天', '第2天', '第3天', '第4天', '第5天', '第6天', '第7天'],             
    dtype='object')
data.drop(['索引名字'], axis=0/1)    # 删除某些列或者行
# 默认axis是按照行删除,所以删除时最好写上是删除行还是删除列

dataframe的索引

data['列索引']['行索引']    # 注意一定是先进行列索引再进行索引
        第0天	第1天	第2天	第3天	第4天	第5天	第6天	第7天
股票0	1.046882	-0.845770	1.030718	-0.992464	0.202662	0.733066	0.443001	-1.231117
股票1	-1.272936	-0.042801	0.872491	1.688880	-0.374057	0.728194	-0.978928	0.639998
股票2	-1.985832	-0.949589	-0.263581	-1.410954	0.638578	-0.401807	-0.798711	-0.070448
股票3	0.069881	0.375395	-2.242167	0.307771	0.040234	-0.097090	-1.822728	0.224412
股票4	1.648151	-1.100749	-0.946982	0.831372	-0.706177	1.475654	-0.397543	1.545838

# 按照 索引名字 进行索引
data.loc['行名','列名']    # 索引某个值
data.loc[:, :]    # 索引一段值
data.loc[['股票0','股票2'], ['第1天','第3天']]    # 直接使用列表

# 按照 下标 进行索引
data.iloc[1,2]    # 索引某个值
data.iloc[:, :]    # 索引一段值
data.iloc[[0,2],[1,2]]    # 直接使用列表
data.index[0:4]    # 获取行索引
    Index(['股票0', '股票1', '股票2', '股票3'], dtype='object')

data.columns.get_indexer(['第1天','第2天'])    # 获取列索引的下标
    array([1, 2], dtype=int64)

dataframe值排序

data.sort_values(by=['',''], ascending=True/False)
# by后边是按照什么属性进行排序,可以是多个属性。 默认是从小到大排序,

dataframe按索引排序

data.sort_index()    # 将索引按照顺序排序

series的值排序和索引排序

# series可以是按行取出来的,也可以是按列取出来的
data['股票0'].sort_values(ascending=)    # 对值进行排序

data.iloc[1, :].sort_index(ascending=)    # 对索引进行排序

算数运算,逻辑运算

# 主要使用函数有
# describe,sum,prod,median,mode,abs,max,min,mean,var,std,div
# idxmin,idxmax,isin,query,add,sub,apply
# 累计统计函数
# cumsum,cummax,cummin,cumprod
# dataframe和series一样也可以直接使用+-*/运算符
# dataframe可以直接使用<,>,|,&逻辑运算符,返回布尔值

data.add(n)
data.sub(n)

# 布尔索引
data[data['a']>0]
data[(data['a']>0 & data['b']<0)]

data.query("a>0 & b<0")    # 与上面的布尔索引效果一样,括号里填入查询条件
data.isin([a,b,c])    # 返回的是布尔值,满足括号里的值的返回True

data.describe()    # 返回对data数据的基础统计
# count,mena,std,min,25%,50%,75%,max

# 自定义运算 apply(func, axis=)
data.apply(lambda x:x.max()-x.min(), axis=0)

pandas画图

data.plot(x="a", y="b", kind="scatter")    # 还有stacked参数,是否堆叠
# x是横坐标属性,y是纵坐标属性,
# kind是图形的类型
line    折线图
bar    柱状图
barth    水平柱状图
hist    直方图
pie    饼图
scatter    散点图

pandas读写文件

# 常用读取文件函数及参数

pd.read_csv(path, usecols=[想读取哪些列], header=None, names=[没有列属性时指定列属性名字])
# 文件中没有列属性时使用header=None,或者使用names=[]来指定列属性名字

pd.to_csv(path,culomns=[想写入的列],index=,header=,mode=)
# index=False    写入时不把行索引写入
# header=False    写入时不把列索引写入
# mode=''    写入的模式,w,a等


pd.read_json(path, orient="records", lines=True)
# orient="recordes"    将数据存储成记录的形式
# lines=True    按行读取
pd.to_json(path, orient="records", lines=True)

缺失值处理

# 表示空值的方法
pd.NA    np.NaN    None    float('nan')
# 判断是否有缺失值
data.isnull()
data.notnull()

pd.isnull(data)
pd.notnull(data)
# 上述两种方法都行


## 是np.nan类型的缺失值处理
# 删除缺失值
data.dropna(inplace= , axis=)
# inplace=True/False  来决定是否再原来的数据上直接进行删除
# axis=0/1  行删除还是列删除

# 填补缺失值
data.fillna(value, inplace=)
# value是要将缺失值替换成的数据
# inplace同缺失值的处理


## 是?或者等别的标记来代替缺失值的处理
# 1.先将标记替换成np.nan
# 2.再进行处理
data.replace(to_replace='标记符号', value=np.nan)
# 替换函数,参数名字也可以不写直接写成data.replace('标记符号', np.nan)

数据离散化

# 数据分组
pd.qcut(data, n)
pd.cut(data, [])
# 自动分组
pd.qcut(data, n, labels=[分组后的标签])
一般使用
pd.qcut(data, n)
# data是要分组的数据,n是分成几组

# 自定义分组
pd.cut(data, [分组的间隔], labels=[])
# pd.cut(data, [1,3,6,9])  及分成三个组

 ont-hot编码

# one-hot编码,将非数字类型的数据转换成数字类型的,这种pandas中常用
pd.get_dummies(data, prefix="")
#
	性别	年龄
0	男	12
1	男	13
2	女	89

pd.get_dummies(dt, prefix="age")    # prefix是前缀,可不写

    年龄 age_女 age_男
0	12	0	1
1	13	0	1
2	89	1	0


# 对标签进行one-hot编码
lb = LabelBinarizer()
lb.fit(list) # 传入列表
lb.tranform(test)

# 例子
corpus = ['这 是 第一个 文档',
         '这是 第二个 文档',
         '这是 最后 一个 文档',
         '现在 没有 文档 了']

from sklearn.preprocessing import LabelBinarizer

words=[]
for corpu in corpus:
    words.extend(corpu.split())
words = list(set(words)) # 下面要传列表所以转换成list

lb = LabelBinarizer()
lb.fit(words) # 传入列表

# lb.classes_
c1 = corpus[0].split()
a = lb.transform(c1)

# 将one-hot编码再转回去 lb.inverse_transform()
lb.inverse_transform(a)

dataframe合并

# 合并 pd.concat()
pd.concat([a,b], axis=)
# (a,b)需要合并的数据,axis按照什么方向
# 连接 pd.merge(a, b, how="", on=[])

pd.merge(d1, d2, how="inner", on=['k1', 'k2'])
# d1 数据1,d2 数据2,
# how是使用什么方式连接 left, right, outer, inner
# on是通过什么字段来连接

pandas学习,pandas,学习,python

pandas学习,pandas,学习,python

 pandas学习,pandas,学习,python

pandas学习,pandas,学习,python文章来源地址https://www.toymoban.com/news/detail-606124.html

 交叉表与透视表

# 交叉表  pd.crosstab()
pd.crosstab(value1, value2)

# 透视表  data.pivot_table()
   Month  Product  Sales  Quantity
0      1        A    100        10
1      1        B    200        20
2      2        A    150        15
3      2        B    250        25
4      3        A    120        12
5      3        B    180        18

data.pivot_table(['Sales'], index=['Month'], columns='Product', aggfunc='mean')
# aggfunc参数名字也可以省略不写,直接写'mean'
# 某些列按照index的列进行分组

Product    A    B
Month            
1        100  200
2        150  250
3        120  180

 dataframe的分组与聚合

# data.groupby([按照什么分组], as_index=)  是否将设置为索引,默认是False

    ca	va	qu
0	A	1	10
1	A	2	20
2	B	3	30
3	B	4	40
4	C	5	50
5	C	6	60

# 返回的是迭代器,所以不能直接看结果,要使用聚合函数后才能看到结果
data.groupby(['ca'])['va']max()

data['va'].groupby(data['ca']).max()
# 上面两个效果一样

# 可以使用get_group()来查看某个分组的数据
data.groupby(['ca']).get_group('A')

ca	va	qu
0	A	1	10
1	A	2	20


# 因为返回的是迭代器,所以想要看到数据可以使用for
# 迭代器中有两个变量,一个是按照分组的名字,一个是数据
s = data.groupby(['ca'])['va']max()
for name,data in s:
    print(name)
    print(data)

  ca  va  qu
0  A   1  10
1  A   2  20
  ca  va  qu
2  B   3  30
3  B   4  40
  ca  va  qu
4  C   5  50
5  C   6  60
# 常用聚合函数
count():  计算每个分组中非缺失值的数量。
sum():  计算每个分组中数值列的总和。
mean():  计算每个分组中数值列的均值。
median():  计算每个分组中数值列的中位数。
min():  计算每个分组中数值列的最小值。
max():  计算每个分组中数值列的最大值。
std():  计算每个分组中数值列的标准差。
var():  计算每个分组中数值列的方差。
agg():  自定义聚合函数,可以传递一个或多个函数进行聚合操作。
apply():  对每个分组应用自定义函数进行聚合操作。

# agg(['min','max','mean']) 就是可以使用多个聚合函数

data.groupby(['sex'])['age'].agg(['min','max','mean'])
# 根据性别分组,算年龄的最小值,最大值,平均值

到了这里,关于pandas学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python教程入门学习】Pandas库下载、安装和更新

    Windows系统 win+R 打开命令提示符,进入cmd命令提示符 pip install pandas 提示pip需要更新 按照提示输入以下代码 pip install --upgrade pip  检查是否安装完成 python -m pip list   进入python,输入import pandas,看是否报错,如果不报错,说明安装成功。 python import pandas  安装成功!!

    2024年02月14日
    浏览(42)
  • python数据分析学习笔记之matplotlib、numpy、pandas

    为了学习机器学习,在此先学习以下数据分析的matplotlib,numpy,pandas,主要是为自己的学习做个记录,如有不会的可以随时查阅。希望大家可以一起学习共同进步,我们最终都可以说:功不唐捐,玉汝于成。就算遇到困难也不要气馁,大声说:我不怕,我敏而好学!! 把大量

    2024年02月08日
    浏览(56)
  • 【Python】进阶学习:pandas--read_excel()函数的基本使用

    【Python】进阶学习:pandas–read_excel()函数的基本使用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、

    2024年03月09日
    浏览(53)
  • python学习——pandas库的使用之series及DataFrame创建、查看、切片、运算

    Pandas是基于NumPy的数据分析模块 Pandas纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集所需的工具 Pandas提供了大量能使我们快速便捷处理数据的函数和方法 Pandas的数据结构 Series :带标签的一维数组,与Numpy中的一维array类似。与列表也很相近。 区别是:列表

    2024年02月03日
    浏览(50)
  • 【数据分析入门】人工智能、数据分析和深度学习是什么关系?如何快速入门 Python Pandas?

    本文详细介绍了人工智能、数据分析和深度学习之间的关系,并就数据分析所需的Pandas库做了胎教般的入门引导。祝读得开心!   本文是原 《数据分析大全》 、现改名为 《数据分析》 专栏的第二篇,我在写这篇文章的时候突然意识到—— 单靠我是不可能把数据分析的方

    2024年02月14日
    浏览(70)
  • 基于Pandas+余弦相似度+大数据智能护肤品推荐系统——机器学习算法应用(含Python工程源码)+数据集

    本项目结合了Pandas数据处理工具和机器学习技术,旨在构建一个智能的护肤品推荐系统。该系统不仅会考虑用户的肤质特征,还会考虑过敏反应等因素,并筛选出相互禁忌的产品,以便为不确定如何选择护肤品的用户提供个性化的推荐。 首先,项目会收集用户的肤质信息,包

    2024年02月07日
    浏览(34)
  • 【学习】python之使用pandas提示TypeError: NDFrame.to_excel() got an unexpected keyword argument ‘encoding‘

    桨桨,终于有东西可以来记录解决的问题点啦~ 背景是在使用pandas一直无法转换成excel,排查了很久,终于在做了一个细微的调整实现成功了。 pandas 是基于NumPy 的一种工具。我的理解:这个包可以实现读取excel,写入excel的功能,分别是readexcel,toexcel。 运行报错提示 Traceback (m

    2024年04月08日
    浏览(100)
  • pandas基础学习

      pandas是python中专门专门用于数据处理和数据分析的第三方库。 pandas常用的基本功能如下: 从Excel、CSV、网页、SQL、剪切板等文件或工具中读取数据 合并多个文件或电子表格中的数据,将数据拆分为独立的文件 数据清洗、如去重、处理缺失值、填充默认值、补全格式,处

    2024年02月08日
    浏览(33)
  • pandas学习

    (个人学习使用)  

    2024年02月15日
    浏览(33)
  • Matpoltlib && Pandas 学习笔记

    目录 Matplotlib matplotlib常用方法 散点图 饼图 直方图 Pandas pandas.Series(*args)参数说明 DataFrame 数据结构 CSV file 数据清洗 Matplotlib 定义: Matplotlib 是python的绘图库 Pyplot 是其子库,通用绘制2D图表, matplotlib常用方法 散点图 饼图 直方图 Pandas 全称: \\\'panel data\\\' and \\\'python data analysis\\\'

    2024年01月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包