随书练习,第五章  pandas入门2

# coding: utf-8

# In[1]:

from pandas import Series,DataFrame
import pandas as pd
import numpy as np # In[2]: obj = Series(range(5),index=['a','a','b','b','c']) # In[3]: obj #带有重复索引的Series # In[4]: obj.index.is_unique # In[5]: obj['a'] # In[6]: obj['c'] # In[7]: df = DataFrame(np.random.randn(4,3),index=['a','a','b','b']) # In[8]: df # In[9]: df.loc['b'] # In[10]: df = DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=['a','b','c','d'],columns=['one','two']) # In[11]: df # In[12]: df.sum() # In[13]: df.sum(axis=1) #自动忽略缺失值 # In[14]: df.mean(axis=1,skipna=False) #禁用自动忽略缺失值功能 # In[15]: df.idxmax() #间接统计,返回索引 # In[16]: df.idxmax(axis=1) # In[17]: df.cumsum() #累计型 # In[18]: df.describe() #数值型数据 # In[19]: obj = Series(['a','a','b','c']*4) # In[20]: obj # In[21]: obj.describe() #非数值型数据 # In[22]: # corr ,cov ,corrwith # In[23]: obj = Series(['c','a','d','a','a','b','b','c','c']) # In[24]: uniques = obj.unique() #这里只是找出唯一值,不排序,numpy有一个函数unique()去重并排序 # In[25]: uniques # In[26]: uniques.sort() # In[27]: uniques # In[28]: obj.value_counts() #用于计算各值出现的频数,降序排列 # In[29]: pd.value_counts(obj.values,sort=False) # In[30]: mask = obj.isin(['b','c']) # In[31]: mask # In[32]: obj[mask] #布尔型索引 # In[33]: data = DataFrame({'Qu1':[1,3,4,3,4],'Qu2':[2,3,1,2,3],'Qu3':[1,5,2,4,4]}) # In[34]: data # In[35]: result = data.apply(pd.value_counts).fillna(0) # In[36]: result #索引是唯一值,列是唯一值出现的次数 # In[37]: string_data = Series(['aardvark','artichoke',np.nan,'avocado']) # In[38]: string_data # In[39]: string_data.isnull() # In[40]: string_data[0] = None # In[41]: string_data.isnull() #python内置的None值也会被当作NA值处理 # In[42]: data = DataFrame({'Qu1':[np.nan,3,np.nan,3,4],'Qu2':[2,3,np.nan,2,3],'Qu3':[np.nan,5,np.nan,4,np.nan]}) # In[43]: data # In[44]: data.dropna() #默认删除有缺失值的数据 # In[45]: data.dropna(how='all') # In[46]: data.dropna(thresh=2) #缺失数量大于等于2的行删掉 # In[47]: data.notnull() #isnull的否定式 # In[48]: from numpy import nan as NA # In[49]: data = Series([1,NA,3.5,NA,7]) # In[50]: data.dropna() # In[51]: data[data.notnull()] #布尔型索引 # In[52]: data = DataFrame([[1,6.5,3],[1,NA,NA],[NA,NA,NA],[NA,6.5,3]]) # In[53]: cleaned = data.dropna() # In[54]: data # In[55]: cleaned # In[56]: data[4] = NA # In[57]: data # In[58]: data.dropna(axis=1,how='all') # In[59]: df = DataFrame(np.random.randn(7,3)) # In[60]: df.iloc[:4,1] = NA;df.iloc[:2,2] = NA # In[61]: df # In[62]: df.fillna(0) # In[63]: df.fillna({1:0.5,3:-1}) #可以对不同的列填充不同的值 # In[64]: _ = df.fillna(0,inplace=True) #会改变原数据 # In[65]: df # In[66]: df = DataFrame(np.random.randn(6,3)) # In[67]: df.iloc[2:,1] = NA;df.iloc[4:,2] = NA # In[68]: df # In[69]: df.fillna(method='ffill') # In[70]: df.fillna(method='ffill',limit=2) # In[71]: data = Series([1,NA,3.5,NA,7]) # In[72]: data.fillna(data.mean()) # In[73]: df # In[74]: df.mean() # In[75]: df.fillna(df.mean()) #用平均值填充 # In[76]: df.iloc[3,1]=5 # In[77]: df # In[78]: df.interpolate() #插值法填充缺失值 # In[79]: data = Series(np.random.randn(10),index=[['a','a','a','b','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,2,3]]) #层次化索引 # In[80]: data # In[81]: data.index # In[82]: data['b'] # In[83]: data['b':'c'] # In[84]: data[['b','d']] # In[85]: data.loc[['b','d']] # In[86]: data[:,2] # In[87]: data.unstack() # In[88]: data.unstack().stack() # In[89]: frame = DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[1,2,1,2]],columns=[['Ohio','Ohio','Colorado'],['Green','Red','Green']]) # In[90]: frame # In[91]: frame.index.names = ['key1','key2'] # In[92]: frame.columns.names = ['state','color'] # In[93]: frame # In[94]: frame['Ohio'] # In[103]: pd.MultiIndex.from_arrays([['Ohio','Ohio','Colorado'],['Green','Red','Green']],names=['state','color']) # In[104]: frame.swaplevel('key1','key2') #互换级别 # In[106]: frame.sort_index(level=1) # In[109]: frame.swaplevel(0,1).sort_index(level=0) # In[110]: frame # In[111]: frame.sum(level='key2') # 根据级别进行汇总 # In[112]: frame.sum(level='color',axis=1) # In[113]: frame = DataFrame({'a':range(7),'b':range(7,0,-1),'c':['one','one','one','two','two','two','two'],'d':[0,1,2,0,1,2,3]}) # In[114]: frame # In[115]: frame2 = frame.set_index(['c','d']) #将一个或多个列转换为行索引 # In[116]: frame2 # In[117]: frame.set_index(['c','d'],drop=False) # In[118]: frame2 # In[119]: frame2.reset_index() # In[125]: frame2 # In[124]: frame.loc[frame.d>0]

利用python进行数据分析--pandas入门2的更多相关文章

  1. 利用Python进行数据分析——pandas入门

    利用Python进行数据分析--pandas入门 基于NumPy建立的 from pandas importSeries,DataFrame,import pandas as pd 一.两种数据结构 ...

  2. 利用python进行数据分析--pandas入门1

    随书练习,第五章  pandas入门1 # coding: utf-8 # In[1]: from pandas import Series, DataFrame # In[2]: import pa ...

  3. 利用Python进行数据分析-Pandas(第一部分)

    利用Python进行数据分析-Pandas: 在Pandas库中最重要的两个数据类型,分别是Series和DataFrame.如下的内容主要围绕这两个方面展开叙述! 在进行数据分析时,我们知道有两个基 ...

  4. 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)

    对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...

  5. 利用Python进行数据分析-Pandas(第四部分-数据清洗和准备)

    在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载.清理.转换以及重塑上.这些工作会占到分析时间的80%或更多.有时,存储在文件和数据库中的数据的格式不适合某个特定的任务.研究者都选择使用编 ...

  6. 利用Python进行数据分析-Pandas(第七部分-时间序列)

    时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(ti ...

  7. 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

    在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...

  8. 利用Python进行数据分析-Pandas(第三部分)

    访问数据是使用本书所介绍的这些工具的第一步.这里会着重介绍pandas的数据输入与输出,虽然别的库中也有不少以此为目的的工具. 输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式, ...

  9. 利用Python进行数据分析-Pandas(第二部分)

    上一个章节中我们主要是介绍了pandas两种数据类型的具体属性,这个章节主要介绍操作Series和DataFrame中的数据的基本手段. 一.基本功能 1.重新索引 pandas对象的一个重要方法是r ...

随机推荐

  1. [转帖]探秘华为(二):华为和H3C(华三)的分道扬镳

    探秘华为(二):华为和H3C(华三)的分道扬镳 https://baijiahao.baidu.com/s?id=1620781715767053734&wfr=spider&for= ...

  2. Field baseMapper in com.baomidou.mybatisplus.extension.service.impl.ServiceImpl required a single bean, but xx were found:

    在学习使用 mybatis-plus 时,遇到一个奇怪的异常 如 代码一: 代码一: Error starting ApplicationContext. To display the conditi ...

  3. vue点击除了某组件本身的其它地方, 隐藏该组件的方法

    点击emoji表情标签, 出现标签组件,点击其它地方, 改组件消失的效果; <template> <div class="writeZoon"> <d ...

  4. Thinkphp3.2 Redis支持REDIS_AUTH验证

    原有的Redis类在Library/Think/Cache/Driver/中 换成下面的: <?php // +----------------------------------------- ...

  5. linux下定时器的实现

    简介: linux下经常有这样的需求,需要定时轮询执行某种任务,当然,用shell脚本的话,crontab和at就可以满足要求.如果从C语言的角度来看,实现定时器也是一个比较简单的任务,因为具有普遍性 ...

  6. 01:django基础篇

    Django其他篇 目录: 1.1 django初探 1.2 第一个django项目 1.3 django render/redirect/HttpResponse 和 request.GET req ...

  7. HTML面试问题收集(1)

    1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层分别是:HTML.CSS.JavaScript 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaScr ...

  8. Qt下载(多种下载通道+所有版本)

    http://c.biancheng.net/view/3851.html Qt 体积很大,有 1GB~3GB,官方下载通道非常慢,相信很多读者会崩溃,所以建议大家使用国内的镜像网站(较快),或者使用 ...

  9. 基于FPGA的以太网开发

    基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但是由 ...

  10. JS深度比较两个对象是否相等

    /** * 深度比较两个对象是否相等 * @type {{compare: compareObj.compare, isObject: (function(*=): boolean), isArray ...