在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame。Series类似于numpy中的一维数组,除了通吃一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用。

一、首先是引入pandas和numpy,这是经常配合使用的两个包,pandas依赖于numpy,引入以后我们可以直接使用np/pd来表示这个两个模块。

In [1]: import numpy as np
In [2]: import pandas as pd

1)通过二维数组创建数据框,我们看一下如何创建一个6X4的数据:randn函数用于创建随机数,参数表示行数和列数,dates创建的索引列。

In [3]: dates = pd.date_range('20170808',periods=6)In [4]: dates
Out[4]:
DatetimeIndex(['2017-08-08', '2017-08-09', '2017-08-10', '2017-08-11','2017-08-12', '2017-08-13'],dtype='datetime64[ns]', freq='D')In [5]: df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))In [6]: df
Out[6]: A         B         C         D
2017-08-08 -0.251957  1.408053 -0.085674  0.365377
2017-08-09 -0.141047  0.445702 -0.560573  0.251600
2017-08-10 -0.218148  1.619402 -1.799525 -0.697128
2017-08-11 -0.542612 -1.401814 -0.158879  0.969136
2017-08-12  0.268779 -1.376531  0.950630 -1.041401
2017-08-13  0.488717 -0.267509  0.112117 -1.166227

2) 通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame:索引是自动创建的整数

In [7]: df1 = pd.DataFrame({'姓名':["李小强","孙三","王玲","刘老四"],...:     ...:                     '入学日期':pd.Timestamp('20170901'),...:     ...:                     '性别':["男","男","女","男"],...:     ...:                     '年龄':pd.Series([15,16,13,18],dtype='int32'),...:     ...:                     '排名':np.array([1,3,2,4],dtype='float32'),...:     ...:                     '是否':'yes'})In [8]: df1
Out[8]: 入学日期   姓名  年龄 性别   排名   是否
0 2017-09-01  李小强  15  男  1.0  yes
1 2017-09-01   孙三  16  男  3.0  yes
2 2017-09-01   王玲  13  女  2.0  yes
3 2017-09-01  刘老四  18  男  4.0  yes

3)读取外部文件csv,excel,txt

In [9]: df2 = pd.read_csv("/home/soft/st.csv",encoding='gbk')In [10]: df2
Out[10]: 姓名      入学日期 性别  年龄  排名   是否
0  李小强  2017-9-1  男  15   1  yes
1   孙三  2017-9-1  男  16   3  yes
2   王玲  2017-9-1  女  13   2  yes
3  刘老四  2017-9-1  男  18   4  yes

注意:有一个编码问题。encoding='gbk'

读取excel文件,文件里有两个表。

In [11]: df3 = pd.read_excel("/home/soft/st.xlsx",sheetname=[0,1],skiprows=[0])In [12]: df3
Out[12]:
OrderedDict([(0,    孙小强 2017-09-01 00:00:00  男  25  4  no0  李小红          2017-09-01  女  16  1  no1  张爱玲          2017-09-01  女  23  3  no2  王老五          2017-09-01  男  19  2  no),(1,    孙强 2007-09-01 00:00:00  男  125  4  yes0  李红          2007-09-01  女  216  1   no1  张玲          2007-09-01  女  223  3  yes2  王五          2007-09-01  男  319  2   no)])

#sheetname指定为读取几个sheet,sheet数目从0开始

#skiprows=[0]代表读取跳过的行数第0行,不写代表不跳过标题

读取txt文件

In [13]: df4 = pd.read_table("/home/soft/st.txt",encoding='gbk',sep=',',index_col=1)In [14]: df4
Out[14]: 姓名 性别  年龄  排名   是否
入学日期
2017-9-1  李小强  男  15   1  yes
2017-9-1   孙三  男  16   3  yes
2017-9-1   王玲  女  13   2  yes
2017-9-1  刘老四  男  18   4  yes

#index_col=1:设置第2列数据作为index

#sep=','以,为分隔符。

#header=None:没有每列的column name,可以自己设定

二、数据的查看

1.使用dtypes来查看各行的数据格式

In [15]: df1.dtypes
Out[15]:
入学日期    datetime64[ns]
姓名              object
年龄               int32
性别              object
排名             float32
是否              object
dtype: object

2.使用head查看前几行数据(默认是前5行),使用tail查看后5行数据

In [16]: df.head(3)
Out[16]: A         B         C         D
2017-08-08 -0.251957  1.408053 -0.085674  0.365377
2017-08-09 -0.141047  0.445702 -0.560573  0.251600
2017-08-10 -0.218148  1.619402 -1.799525 -0.697128In [17]: df1.tail(2)
Out[17]: 入学日期   姓名  年龄 性别   排名   是否
2 2017-09-01   王玲  13  女  2.0  yes
3 2017-09-01  刘老四  18  男  4.0  yes

3.显示索引、列和底层的numpy数据:

In [18]: df.index
Out[18]:
DatetimeIndex(['2017-08-08', '2017-08-09', '2017-08-10', '2017-08-11','2017-08-12', '2017-08-13'],dtype='datetime64[ns]', freq='D')In [19]: df1.columns
Out[19]: Index([u'入学日期', u'姓名', u'年龄', u'性别', u'排名', u'是否'], dtype='object')In [20]: df2.values
Out[20]:
array([[u'\u674e\u5c0f\u5f3a', u'2017-9-1', u'\u7537', 15, 1, u'yes'],[u'\u5b59\u4e09', u'2017-9-1', u'\u7537', 16, 3, u'yes'],[u'\u738b\u73b2', u'2017-9-1', u'\u5973', 13, 2, u'yes'],[u'\u5218\u8001\u56db', u'2017-9-1', u'\u7537', 18, 4, u'yes']], dtype=object)

4.数据的快速统计汇总describe(),转置T。

In [21]: df.describe()
Out[21]: A         B         C         D
count  6.000000  6.000000  6.000000  6.000000
mean  -0.066044  0.071217 -0.256984 -0.219774
std    0.376911  1.319453  0.906105  0.869116
min   -0.542612 -1.401814 -1.799525 -1.166227
25%   -0.243504 -1.099276 -0.460149 -0.955333
50%   -0.179597  0.089097 -0.122276 -0.222764
75%    0.166322  1.167466  0.062669  0.336933
max    0.488717  1.619402  0.950630  0.969136In [22]: df2.T
Out[22]: 0         1         2         3
姓名         李小强        孙三        王玲       刘老四
入学日期  2017-9-1  2017-9-1  2017-9-1  2017-9-1
性别           男         男         女         男
年龄          15        16        13        18
排名           1         3         2         4
是否         yes       yes       yes       yes

5. 按轴进行排序和按值进行排序。

In [23]: df2.sort_index(axis=1,ascending=False)
Out[23]: 是否  排名 性别  年龄   姓名      入学日期
0  yes   1  男  15  李小强  2017-9-1
1  yes   3  男  16   孙三  2017-9-1
2  yes   2  女  13   王玲  2017-9-1
3  yes   4  男  18  刘老四  2017-9-1In [24]: df.sort_values('B')
Out[24]: A         B         C         D
2017-08-11 -0.542612 -1.401814 -0.158879  0.969136
2017-08-12  0.268779 -1.376531  0.950630 -1.041401
2017-08-13  0.488717 -0.267509  0.112117 -1.166227
2017-08-09 -0.141047  0.445702 -0.560573  0.251600
2017-08-08 -0.251957  1.408053 -0.085674  0.365377
2017-08-10 -0.218148  1.619402 -1.799525 -0.697128

6.从mysql中读取数据,import MySQLdb

In [152]: conn=MySQLdb.connect(user="root",passwd="88888",host="192.168.2.245",db="school",charset="utf8")In [153]: sql="select * from student limit 6"In [154]: df = pd.read_sql(sql,conn)In [155]: df
Out[155]: id name  Age
0   1   陈二   21
1   2  张路路   25
2   3   王五   35
3   4   历时   45
4   5   李四   35
5   6   赵六   75

下面是数据库里的数据

pandas 终极版1:创建和查看DataFrame数据 mysql读取数据相关推荐

  1. pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe)

    pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe) 目录 pandas使用iterite ...

  2. 数据分析(六)之pandas学习【Series创建、切片、索引和读取外部数据】

    数据分析学习线路图 为什么要学习pandas? 那么问题来了:numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? nump ...

  3. Neo4j从mysql读取数据_[bigdata-086] python3+neo4j 从mysql数据库读取记录然后创建节点和关系写入到neo4j...

    1. 测试 1.1web界面  http://tz211:7474/browser/ 在这里执行 MATCH (n) RETURN n,能看到节点和相互关系 一共是3个节点,6个相互关系 1.2 在2 ...

  4. [Pandas] 查看DataFrame的常用属性

    导入数据 import pandas as pddf = pd.DataFrame([['L123','A',0,123],['L456','A',1,456],['L437','C',0,789], ...

  5. mysql数据库表的创建与查看

    mysql数据库表的创建与查看 一.mysql查看 查看所有数据库 show databases 切换数据库 use 数据库名 查看该数据库下所有的表名 show tables 查看表的结构 desc ...

  6. pandas使用dataframe读写mysql数据库

    文章目录 写入数据表 读取数据表 参考资料 写入数据表 首先要安装依赖包: pip install -i https://mirrors.aliyun.com/pypi/simple/ pymysql ...

  7. python pandas 读取数据库_数据分析-pandas从数据库读取数据

    数据分析-pandas从数据库读取数据 使用pandas读取数据到DataFrame,对于只是数据分析来说,重点是读取数据,读取数据过程越简单越好,并不需要写得很复杂显得自己很厉害的样子.最好就是代码 ...

  8. DE连接,创建数据集,数据导入以及数据导出(转载)

    转自:http://blog.csdn.net/kone0611/article/details/51532006 界面 2.数据库的连接 [csharp] view plaincopy IWorks ...

  9. 【Python爬虫系列教程 11-100】Python网络爬虫实战:最简单的Pandas 中的read_html一行代码爬取网页表格型数据,就可以爬取虎扑体育NBA球员信息

    文章目录 爬取对象 分析 实现代码 爬取对象 虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. ...

最新文章

  1. pma mysql_Table ‘phpmyadmin.pma_table_uiprefs’ doesn’t exist mysql
  2. 17,Scatter函数
  3. Apache CXF实战之六 创建安全的Web Service
  4. flutter 一行代码取消 返回按钮
  5. 雅虎核心业务售与Verizon:互联网先驱的时代终结
  6. 【LiveVideoStack线上分享】WebAssembly在Web多媒体领域的相关实践
  7. 讲述华为发布鸿蒙系统,华为鸿蒙系统正式版首批升级名单公布:这8款机型用户有福了!...
  8. maven 多项目搭建
  9. 吴恩达深度学习的实用层面编程作业:正则化Regularization
  10. cad通过钢筋大样生成钢筋明细表插件_易图(CAD插件For2016-2018)下载|易图(CAD插件For2016-2018)官方版下载_v18.3.1_9号软件下载...
  11. 第05课:Redis 实际应用中的异常场景及其根因分析和解决方案
  12. c语言程序设计答案苏小红,C语言程序设计苏小红版答案[推荐阅读]
  13. 时间加减计算器_手机计算器别只拿来算数!教你这样开启,能唤出隐藏功能,很实用...
  14. 网络技术 | Cisco Packet Tracer 6.2安装包 安装教程
  15. 直到黎明 Until Dawn 后感
  16. Android studio报Error:Expected NDK STL shared object file at libgnustl_shared.so
  17. Swift4打造今日头条视频实战视频教程
  18. Dropout Batch Normolization
  19. android屏幕共享demo,屏幕共享
  20. final-期末大作业-制作AR射箭小游戏(Unity AR配置详细教程)

热门文章

  1. 上手机器学习前,先来学习下Python相关的环境配置吧~
  2. 安装TextPad后无“Compile Java” 等选项的解决办法
  3. 大海航行靠舵手,FONE将把财务数字化的航船带向何方?
  4. top X 好听的英文歌
  5. Python全栈之路---day01(背景、语法初识)
  6. 今日报错系列:没有找到 或上一个增量链接没有生成它;正在执行完全链接
  7. php下载pdf并保存图片大小,php根据URL下载图片、压缩包、pdf等远程文件到本地
  8. 收发一体超声波测距离传感器模块_空气中70KHZ超声波换能器传感器探头DYA-70-03A测距探头3米量程...
  9. ad域推送软件_Windows域推送软件、域推送安装msi程序、域推送安装软件的方法-MSI文件...
  10. AI 帮忙找 Bug,英特尔开源代码编程工具ControlFlag