随书练习,第五章  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. 第九周总结&第七次实验报告

    实验7 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验过程 ...

  2. 【监控笔记】【2.3】扩展事件——慢查询SQL(执行超过3S的SQL)

    --sql server 2008及以上才支持,2012及以上才支持GUI界面 msdn 扩展事件:点击打开链接 [1]T-SQL实现 基于 rpc_completed(远程过程调用已完成时发生) 事 ...

  3. SELECT 与 SET给标量赋值

    本文转自 :https://blog.csdn.net/perddy/article/details/4033406 SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值.当表达 ...

  4. POJ 3549 GSM phone(圆+扫描线+最短路)

    题目意思是求起点s到终点s的最短路,但是只能在圆的内部和边上走.一种可以想到的方法就是求出所有的交点,然后两两连边并验证合法性,但是这样的交点数规模有n2. 我们可以观察发现,我们在圆求并构成的图形中 ...

  5. 小白学Python——Matplotlib 学习(1)

    众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象.而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用它我们 ...

  6. HNUSTOJ 1516:Loky的烦恼

    1516: Loky的烦恼 时间限制: 1 Sec  内存限制: 128 MB 提交: 242  解决: 66 [提交][状态][讨论版] 题目描述 loky喜欢上一个女孩,女孩在loky眼中绝对是1 ...

  7. 基于maven的javaweb项目模块化开发

    转自:https://my.oschina.net/kingfire/blog/273381 基于maven的javaweb项目模块化开发 引言 考虑团队拥有多个类似项目的情况,比如一些功能差异不大的 ...

  8. linux 启动和关闭 MySQL

    建议使用 mysqld_safe 命令启动,因为该命令添加了安全特性,当服务器发生错误时自动重启并且 把运行信息记录错误发送到日志文件!命令格式如下: mysqld_safe options 命令的常 ...

  9. mkdir -建立目录

    总览 mkdir [选项] 目录... POSIX 选项: [-p] [-m mode] GNU 选项(缩写): [-p] [-m mode] [--verbose] [--help] [--vers ...

  10. Django中使用djangorestframework产生Token

    修改settings.py: INSTALLED_APPS添加rest_framework 产生Token from rest_framework.authtoken.models import To ...