在Python中常用的数据分析工具中,我们通常使用pandas软件包。本文主要介绍pandas的常见操作。

1 数据框的生成与特性

1.1 数据框的生成

pandas以类似字典的方式来生成数据集。

import numpy as np
import pandas as pdd0 = {'x1':5,'x2':989}
d1 = {'x2':np.arange(3),'x1':([4.5,9],8),'x3':(1,2,5.7)}
d2 = {'x3':{'m':3,'n':5},'x2':([4.3],[9.0])}
df = pd.DataFrame([d0,d1,d2])
r2 = df.loc[2,'x3']['m']
r2

引用数据框中的数据,使用ilocloc命令。loc根据数据框的行名index来索引对应的行。iloc是根据行号来索引,行号从0开始,逐次加1。

r1 = df.iloc[1,0][0]
r1
r2 = df.loc[2,'x3']['m']
r2
r3 = df.x1[1]
r3

数据框生成的两种写法:一种是使用字典的方式,另一种使用numpy包,生成向量后,再生成数据集。

d1 = {'x1':[1,2,3,4],'y1':[23,4,5,6]}
df1 = pd.DataFrame(d1)
df1
import numpy as np
d1 =np.array([[1,2,3,4],[23,4,5,6]]).T
df1 = pd.DataFrame(d1,columns=['x1','y1'])
df1

1.2 数据框的描述性统计

首先产生一个数据框。

import numpy as np
np.random.seed(523)
name = ['x1','x2','x3','y']
df = pd.DataFrame(np.random.randn(7,4),columns=name)
df['sex'] = ['F']*3 + ['M'] * 4
df

查看前两行。

df.head(2)

查看后三行。

df.tail(3)

输出一些描述性统计指标。

df.describe()

查看数据集的变量名称。

df.columns

查看数据的变量行名。

df.index

可以修改行名。

df.index = ['A','B','C','D','E','F','G']

输出最后3个变量的头4行。

df[df.columns[2:]][:4]

数据框的元素个数。

df.size

数据框的形状。

df.shape

1.3 数据框行列名修改

df.rename(columns={'x1':'price','x2':'length'},inplace=True)
df.columns
df.index = np.arange(2,9)
df
df['price2']=np.copy(df.price)
df2 = df.set_index('price2')
df2

把现有index的反向作为新的index

new_index = df2.index[::-1]
df2 = df2.reindex(new_index)
df2

把原来的index变为一个变量。

df2.reset_index()

把原来的index去掉。

df2.reset_index(drop=True)

2 常见类型文件的存取

保存csv文件和xlsx文件。

import os
import pandas as pd
##当前文件所在位置
os.getcwd()
##创建文件夹Data
os.makedirs('/Data', exist_ok=True)
## 保存csv文件
df.to_csv('Data/Df.csv',index=False) ##不加入行名
df.to_csv('Data/Df2.csv',index=True) ##保存行名
## 保存xlsx文件
dfexcel = pd.ExcelWriter('Data/Df.xlsx')
df.to_excel(dfexcel,'dfexcel',index=True)
df.to_excel(dfexcel,'dfexcel2',startrow=2,startcol=3,index=True)
dfexcel.save()

读取excel数据。

## 读取excel数据
dfxls = pd.read_excel('Data/Df.xlsx','dfexcel',index_col=0)
dfxls

3 数据框的简单计算和数据操作

3.1 数据的生成和转置

np.random.seed(523)
df = pd.DataFrame(np.random.randn(7,4),columns=['A','B','C','D'])
#df['sex']=['F']*3+['M']*4
df.index = range(1,8)
df

数据框转置,df.T

df2 = df.T
df2
df2.columns = ['A','B','C','D','E','F','G']
df2.index=range(1,5)
df2

3.2 数据框的加法减法

只有变量名、行名、数据类型对的上的元素才能相加,不匹配的元素相加会显示为NaN

df3=df-df2
df3

3.3 计算变量的增长率

使用错位相减方法,计算变量A的增长率。

df['A_growth'] = df['A']/(df['A']-df['A'].diff())-1
df

3.4 通过变量的值筛选数据

选择A小于0,或者增长率大于1的A,B,CA_growth列,下面两种写法结果一致。

df.loc[(df['A']<0)|(df.A_growth>1),['A','B','C','A_growth']]
df.loc[(df['A']<0)|(df.A_growth>1)][['A','B','C','A_growth']]

3.5 按照多个变量进行排序

把数据df中的每个数据按type进行降序排序,type内每类进行升序排序。

df['type'] = ['type1']*2+['type2']*2+['type1']*2+['type3']
df.sort_values(by=['type','B'],ascending=[False,True])

3.6 根据变量条件建立新变量

根据数据df中的A建立新变量AType,大于0为positive,小于等于0 为negtive

df.loc[df.A>0,'AType']='positive'
df.loc[df.A<=0,'AType']='negtive'
df

3.7 在已有的数据框中插新变量

使用insert函数将id插入到第0列。若插入同名变量,需设置allow_duplicates=True

df.insert(loc=0,column='id',value=np.random.randn(7))
df
df.insert(5,'id',0,allow_duplicates=True)
df

3.8 删除数据框的变量和观测值

使用drop变量,删除数据框df中的1,3,5行以及id变量。

df_new = df.drop(index=[1,3,5],columns='id')
df_new

4 长宽数据转换及数据集之间的合并

4.1 长宽数据转换

使用melt实现宽数据转长数据。id_vars是要保留的主字段,var_name拉长的分类变量,value_name拉长的度量值名称。

import pandas as pd
import numpy as np
df=pd.DataFrame({
"名称":["苹果","香蕉","橘子","梨","葡萄"],
"产地":["A","B","C","D","E"],
"Sale2013":[5000,3500,2300,2100,3100],
"Sale2014":[5050,3800,2900,2500,3300],
"Sale2015":[5050,3800,2900,2500,3300],
"Sale2016":[5050,3800,2900,2500,3300]})
df
df1=df.melt(id_vars=["名称","产地"],   #要保留的主字段
var_name="Year",                     #拉长的分类变量
value_name="Sale")                  #拉长的度量值名称
df1

长数据转为宽数据可以通过透视的功能实现,类似于excel中的透视表功能。用pivot方法实现。index为透视的索引,columns是透视的列,values是透视的值。

df2 = df1.pivot(index='Year',columns=['名称','产地'],values='Sale').T
df2

4.2 数据合并

使用merge进行合并,on为合并的关键字段,how为连接方式,merge函数默认连接方式是inner,另外有left,right,outer等,当两个数据集合并的列名不相同时用left_on,right_on

import pandas as pd
import numpy as np
df1=pd.DataFrame({'key':['a','b','c','d','e'],'data2':np.arange(5)})
print(df1)
df2=pd.DataFrame({'key':['a','b','c'],'data1':np.arange(3)})
print(df2)
df=pd.merge(df1,df2,on='key',how='inner')
print(df)
df=pd.merge(df1,df2,on='key',how='left')
print(df)
df=pd.merge(df1,df2,on='key',how='right')
print(df)
df=pd.merge(df1,df2,on='key',how='outer')
print(df)
df1=df1.rename(columns={'key':'key1'})
df_new=pd.merge(df1,df2,left_on='key1',right_on='key',how='left')
print(df_new)

本文内容主要来自吴喜之和张敏老师编著《Python 数据科学的手段》,源码已上传到我的Github的OpenDataScience中,有需要的读者可以阅览下载。

数据科学 | Pandas新手入门相关推荐

  1. azw3 python数据分析 活用pandas库_Python数据分析 活用Pandas库 数据科学教程数据分析入门图书 Python编程入门数据处理...

    内容介绍 本书是Python数据分析入门书,每个概念都通过简单实例来阐述,便于读者理解与上手.具体内容包括:Python及Pandas基础知识,加载和查看数据集,Pandas的DataFrame对象和 ...

  2. csv导入pgsql不成功_数据科学 | pandas数据导入与导出

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』原创 作者:杨士锦 周岩 书生 编者按 当我们开始着手做一个数据分析项目时,选择和导入数据集是第一个步骤,而导出数据虽然非必需,但有时候我们也需要保 ...

  3. python数据科学指南是什么_Python数据科学实践 | Spyder入门

    Spyder入门 01 Spyder--Python编程的"热带雨林" Spyder是一个用于科学计算的使用Python编程语言的集成开发环境(IDE).它结合了综合开发工具的高级 ...

  4. mysql数据库命令_新手入门MYSQL数据库命令大全

    一.命令行连接数据库 Windows操作系统进入CMD命令行,进入mysql.exe所在目录,运行命令 mysql.exe -h主机名 -u用户名 -p密码 注意:参数名与值之间没有空格 , 如:-h ...

  5. 微信数据包解析 php,微信交互数据包分析 - 新手入门及其它(软件) - 恩山无线论坛 - Powered by Discuz!...

    本帖最后由 derry 于 2019-3-7 23:30 编辑 微信启动后,主要建立以下连接: 1.      建立tcp长链接 端口号:80.443.8080中的一个(微信重启后会切换端口). 2. ...

  6. 『运筹OR帷幄』CSDN官方账号正式上线啦| 运筹学/优化理论/人工智能/数据科学的学习交流社区

    『运筹OR帷幄』四岁啦!谢谢你们陪伴我们又走过了一年.你有没有好奇跟你一样关注我们的小伙伴们都有些什么特点?比如说,大家一般都是什么学历?都居住在哪些地方?是不是从事同一个行业?有没有同一个研究方向的 ...

  7. 数据科学系列:plotly可视化入门介绍

    导读 在入道数据岗位之初,曾系列写过多个数据科学工具包的入门教程,包括Numpy.Pandas.Matplotlib.Seaborn.Sklearn等,这些也构成了自己当初的核心工具栈.在这5个工具包 ...

  8. 如何从零入门数据科学?

    作者:Aparna C Shastry 翻译:文婧 本文约2000字,建议阅读5分钟. 通过本文教大家如何轻松的学习数据科学以及为入门者提供一些深入学习的指导. 我相信近日90%的LinkedIn交流 ...

  9. Python爬虫新手入门教学(十四):爬取有声小说网站数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  10. 精通数据科学_10篇文章变得更加精通数据科学

    精通数据科学 当领英发布其第三份年度新兴工作报告时 ,各地的工程师都说:"阿们". 超过一半的清单是工程角色,并且首次出现了新的领域,例如机器人技术. 但是数据科学也有很强的表现. ...

最新文章

  1. XenServer中Windows 7与XP多vCPU支持配置
  2. oracle12版本无scott解决,Oracle12C中scott账户与表问题
  3. android测试之monkey测试
  4. Nagios 3.x 在线帮助中文版
  5. windows10系统电脑点击睡眠没反应怎么办?
  6. 互换性与技术测量教材pdf_《互换性与技术测量》赵燕【pdf】
  7. Robotium体验----白盒
  8. 一个屌丝程序猿的人生(十五)
  9. 程序员高手和菜鸟的区别是什么?
  10. 微信端H5页面调用分享接口
  11. 小车PWM调速-串口控制
  12. 软件设计师之根据16进制内存地址计算内存大小(超详细)
  13. 蒙特卡洛方法 (Monte Carlo Method)(5)
  14. fatal: unable to access ‘https://github.com/NEGVS/the-economist-ebooks.git/‘: schannel: failed to re
  15. 春季活动策划案例合集(共25份)
  16. IDEA 206个快捷键 动图演示,键盘侠标配
  17. 用python判断是否为闰年
  18. OOV问题-论文笔记《Neural Machine Translation of Rare Words with Subwords Units》- ACL2016
  19. 无线hacking系统—wifislax
  20. 如何使用 Lightly 进行 Python GUI 项目开发

热门文章

  1. windows11,安装maven。
  2. 在计算机里的键盘叫什么名字,电脑键盘最长的一个键叫什么名字
  3. SAP资产评估组名_SAP软件 财务月结步骤
  4. fdfs文件服务环境搭建
  5. Adafruit_SSD1306库学习
  6. ab并发测试post请求传参
  7. Idea如何设置Tomcat热部署
  8. PHP 中移除微信emoji表情
  9. 浅谈项目管理结构化思维
  10. 高频课程实验:无线传输系统设计