利用python进行数据分析--pandas入门2
随书练习,第五章 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的更多相关文章
- 利用Python进行数据分析——pandas入门
利用Python进行数据分析--pandas入门 基于NumPy建立的 from pandas importSeries,DataFrame,import pandas as pd 一.两种数据结构 ...
- 利用python进行数据分析--pandas入门1
随书练习,第五章 pandas入门1 # coding: utf-8 # In[1]: from pandas import Series, DataFrame # In[2]: import pa ...
- 利用Python进行数据分析-Pandas(第一部分)
利用Python进行数据分析-Pandas: 在Pandas库中最重要的两个数据类型,分别是Series和DataFrame.如下的内容主要围绕这两个方面展开叙述! 在进行数据分析时,我们知道有两个基 ...
- 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)
对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...
- 利用Python进行数据分析-Pandas(第四部分-数据清洗和准备)
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载.清理.转换以及重塑上.这些工作会占到分析时间的80%或更多.有时,存储在文件和数据库中的数据的格式不适合某个特定的任务.研究者都选择使用编 ...
- 利用Python进行数据分析-Pandas(第七部分-时间序列)
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(ti ...
- 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)
在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...
- 利用Python进行数据分析-Pandas(第三部分)
访问数据是使用本书所介绍的这些工具的第一步.这里会着重介绍pandas的数据输入与输出,虽然别的库中也有不少以此为目的的工具. 输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式, ...
- 利用Python进行数据分析-Pandas(第二部分)
上一个章节中我们主要是介绍了pandas两种数据类型的具体属性,这个章节主要介绍操作Series和DataFrame中的数据的基本手段. 一.基本功能 1.重新索引 pandas对象的一个重要方法是r ...
随机推荐
- [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...
- CentOS7创建本地源过程
1)使用yum安装http服务(主节点) yum -y install httpd 2)将httpd服务加入系统自启动服务并设置开机启动 systemctl start httpd #启动apache ...
- [多校联考2019(Round 4 T2)][51nod 1288]汽油补给(ST表+单调栈)
[51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的 ...
- pureftp安装
1.下载 #cd /usr/local/src #wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.t ...
- 【React 7/100 】 虚拟DOM和Diff算法
虚拟DOM和Diff算法 React更新视图的思想是:只要state变化就重新渲染视图 特点:思路非常清晰 问题:组件中只有一个DOM元素需要更新时,也得把整个组件的内容重新渲染吗? 不是这样的 理想 ...
- debian利用snmp监控服务器异常状态
1.安装snmp apt-get install snmp snmpd 2.配置snmp vi /etc/snmp/snmpd.conf 注释15行 #agentAddress udp:127.0.0 ...
- Quartus 中调用modelsim的流程及*.vt或*.vht自动生成
一.自动生成验证程序testbench的方法,setting-EDA Tool->simylation->选择对应的语言(verilog对应*.vt,VHDL对应*.vht)process ...
- [转]走近0day
首先,需要大家端正一下学习态度-也就是对于破解的态度.每一个有一定修为的软件破解者,也就是CRACKER,都很清楚,我们破解掉软件的序列号,功能限制,时间限制等等东西都不是最终的目的,一个真正的CRA ...
- 02MySQL数据库
1.MySQL启动和关闭 2.登录MySQL数据库 MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录. 格式1:cmd> m ...
- laplace transform 拉普拉斯变换
参考网址: 1. https://en.wikipedia.org/wiki/First-hitting-time_model 2. https://en.wikipedia.org/wiki/Lap ...