Pandas数据分析库

Pandas是目前Python生态圈最常用的数据分析库,该库以Numpy为基础,增加了标签支持,整合了对数据集的读取、清洗、转换、分析、统计、绘图等一系列工作流程,能够高效地处理和分析结构化数据。

使用前一般需要先打上如下代码:


import numpy as np

import pandas as pd

from pandas import DataFrame , Series

Pandas提供了三种基本数据结构:

series:带标签的一堆数组

DataFrame:带标签的二堆数组(即表格)

Panel:带标签的二维数组(若干表格的叠加面板)

我们主要使用Serier和DataFrame。与Numpy数组相比,Pandas最重要的改进是增加了标签,可以实现自动的按索对齐运算。

一、序列Series

1.简介:Series 是带标签的一维数组,它由索引和值两部分组成

values:一组数据(ndarray类型)

index:相关的数据索引标签

image

2.Series 创建

直接创建


import numpy as np

import pandas as pd

from pandas import DataFrame , Series

s1 = Series([10,20,30])#创建Series,默认整数索引

s2 =  Series([10,20,30]),index=['a','b','c'] #创建并指定索引

利用列表、numpy、字典来创建

2.Series 访问


s2['a'] #按标签访问

s2[0] #按整数下标访问

s2['a':'c']#标签切片,3个数据

S2[0:2]#按整数索引切片,2个数据

3.Series 修改添加


s2['a'] = 100 #修改a标签对应的值

s2[d] = 200 #通过赋值创建新标签

4.标签自动对齐运算

Series具有标签,运算时自动对齐标签进行计算,这是Pandas相比Numpy的重要改进。s1的标签为['a','x','b'],s2的标签为['a','b','c'],执行s1+s2时,两看都有的'a','b'标签自动对齐,对应的数值相加,两者互不匹配的'c','x'标签相加后值为NaN。NaN(not a number)是Pandas中表示非数值或缺夫值的符号。


s1 = Series([1,2,3],index=list('abc'))

s2 = Series({'a':10,'b':20,'c':30}

s1+s2

5.values和index属性


s2.values #显示所有值

s2.index #显示所有索引标签

注意:标签不能单个修改,但是允许对标签一次性全部赋值修改


s2.index[0]='d'#报错,标签不能单个修改

s2.index=['d','d','e'] #允许对标签一次性全部赋值修改

6.常用属性和方法

s.size 返回数据个数(此为属性,调用时不需要括号)

s.count() 返回非空数据的个数

s.unique() 返回不重复的数据值

s.value_counts() 统计每个数值的出现次数

s.head(n) 只显示头部的n个数据

s.tail(n) 只显示尾部的n个数据

s.take([il,i2,……]) 按指定的索引下标取数据

二、数据框DataFrame

1.DataFrame是Pandas最重要的数据结构。教据框可视为由行和列构成的二维表格,每行或每列都可视为一个Series。DalaFrame既有行索引(index)又有列索引(column)


data.jpg

2.数据框保存为csv文件


df.to_csv('mobile.csv',encoding='GBK') #GBK也可写为CP936编码

!type mobile.csv #默认逗号分隔,显示数据文件内容

上例如不指定编码,Pandar保存时默认使用utf-8编码,Python文件编码默认和操作系统编码一致。当用!type命今显示文件内容时,Windows系统用GBK编码解析,中文将显示为乱码,所在涉及中文文件时应视编码情况指定encoding='GBK'或utf-8参数。

3.创建

数据框可视为二维表格,有index(行)和column(列)两个重要属性,在创建数据框时,可以指定index和columns


frame=DataFrame(np.arange(12).rehape(3.4),index=['a','b','c'],columns=['c1','c2','c3','c4']

4.访问数据


data = {'apple':[1100,1050,1200],'huawe':1250,1300,1328],'oppo':[800,850,750]}

df = DataFrame(data,index=['一月',‘二月’,'三月')]#index行标签

df['apple'] #访问一列

df.info() #显示列名及数据类型

5.loc[]、iloc[]访问

按列访问:访问列数据时使用obiect[列名]或object.列名的形式


df['c1'] #访问c1列,也可写为df.c1

df[['c1','c3']] #访问c1、c3两列,注意多个列名要放入[]

df[df.c1>3] #按条件访问,则示c1列大于三的行

df[(df.c1>3)&(df.c2>5)] #按条件访问,c1列>3且c2列>5

注:df[切片] #按行索引切片
[]内的逻辑运算符要使用&(与)、|(或)~(非),不能使用Python的and、or、not运算符,[]内的逻辑表达式要用小括号括起来。

6.loc和iloc存取器

访问行或块数据时常用loc[]和iloc[]存取器,loc基于标签,iloc基于整数索引下标。loc[]中可以是[单行],[单行,单列],[行切片,列切片]等多种表达形式。取出的是Series或DataFrame.

loc[]和iloc[]格式示例表

df.loc['a'] 访问行标签''’对应的一行

df.iloc[0] 访问第0行

df.loc['a':'c'] 访问行标签a’到'c',共3行(含结尾)

df,iloc[0:2] 访问第0,1行,共2行(不含结尾)

df:iloc[[0,2]] 访问第0,2两行

df.iloc[0,2] 访问第0行,第2列处的单个数据

df.iloc[:,1] 访问第1列

df.iloc[:,[0,2]] 访问第0,2列数据

df.iloc[:2,:2] 访问第0~1行和第0~1列交叉处的数据块

7.at[]和iat[]取数器

取单个数据可使用at[]或iat[]。at[]基于标签,iat基于整数索引,格式均为[单行,单列],取出的是单个数据而下是Series.

df.iat[1,2] #基于整数索引,行和列都是从零开始编号

8.query查询取数

数据框支持query()查询,语法类似数据库中的SQL查询,根据列名条件进行数据筛选,复制返回新的DataFrame对象。


df.query('c1>2') #查询c1>c2的数据

参考文献

Python-Pandas数据分析库_chenfang0529的博客-CSDN博客

python数据分析:Pandas之Series - 知乎

Pandas DataFrame的基本属性详解_wei_lin的博客-CSDN博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容