Python--pandas--基础概念学习

pandas概述

1.Pandas是Python的一个数据分析包,该工具为解决数据分析任务而创建。
2.Pandas纳入大量库和标准数据模型,提供高效的操作数据集所需的工具。
3.Pandas提供大量能使我们快速便捷地处理数据的函数和方法。
4.Pandas是字典形式,基于NumPy创建,让NumPy为中心的应用变得更加简单。

pandas的数据结构

两个主要的数据结构:Series和DataFrame。

Series结构

  • Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生最简单的Series.
  • Series的字符串表现形式为:索引在左边,值在右边。如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表现形式和索引对象:

Series入门级api如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2019-06-05 21:45
# @Author  : LiYahui
# @Description : pandas series demo
import pandas as pd
import numpy as np

# 直接创建Series,采用默认的索引值
series1=pd.Series([2,4,5,7,8,6])
print(series1)
'''
0    2
1    4
2    5
3    7
4    8
5    6
dtype: int64
'''
print(series1.values)  # [2 4 5 7 8 6]
print(series1.index) # RangeIndex(start=0, stop=6, step=1)
#创建指定索引值的Series
series2=pd.Series([2,4,5,7,8,6],index=['a','b','c','d','e','f'])
print(series2)
'''
a    2
b    4
c    5
d    7
e    8
f    6
dtype: int64
'''
print(series2.index)  #Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
# 利用索引的方式选取Series的单个或一组值
print(series2['c'])  # 5
print(series2[['a','b','c','f']])   # 选取的列的值必须在[] 内进行包括
'''
a    2
b    4
c    5
f    6
dtype: int64
'''
#numpy数组运算(布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接
print(series2[series2>5])
'''
d    7
e    8
f    6
dtype: int64
'''
print(series2*2)
'''
a     4
b     8
c    10
d    14
e    16
f    12
dtype: int64
'''
print(np.exp(series2))
'''
a       7.389056
b      54.598150
c     148.413159
d    1096.633158
e    2980.957987
f     403.428793
dtype: float64
'''
#可以将Series看成是一个有定长的有序字典,因为它是索引值到数据值的一个映射
#因此,一些字典函数也可以在这里使用:
'a' in series2        #return:True
'h' in series2     #return:False
2 in series2.values   #return:True

#利用字典创建Series
dic={'l':1,'z':2,'h':3}
series3=pd.Series(dic)
print(series3)
'''
l    1
z    2
h    3
dtype: int64
'''
#若索引比字典的索引多,则与字典索引相匹配的则会被找到,并放置到相应的位置中
#而对应字找不到的索引,其结果则为NaN(即非数字,Not a Number,在pandas中,用于表示缺失或NA值)
ind=['l','z','h','a']
series4=pd.Series(dic,index=ind)
print(series4)
'''
l    1.0
z    2.0
h    3.0
a    NaN
dtype: float64
'''
#pandas中isnull和notnull函数用于检测缺失数据:
pd.isnull(series4)    #等效于: obj4.isnull()
pd.notnull(series4)
"""
pd.isnull(series4):        pd.notnull(series4)
l    False              l     True
z    False              z     True
h    False              h     True
a     True              a     False
dtype: bool             dtype: bool

"""

#算术运算中自动对齐不同索引的数据
print(series4+series3)
'''
a    NaN
h    6.0
l    2.0
z    4.0
dtype: float64
'''
#Series对象本身及其索引都有一个name属性
series4.name='myname'
series4.index.name="letter"
"""series4=
letter
l    1.0
z    2.0
h    3.0
a    NaN
Name: myname, dtype: float64
"""
# 索引可以通过赋值的方式进行改变
series4.index=['li','zi','hua','a']
"""series4=
li     1.0
zi     2.0
hua    3.0
a      NaN
Name: myname, dtype: float64
"""

DataFrame结构

  • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(公用同一个索引)。跟其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或者别的一维数据结构)。
    其中,可以输入给DataFrame构造器的数据类型及相关说明:
类型 说明
二维ndarray 数据矩阵,可以传入行标和列标
由数组、列表、元组组成的字典 每个序列会变成DataFrame的一列,所有的序列的长度必须相同
Numpy的结构化/记录的数组 类似于 "由数组组成的字典"
由Series组成的字典 每个Series都会成一列,如果没有显示的指定索引,则各Series的索引会被合并成结果的行索引
由字典组成的字典 各内层字典会成一列。键会被合并成结果的行索引,根由‘Series组成的字典’的情况一样
由列表和元组组成的列表 类似于二维 “ndarray”
另一个DataFrame 改DataFrame的索引会被引用,除非显示了指定其他的索引
numpy的MaskedArray 类似于‘二维ndarray’的情况,只是掩值码会在DataFrame中变成NA/缺失值

DataFrame入门级api

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2019-06-05 22:20
# @Author  : LiYahui
# @Description :  dataframe_demo
import pandas as pd
import numpy as np

# 构建DataFrame
# 最常用的一种是直接传入一个由等长列表或numpy数组组成的字典:

data = {'names': ['Bob', 'Jane', 'Jack', 'Ann'],
        'sex': ['M', 'F', 'M', 'F'],
        'age': [21, 30, 26, 28]}
df1 = pd.DataFrame.from_dict(data)  # 和下句等价
df1 = pd.DataFrame(data)
# print(df1)
# 没有指定索引,会自动加上索引,且全部列会被有序排列
'''
  names sex  age
0   Bob   M   21
1  Jane   F   30
2  Jack   M   26
3   Ann   F   28
'''
# 若指定列序列,则会按照指定顺序排列
df2 = pd.DataFrame(data, columns=['names', 'sex', 'age'])
# df2=pd.DataFrame.from_dict(data,columns=['names','sex','age'])  #报错
# print(df2)
'''
  names sex  age
0   Bob   M   21
1  Jane   F   30
2  Jack   M   26
3   Ann   F   28
'''
# 若传入列在数据中找不到,会返回NA值,指定列和索引
df3 = pd.DataFrame(data, columns=['names', 'sex', 'age', 'id'], index=['a', 'b', 'c', 'd'])

# print(df3)
'''
  names sex  age   id
a   Bob   M   21  NaN
b  Jane   F   30  NaN
c  Jack   M   26  NaN
d   Ann   F   28  NaN
'''
# 通过类似字典标记或属性的方式,可以获取Series(列数据):
df4 = df3['sex']
# print(df4)
'''
a    M
b    F
c    M
d    F
Name: sex, dtype: object
'''
df5 = df3.age
# print(df5)
'''
a    21
b    30
c    26
d    28
Name: age, dtype: int64
'''
# 嵌套的嵌套序列数据结构
city_data = {'城市': pd.Series(['北京', '上海', '深圳', '成都', '杭州'], index=['a', 'b', 'c', 'd', 'e']),
             '人口/千万': pd.Series([2171, 2415, 1191, 901,899], index=['a', 'b', 'c', 'd', 'e']),
             '年份': pd.Series([2015, 2016, 2015, 2016, 2015], index=['a', 'b', 'c', 'd', 'e'])
             }
df6 = pd.DataFrame(city_data)
print(df6)
'''
   城市  人口/千万    年份
a  北京   2171  2015
b  上海   2415  2016
c  深圳   1191  2015
d  成都    901  2016
e  杭州    899  2015
'''
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容