Pandas 库


title: An R Markdown document converted from "04.ipynb"
output: html_document


一、Pandas 库

Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

但是与NumPy不同,Pandas更适合处理表格型或异质性数据(NumPy更适合处理同质型的

数值类数组数据),并提供了大量数学函数及计算方法。

import numpy as np
import pandas as pd

二、Pandas 库数据结构——Series, DataFrame

1. Series——索引index,值values

a = pd.Series([1, 2, 3, 4, 5])
a
a.index
a.values
a = pd.Series([1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e'])
a
a.index
a_reindex = pd.Series(a, index = ['e', 'b', 'c', 'd', 'a']) 
a_reindex
a_reindex = pd.Series(a, index = ['e', 'b', 'c', 'd', 'a','f', 'g']) 
a_reindex
a
b= a.reindex(['e', 'b', 'c', 'd', 'a','f', 'g'])
b
a
a.rename(index={'a':'h','b':'i','c':'j','d':'k','e':'l'})
a
a.index = ['e', 'b', 'c', 'd', 'a']
a
a.index = ['e', 'b', 'c', 'd', 'a']
a
b = np.array(a)
b
c = pd.Series(b)
c
data = {'yuwen': 80, 'yingyu': 90, 'shuxue': 80}
data
type(data)
data_ = pd.Series(data,index = ['yingyu','yuwen','shuxue'])
data_1 = pd.Series(data)
data_
data_1
data_.index
data_.name = 'Score'
data_.index.name = 'Course'
data_
data_.index

2. DataFrame——索引index, columns,值values

data = np.array([[95, 96, 97], 
                [80, 85, 86], 
                [56, 65, 70]])
data
data1 = np.array(1)
data1
frame = pd.DataFrame(data)
frame
frame = pd.DataFrame(data, index=['xiaoming', 'xiaohong', 'xiaohei'],
                      columns=['yuwen', 'yingyu', 'shuxue'])
frame
frame_ = pd.DataFrame(frame, index=[ 'xiaohong', 'xiaoming','xiaohei'],
                      columns=['yingyu','yuwen',  'shuxue'])
frame_
frame__ = pd.DataFrame(frame, index=[ 'xiaohong', 'xiaoming','xiaohei','xiaobai'],
                      columns=['yingyu',
                      'yuwen', 'shuxue', 'tiyu'])
frame__
frame_.reindex(index=[ 'xiaohong', 'xiaoming','xiaohei','xiaobai'],
               columns=['yingyu','yuwen', 'shuxue', 'tiyu'])
frame_
frame_.rename(index={"xiaohong":"damao","xiaoming":"ermao","xiaohei":"Nicolas Cage"},
              columns={"yingyu":"English", "yuwen":"Literature", "shuxue":"Maths"})
frame_
frame_.index = ['damao','ermao','Nicolas Cage']
frame_.columns = ['English', 'Literature', 'Maths']
frame_
data = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],
        "Music":["A","B","C"]}
type(data)
df = pd.DataFrame(data)
df
df = pd.DataFrame(data, index = ["alpha", "beta","theta"])
df
df.index
df.columns
df.name = 'Score'
df.index.name = 'Person'
df.columns.name = 'Course'
df

小结:

1.Series, DataFrame 结构

2.指定或修改索引方法

index,columns 指定索引,已经有索引可以按索引重新排序

reindex 通过reindex方法,重新建立索引或排序

rename 修改索引

Series.index = []

DataFrame.columns = []
df.info()
str(df)

备注:

  1. 元组,一种固定长度的,不可变的python对象序列

  2. 列表,长度可变的,内容可修改的序列

  3. ndarray,高效多维同类数据容器,提供便捷的算数操作及广播功能

  4. Dataframe, 异质性矩阵表,每一列(columns)可以是不同的值类型

三、Series, DataFrame 运算

1. 基本运算

s1 = pd.Series([1, 2, 3],
              index = ['a','b','c'])
s1
s1 - 1
s2 = pd.Series([4, 5, 6],
              index = ['b','c','e'])
s2
s1 + s2
data = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],
        "Music":["A","B","C"]}
df = pd.DataFrame(data,index = ["alpha", "beta","theta"])
df
df * 2
data1 = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],}
df1 = pd.DataFrame(data1,index = ["alpha", "beta","theta"])
df1
df + df1
add_ = {'Maths':10,'English':10,'Literature':20,'Gym':"A"}
add_ = pd.Series(add_)
add_
df1
add_
df1 + add_
add1_ = {'alpha':10,'beta':10,'theta':20,}
add1_ = pd.Series(add1_)
add1_
df1+add1_
df1
df1.add(add1_,axis='index')

2. 矩阵运算、通用函数运算

df
df.T
df
np.square(df)
np.square(df1)

3. 基本统计方法

df.max(axis=0)
df.mean(axis=1)
df.describe()
df.info

四、Series, DataFrame 索引与切片

1. Series 索引

add_ = {'Maths':10,'English':10,'Literature':20,'Gym':"A"}
add_ = pd.Series(add_)
add_
add_['Maths']
add_['Maths':'Literature']
add_[2]
add_[:2]
add_[[True, False, True, False]]
add_.English

2. DataFrame 索引

2.1 通过索引名称进行索引

df.dtypes
df
df['Maths']
df[['Maths','English']]
df.Maths
df['alpha']
df.loc['alpha']
df.loc['alpha':'theta']
df.alpha

2.2 通过数字进行索引

df.iloc[2]
df.iloc[:,2]
df.iloc[:2,:2]
df[:2]
df[2]
df[:2,:2]

2.3 通过布尔值索引

df1 >70
df1[df1>70]
df1[df1['Maths']>70]
df1['Maths']>70
df1[df1['Maths']>70] = 70
df1

五、Series, DataFrame 删除操作

1. Series 删除操作

add_ = {'Maths':10,'English':10,'Literature':20,'Gym':"A"}
add_ = pd.Series(add_)
add_
add_.pop('Maths')
add_
add_ = {'Maths':10,'English':10,'Literature':20,'Gym':"A"}
add_ = pd.Series(add_)
add_
add_.drop('Maths')
add_
add_.drop('Maths',inplace=True)
add_
del add_['English']
add_

2. DataFrame 的删除

data = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],
        "Music":["A","B","C"]}
df = pd.DataFrame(data,index = ["alpha", "beta","theta"])
df
df.pop("Music")
df
df.drop('alpha')
df.drop('Maths',axis=1)
df
del df['Maths']
df
del df.loc['alpha']

六. Series, DataFrame 合并操作

1. Series 合并操作

s1 = pd.Series([1, 2, 3],
              index = ['a','b','c'])
s1
s2 = pd.Series([4, 5, 6],
              index = ['b','c','e'])
s2
pd.concat((s1,s2))
pd.concat((s1,s2),axis =1)
s1.combine_first(s2)

2. DataFrame 合并操作

data = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],
        "Music":["A","B","C"]}
df = pd.DataFrame(data,index = ["alpha", "beta","theta"])
df
data1 = {"English":[80,70,60], 
        "Maths":[80,90,50],
        "Literature":[70,70,85],}
df1 = pd.DataFrame(data1,index = ["beta","alpha","theta"])
df1
pd.concat((df,df1))
pd.concat((df,df1),axis=1)
df1.combine_first(df)
data = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],
        "Music":["A","B","C"],
        "ID":[1001,1002,1003]}
df = pd.DataFrame(data)
df
data1 = {"English":[80,70,60], 
        "Literature":[70,70,85],
        "Maths":[80,90,50],
        "ID":[1004,1002,1003]}
df1 = pd.DataFrame(data1)
df1
pd.concat((df,df1),axis=1)
pd.merge(df,df1,on='ID')
pd.merge(df,df1,on='ID',how="outer")
df.set_index('ID', inplace=True)
df
df1.set_index('ID', inplace=True)
df1
df.join(df1, how='outer', lsuffix='df', rsuffix='df1')

七. Pandas 库其他常用函数或方法

df3 = pd.concat((df,df1),axis=0)
df3
df3.head()
df3.info()
df3.describe()
df3.sort_index(axis=0)
df3.sort_values(by=['Maths'])
df3.index.is_unique
df3['English'].is_unique
df3.index.value_counts()
df3.Music.value_counts()
df3['Maths'].rank()
df3['Maths'].rank(method = 'first')

总结

一、Pandas库

二、Pandas库数据结构——Series, DataFrame

1.Series——索引 index,值 values

2.DataFrame——索引index, columns,值 values

指定或修改索引方法

创建时:index, columns 指定索引,已经有索引可以按索引重新排序

创建后:

reindex方法,重新建立索引或指定索引排序

rename 修改索引

Series.index = []
DataFrame.columns = []

三、Series, DataFrame运算

1.基本运算

按照索引位置进行计算

DataFrame、Series “相加”时,按照DF的columns进行匹配

2.矩阵运算、通用函数

3.基本统计方法 axis指定操作轴

四、Series, DataFrame 索引与切片

1.Series 索引与切片 Index索引/数字索引/布尔值索引

2.DataFrame 索引与切片

Index索引 列:df['Maths']   行:df.loc[‘alpha’]

数字索引    df.iloc[]   特别的行可以直接用数字切片索引

布尔值索引

五、Series, DataFrame 删除操作

1.Series删除操作 pop/drop/del

2.DataFrame删除操作 pop/drop/del

六、Series, DataFrame 合并操作

1.Series合并操作

pd.concat() combine_first()

2.DataFrame合并操作

pd.concat() combine_first() 

pd.merge()  join()

七、Pandas库其他常用函数或方法

head()  info()  describe()  

sort_index()    sort_values()

is_unique   value_counts()

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

推荐阅读更多精彩内容