pandas-python入门基操

import numpy as npimport pandas as pd# ---------------------------------------------------------------#   目录#       生成数据#       查看数据#       选择#       缺失值#       运算-apply#       合并#       分组#       重塑-reshape#       数据透视表#       时间序列#       类别-Category#       csv数据输入/输出# --------------------------------------------------------------

s = pd.Series([1,3,5,np.nan,6,8])

# ---------------------------------------------------------------#   生成数据#   https://www.pypandas.cn/docs/getting_started/dsintro.html#series# ---------------------------------------------------------------dates = pd.date_range(‘20130101‘,periods=6)df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list(‘ABCD‘))df2 = pd.DataFrame({‘A‘:1.0,                    ‘B‘:pd.Timestamp(‘20190102‘),                    ‘C‘:pd.Series(1,index=list(range(4)),dtype = ‘float32‘),                    ‘D‘:np.array([3]*4,dtype=‘int32‘),                    ‘E‘:pd.Categorical(["test","train","test","train"]),                    ‘F‘:‘foo‘})

# ---------------------------------------------------------------#   查看数据# ---------------------------------------------------------------df2.to_numpy()df2.describe()df2.T  # 转置df2.sort_index(axis=1,ascending=False)  # axis = 1>按照列排序,ascending> 升序df2.sort_values(by=‘B‘,ascending=False)

# ---------------------------------------------------------------#   选择数据-筛选#   索引与选择数据:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#indexing#   多层索引与高级索引:https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#advanced# ---------------------------------------------------------------    # 按标签选择df.A   #  等价 df[‘A‘]df2[0:3]  #第0行到第3行df.loc[dates[0]]df.loc[:,[‘A‘,‘B‘]]  # df.loc[‘20130101‘:‘20130103‘,[‘A‘,‘B‘]]df.loc[‘20130101‘,[‘A‘,‘B‘]]    # 按位置选择df.iloc[0:3,1:2]  # 0-3行,1-2列df.iloc[[1,2,4],[0,2]]    # 布尔索引df[df.A>0]   # 按行筛选df[df>0]    # isin 查找df[‘E‘] = [‘one‘, ‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘three‘]df[df[‘E‘].isin([‘one‘,‘two‘])]

# ---------------------------------------------------------------#   赋值# ---------------------------------------------------------------    # 用索引自动对齐新增列的数据s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range(‘20190102‘,periods=6))df[‘F‘] = s1 # 长度和列一样    # 按照标签赋值df.at[dates[0],‘A‘] = 0 # 锁定一行数据    # 用where条件赋值df3 = df.copy()# df[df>0] = -df3

# ---------------------------------------------------------------#   缺失值# ---------------------------------------------------------------df.dropna(how=‘any‘)  # 删除有空行的行df.fillna(value=5)pd.isna(df)

# ---------------------------------------------------------------#   运算#   字符串:https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#text-string-methods#   二进制操作: https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html#basics-binop# ---------------------------------------------------------------df.mean()   # 平均值,按照列df.mean(1)  #平均值,按照行去组织

s1 = pd.Series([1,3,5,np.nan,6,8],index = dates).shift(2)  # shift按照纵轴方向移动df.drop([‘E‘,‘F‘],axis=1,inplace=True)  # 删除两列df.sub(s1, axis= ‘index‘)

df.apply(np.cumsum)# df.apply(lambda x : x.max()-x.min,axis=1)

# Series 可以调用str方法中的lower转换为小写办法  s1.str.lower()

# ---------------------------------------------------------------#   合并#   https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#merging# ---------------------------------------------------------------    # Concatcn1 = pd.DataFrame(np.random.randn(10,4))pieces = [cn1[:3],cn1[3:7],cn1[7:]]pd.concat(pieces)

    # Joinleft = pd.DataFrame({‘key‘:[‘foo‘,‘foo‘],‘lval‘:[1,2]})right = pd.DataFrame({‘key‘:[‘foo‘,‘foo‘],‘rval‘:[4,6]})pd.merge(left,right,on=‘key‘)

    # 追加append = pd.DataFrame(np.random.randn(8,4),columns=[‘A‘,‘B‘,‘C‘,‘D‘])append1 = append.iloc[3]append.append(append1,ignore_index=True)

# ---------------------------------------------------------------#   分组  group by ,有三个步骤-分割、应用、组合#   https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#groupby#   分割:按条件把数据分割成多组#   应用:为魅族单独应用函数#   组合:将处理结果组合成一个数据结构# ---------------------------------------------------------------group = pd.DataFrame({    ‘A‘:[‘foo‘,‘bar‘,‘foo‘,‘bar‘,‘foo‘,‘bar‘,‘foo‘,‘foot‘],    ‘B‘:[‘one‘,‘one‘,‘two‘,‘three‘,‘two‘,‘two‘,‘one‘,‘three‘],    ‘C‘:np.random.randn(8),    ‘D‘:np.random.randn(8)})group_result = group.groupby(by=[‘A‘,‘B‘]).sum()

# ---------------------------------------------------------------#   重塑# ---------------------------------------------------------------    # 堆叠    # 可以看成是解压和压缩的区别,zip相当与压缩  zip(*)相当于解压。,生成元组对stack_tuples = list(zip(*[[‘bar‘,‘bar‘,‘baz‘,‘baz‘,‘foo‘,‘foo‘,‘qux‘,‘qux‘],                          [‘one‘,‘two‘,‘one‘,‘two‘,‘one‘,‘two‘,‘one‘,‘two‘]]))index = pd.MultiIndex.from_tuples(tuples=stack_tuples,names=[‘first‘,‘second‘])df_stack = pd.DataFrame(np.random.randn(8,2),index = index,columns=[‘A‘,‘B‘])df_stack = df_stack[:4]# 压缩后的 DataFrame 或 Series 具有多层索引, stack() 的逆操作是 unstack(),默认为拆叠最后一层stacked = df_stack.stack()  # 将数据展示到一列上  unstack()是stack()的逆操作stacked.unstack(1)  # 1是指的第几层索引

# ---------------------------------------------------------------#   数据透视表  pivot_table#   https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html#reshaping-pivot# ---------------------------------------------------------------pivot_table_df = pd.DataFrame({    ‘A‘:[‘one‘,‘one‘,‘two‘,‘three‘]*3,    ‘B‘:[‘A‘,‘B‘,‘C‘]*4,    ‘C‘:[‘foo‘,‘foo‘,‘foo‘,‘bar‘,‘bar‘,‘bar‘]*2,    ‘D‘:np.random.randn(12),    ‘E‘:np.random.randn(12)})pivot_table_df.pivot_table(index=[‘A‘,‘B‘],columns=‘C‘)

# ---------------------------------------------------------------#   时间序列  pivot_table#   https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries# ---------------------------------------------------------------    # freq = ‘S‘ 时间格式:2019-01-01 00:00:04    # freq = ‘D‘ 时间格式:2019-01-01    # freq参数: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliasesrng = pd.date_range(‘1/1/2019‘,periods=100,freq=‘S‘)ts = pd.Series(np.random.randint(0,500,len(rng)),index= rng)    # 转换成其他时区tz_rng = pd.date_range(‘1/1/2019‘,periods=5,freq=‘M‘)ts_tz_rng = pd.Series(np.random.randn(len(tz_rng)),index = tz_rng)    # ts_tz_rng.to_period()  将时间转换为 yyyy-mm格式prng = pd.period_range(‘1991Q1‘,‘2000Q4‘,freq=‘Q-NOV‘)ts_prng = pd.Series(np.random.randn(len(prng)),prng)    # 频率转换  https://blog.csdn.net/bqw18744018044/article/details/80947243ts_prng.index = (prng.asfreq(‘M‘,‘e‘)+1).asfreq(‘H‘,‘s‘)+9  # 切换1991Q1 -> 1991-03-01 09:00

# ---------------------------------------------------------------#   类型Categories#   https://pandas.pydata.org/pandas-docs/stable/user_guide/categorical.html#categorical#   https://pandas.pydata.org/pandas-docs/stable/reference/arrays.html#api-arrays-categorical  -- api# ---------------------------------------------------------------cate_df = pd.DataFrame({    ‘id‘:[1,2,3,4,5,6],    ‘raw_grade‘:[‘a‘,‘b‘,‘b‘,‘a‘,‘a‘,‘e‘]})cate_df[‘grade‘] = cate_df[‘raw_grade‘].astype(‘category‘)    # 重命名不同类型cate_df[‘grade‘].cat.categories = [‘very good‘,‘good‘,‘very bad‘]

# ---------------------------------------------------------------#   可视化文档#   https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html#visualization# ---------------------------------------------------------------ts_plot = pd.Series(np.random.randn(1000),index=pd.date_range(‘1/1/2000‘,periods=1000))ts_plot = ts_plot.cumsum()ts_plot.plot()

# ---------------------------------------------------------------#   CSV处理#   https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#io-store-in-csv# ---------------------------------------------------------------#df2.to_csv(‘d:\\foo.csv‘)  # 存储到csv中df2.to_excel(‘d:\\foo.xlsx‘,‘sheet1‘,index_col= None,na_values=[‘NA‘])

# 错误 https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html#basics-compare

原文地址:https://www.cnblogs.com/wind-man/p/12178633.html

时间: 2024-11-10 15:06:31

pandas-python入门基操的相关文章

Python入门到精通资料大汇总,不啰嗦,全是珍藏资料!速度收藏

今天闲来无事,把手里积累了这么久的Python入门资料整理了一下,发现其实,有了这些,python入门真的不难,每天花点时间学,真的不会影响工作.下面一起来看看这些资料吧! Python编程女匠入门资料列表目录: Python入门书籍资料展示 Python进阶书籍资料展示 Python***技术资料展示Python入门案例项目讲解视频展示Python入门实操小游戏展示从零开始到Python web进阶方向的学习资料展示 从零开始到Python 爬虫进阶方向的学习资料展示 从零开始到Python

Python 入门、量化策略、量化知识总结贴

Ricequant 量化社区的初衷让各位爱好量化的人士可以碰撞思维,在分享和争辩中学习到有用且实战的量化知识.有赖于各位在社区中贡献满满的干货以及有质量的讨论,从编程入门教学到技术指标再到多因子选股.财务数据分析等,囊括了很多方面的知识. 我在此组织 整理了下社区所发的内容.并分类出来,方便大家更容易找到相应的知识点.此贴会不断地更新 在此感谢很多很多的大大贡献了很多有趣的讨论,由于篇幅原因就不一一列出了.它的成长,有赖于大家的贡献与努力! 下面开始放毒了: Python 入门- Python

python入门语法总结

1.python是一个解释性语言: 一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1).这个过程通过编译器和不同的标记.选项完成.当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行. 而Python语言写的程序不需要编译成二进制代码.你可以直接从源代码 运行 程序.在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行.事实上,由于你不再需要

机器学习00:如何通过Python入门机器学习

我们都知道机器学习是一门综合性极强的研究课题,对数学知识要求很高.因此,对于非学术研究专业的程序员,如果希望能入门机器学习,最好的方向还是从实践触发. 我了解到Python的生态对入门机器学习很有帮助.因此希望以此作为突破口入门机器学习. 我将会记录一个系列的学习与实践记录.记录内容主要参考Youtube中sentdex发布的视频,有兴趣的读者可以自己FQ到油管看一下. 下面介绍一下我将如何通过Python入门机器学习. 学习Python基本语法 首先我在Python官网找到入门教程,快速过了一

Python入门:Anaconda和Pycharm的安装和配置

Python入门:Anaconda和Pycharm的安装和配置 子曰:"工欲善其事,必先利其器."学习Python就需要有编译Python程序的软件,一般情况下,我们选择在Python官网下载对应版本的Python然后用记事本编写,再在终端进行编译运行即可,但是对于我这样懒的小白,我喜欢装一些方便的软件来辅助我编写程序.在学习Java时,正常情况选择安装JDK然后配置环境变量后,用记事本编写程序再在终端编译运行即可,而我一般选择安装JDK+MyEclipse.将Python和Java进

Python入门学习指南--内附学习框架

Python入门学习指南 最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平台: 78486745 ,欢迎大家加入共同交流学习. 对于初学者,入门至关重要,这关系到初学者是从入门到精通还是从入门到放弃.以下是结合Python的学习经验,整理出的一条学习路径,主要有四个阶段 NO.1 新手入门阶段,学习基础知识 总体来讲,找一本靠谱的书,由浅入深,边看边练. 网上的学习教程有很多,多到不知道如何选择.所有教程在基础知识介绍方面都差不多,区别在于讲的是否足够细(例如运

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ? 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类. ? 在Python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号,就可以完成继承关系.单纯的从代码的层面上来看当两个类具有相同的功能或者特征的时候就可以使用继承.提取一个父类,这个父类中编写者两个类相同的部分,然后两个类分别去继承这个类就可以

Python入门(目录全览)

目录 Python入门(目录全览) 第一篇 markdown编辑器 第二篇 计算机基础 第三篇 Python解释器和集成环境 第三篇 Python基础 第四篇 Python进阶 第五篇 文件处理 第六篇 函数基础 第七篇 函数进阶 第八篇 模块基础 第九篇 Python常用模块 第十篇 面向对象基础 第十一篇 面向对象进阶 第十二篇 面向对象高阶 第十三篇 网络编程 第十四篇 并发编程 第十五篇 MySQL数据库 Python入门(目录全览) 第一篇 markdown编辑器 001markdow

Python入门

Python入门教程(个人日常学习记录,有不妥之处欢迎指正!后续更新,敬请期待...) 学习地址:http://www.imooc.com/learn/177 Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括