0

0

Python数据分析库pandas基本操作方法_python

不言

不言

发布时间:2018-04-08 11:35:44

|

4254人浏览过

|

来源于php中文网

原创

下面就为大家分享一篇python数据分析库pandas基本操作方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

pandas是什么?

是它吗?

。。。。很显然pandas没有这个家伙那么可爱。。。。

我们来看看pandas的官网是怎么来定义自己的:

立即学习Python免费学习笔记(深入)”;

pandas is an open source, easy-to-use data structures and data analysis tools for the Python programming language.

很显然,pandas是python的一个非常强大的数据分析库!

让我们来学习一下它吧!

1.pandas序列

import numpy as np 
import pandas as pd 
 
s_data = pd.Series([1,3,5,7,np.NaN,9,11])#pandas中生产序列的函数,类似于我们平时说的数组 
print s_data

2.pandas数据结构DataFrame

import numpy as np 
import pandas as pd 
 
#以20170220为基点向后生产时间点 
dates = pd.date_range('20170220',periods=6) 
#DataFrame生成函数,行索引为时间点,列索引为ABCD 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
print 
print data.shape 
print 
print data.values

3.DataFrame的一些操作(1)

import numpy as np
import pandas as pd
#设计一个字典
d_data = {'A':1,'B':pd.Timestamp('20170220'),'C':range(4),'D':np.arange(4)}
print d_data
#使用字典生成一个DataFrame
df_data = pd.DataFrame(d_data)
print df_data
#DataFrame中每一列的类型
print df_data.dtypes
#打印A列
print df_data.A
#打印B列
print df_data.B
#B列的类型
print type(df_data.B)

4.DataFrame的一些操作(2)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
print 
#输出DataFrame头部数据,默认为前5行 
print data.head() 
#输出输出DataFrame第一行数据 
print data.head(1) 
#输出DataFrame尾部数据,默认为后5行 
print data.tail() 
#输出输出DataFrame最后一行数据 
print data.tail(1) 
#输出行索引 
print data.index 
#输出列索引 
print data.columns 
#输出DataFrame数据值 
print data.values 
#输出DataFrame详细信息 
print data.describe()

5.DataFrame的一些操作(3)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
print 
#转置 
print data.T 
#输出维度信息 
print data.shape 
#转置后的维度信息 
print data.T.shape 
#将列索引排序 
print data.sort_index(axis = 1) 
#将列索引排序,降序排列 
print data.sort_index(axis = 1,ascending=False) 
#将行索引排序,降序排列 
print data.sort_index(axis = 0,ascending=False) 
#按照A列的值进行升序排列 
print data.sort_values(by='A')

6.DataFrame的一些操作(4)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
#输出A列 
print data.A 
#输出A列 
print data['A'] 
#输出3,4行 
print data[2:4] 
#输出3,4行 
print data['20170222':'20170223'] 
#输出3,4行 
print data.loc['20170222':'20170223'] 
#输出3,4行 
print data.iloc[2:4] 
输出B,C两列 
print data.loc[:,['B','C']]

7.DataFrame的一些操作(5)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
#输出A列中大于0的行 
print data[data.A > 0] 
#输出大于0的数据,小于等于0的用NaN补位 
print data[data > 0] 
#拷贝data 
data2 = data.copy() 
print data2 
tag = ['a'] * 2 + ['b'] * 2 + ['c'] * 2 
#在data2中增加TAG列用tag赋值 
data2['TAG'] = tag 
print data2 
#打印TAG列中为a,c的行 
print data2[data2.TAG.isin(['a','c'])]

8.DataFrame的一些操作(6)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
#将第一行第一列元素赋值为100 
data.iat[0,0] = 100 
print data 
#将A列元素用range(6)赋值 
data.A = range(6) 
print data 
#将B列元素赋值为200 
data.B = 200 
print data 
#将3,4列元素赋值为1000 
data.iloc[:,2:5] = 1000 
print data

9.DataFrame的一些操作(7)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods = 6) 
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD')) 
print df 
#重定义索引,并添加E列 
dfl = df.reindex(index = dates[0:4],columns = list(df.columns)+['E']) 
print dfl 
#将E列中的2,3行赋值为2 
dfl.loc[dates[1:3],'E'] = 2 
print dfl 
#去掉存在NaN元素的行 
print dfl.dropna() 
#将NaN元素赋值为5 
print dfl.fillna(5) 
#判断每个元素是否为NaN 
print pd.isnull(dfl) 
#求列平均值 
print dfl.mean() 
#对每列进行累加 
print dfl.cumsum()

10.DataFrame的一些操作(8)

import numpy as np 
import pandas as pd 
dates = pd.date_range('20170220',periods = 6) 
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD')) 
print df 
dfl = df.reindex(index = dates[0:4],columns = list(df.columns)+['E']) 
print dfl 
#针对行求平均值 
print dfl.mean(axis=1) 
#生成序列并向右平移两位 
s = pd.Series([1,3,5,np.nan,6,8],index = dates).shift(2) 
print s 
#df与s做减法运算 
print df.sub(s,axis = 'index') 
#每列进行累加运算 
print df.apply(np.cumsum) 
#每列的最大值减去最小值 
print df.apply(lambda x: x.max() - x.min())

11.DataFrame的一些操作(9)

import numpy as np 
import pandas as pd 
dates = pd.date_range('20170220',periods = 6) 
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD')) 
print df 
#定义一个函数 
def _sum(x): 
 print(type(x)) 
 return x.sum() 
#apply函数可以接受一个函数作为参数 
print df.apply(_sum) 
s = pd.Series(np.random.randint(10,20,size = 15)) 
print s 
#统计序列中每个元素出现的次数 
print s.value_counts() 
#返回出现次数最多的元素 
print s.mode()

12.DataFrame的一些操作(10)

西安龙昌光学元件企业网站1.1
西安龙昌光学元件企业网站1.1

在原有基础上进行了较大改动进行了代码重写,页面结构和数据库结构均作了优化,基本功能: 1. 精美flash导入页面; 2. 产品发布,支持一级分类; 3. 公司简介、售后服务、联系我们,可进行后台管理; 4. 也可以照“公司简介”的方法增加其他内容,如企业文化、企业荣誉... 5. 采用eWebEditor是网站后台具有强大的编辑功能; 初始帐号: admin 初始密码: admin888

下载

import numpy as np 
import pandas as pd 
 
df = pd.DataFrame(np.random.randn(10,4) , columns = list('ABCD')) 
print df 
#合并函数 
dfl = pd.concat([df.iloc[:3],df.iloc[3:7],df.iloc[7:]]) 
print dfl 
#判断两个DataFrame中元素是否相等 
print df == dfl

13.DataFrame的一些操作(11)

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(10,4) , columns = list('ABCD'))
print df
left = pd.DataFrame({'key':['foo','foo'],'lval':[1,2]})
right = pd.DataFrame({'key':['foo','foo'],'rval':[4,5]})
print left
print right
#通过key来合并数据
print pd.merge(left,right,on='key')
s = pd.Series(np.random.randint(1,5,size = 4),index = list('ABCD'))
print s
#通过序列添加一行
print df.append(s,ignore_index = True)

14.DataFrame的一些操作(12)

import numpy as np 
import pandas as pd 
df = pd.DataFrame({'A': ['foo','bar','foo','bar', 
       'foo','bar','foo','bar'], 
     'B': ['one','one','two','three', 
       'two','two','one','three'], 
     'C': np.random.randn(8), 
     'D': np.random.randn(8)}) 
print df 
print 
#根据A列的索引求和 
print df.groupby('A').sum() 
print 
#先根据A列的索引,在根据B列的索引求和 
print df.groupby(['A','B']).sum() 
print 
#先根据B列的索引,在根据A列的索引求和 
print df.groupby(['B','A']).sum()

15.DataFrame的一些操作(13)

import pandas as pd 
import numpy as np 
#zip函数可以打包成一个个tuple 
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz', 
      'foo', 'foo', 'qux', 'qux'], 
     ['one', 'two', 'one', 'two', 
      'one', 'two', 'one', 'two']])) 
print tuples 
#生成一个多层索引 
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
print index 
print 
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B']) 
print df 
print 
#将列索引变成行索引 
print df.stack()

16.DataFrame的一些操作(14)

import pandas as pd 
import numpy as np 
 
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, names=['first', 'second']) 
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B']) 
print df 
print 
stacked = df.stack() 
print stacked 
#将行索引转换为列索引 
print stacked.unstack() 
#转换两次 
print stacked.unstack().unstack()

17.DataFrame的一些操作(15)

import pandas as pd 
import numpy as np 
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)}) 
print df 
#根据A,B索引为行,C的索引为列处理D的值 
print pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']) 
#感觉A列等于one为索引,根据C列组合的平均值 
print df[df.A=='one'].groupby('C').mean()

18.时间序列(1)

import pandas as pd 
import numpy as np 
 
#创建一个以20170220为基准的以秒为单位的向前推进600个的时间序列 
rng = pd.date_range('20170220', periods=600, freq='s') 
print rng 
#以时间序列为索引的序列 
print pd.Series(np.random.randint(0, 500, len(rng)), index=rng)

19.时间序列(2)

import pandas as pd 
import numpy as np 
 
rng = pd.date_range('20170220', periods=600, freq='s') 
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng) 
#重采样,以2分钟为单位进行加和采样 
print ts.resample('2Min', how='sum') 
#列出2011年1季度到2017年1季度 
rng1 = pd.period_range('2011Q1','2017Q1',freq='Q') 
print rng1 
#转换成时间戳形式 
print rng1.to_timestamp() 
#时间加减法 
print pd.Timestamp('20170220') - pd.Timestamp('20170112') 
print pd.Timestamp('20170220') + pd.Timedelta(days=12)

20.数据类别

import pandas as pd 
import numpy as np 
 
df = pd.DataFrame({"id":[1,2,3,4,5,6], "raw_grade":['a', 'b', 'b', 'a', 'a', 'e']}) 
print df 
#添加类别数据,以raw_grade的值为类别基础 
df["grade"] = df["raw_grade"].astype("category") 
print df 
#打印类别 
print df["grade"].cat.categories 
#更改类别 
df["grade"].cat.categories = ["very good", "good", "very bad"] 
print df 
#根据grade的值排序 
print df.sort_values(by='grade', ascending=True) 
#根据grade排序显示数量 
print df.groupby("grade").size()

21.数据可视化

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
 
ts = pd.Series(np.random.randn(1000), index=pd.date_range('20170220', periods=1000)) 
ts = ts.cumsum() 
print ts 
ts.plot() 
plt.show()

22.数据读写

import pandas as pd 
import numpy as np 
 
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD')) 
#数据保存,相对路径 
df.to_csv('data.csv') 
#数据读取 
print pd.read_csv('data.csv', index_col=0)

数据被保存到这个文件中:

打开看看:

相关推荐:

python解决pandas处理缺失值为空字符串的问题_python

实例讲解Python如何利用pandas查询数据

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 7.7万人学习

Django 教程
Django 教程

共28课时 | 3.3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号