Pandas基础笔记

pandas是基于numpy构建的。

目的是使以numpy为中心的应用变得更加简单。
import pandas as pd
from pandas import Series, DataFrame

一、Series类型

1、这个类型类似于一维数组对象。它是由一组数据及一组与之相关的数据标签(索引)组成的。

obj = Series([1, 2, 3, 4, 5, 6])
print(obj)

print(obj.values)

print(obj.index)
obj[5]

2、自定义索引

obj = Series(['a', 'b', 'c', 'd', 'e'], index=[1, 2, 3, 4, 5])
print(obj)

obj[5]

3、类似于字典, 可通过字典转换

data = {'a': 10000, 'b': 20000, 'c':30000}
obj = Series(data)
obj

# 根据index索引转换
keys = ['a', 'c']
obj_1 = Series(data, index=keys)
print(obj_1)

4、缺失数据处理

data = {'a': 10000, 'b': 20000, 'c':30000}
obj = Series(data)
# 判断是否有数据缺失
pd.isnull(obj)

# 判断是否有数据缺失
pd.notnull(obj)

data = {'jack':None, 'tony':55, 'robbin': 50, 'yiming':None}
obj = Series(data)
obj
# None null ''

obj.name = 'NameAndAge'
obj

obj.index.name = '姓名'
obj

二、DataFrame类型

  • DataFrame 是一个表格型数据结构,它含有一组有序的列,每列可以是不同类型的值(数值、字符串、布尔值等都可以);
  • DataFrame 本身有行索引,也有列索引;
  • DataFrame 可以理解成是由Series组成的字典;

1、创建及基本筛选

DataFrame构造函数数据类型 -- 字典、numpy列表、Series类型、DataFrame类型

data = {
    '秦': ['嬴政', '胡亥', '子婴', None],
    '汉': ['刘邦', '刘彻', '刘询', '刘秀'],
    '唐': ['李渊', '李世民', '李治', '武则天'],
    '宋': ['赵匡胤', '赵匡义', '赵恒', '赵祯']
}
frame_data = DataFrame(data)
frame_data

frame_data['汉']

import numpy as np
dates = pd.date_range('20200506', periods=6)
dates

df = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=list('ABCD'))
df

# 转置
df.T

# 筛选 左闭右闭
df['20200506':'20200508']
# loc起始下标为1
df.loc['20200506':'20200508']
df.loc['20200506':'20200508', :]
df.loc[:, ['A', 'B']]
df.loc['20200506':'20200508', ['A', 'B']]
df.loc['20200506', ['A', 'B']]
df.loc['20200506', 'A']

2、头部、尾部筛选

df.head(2)
df.tail(3)

三、Pandas的重新索引

obj = Series([3.5, 2.6, -2.3], index=list('abc'))
obj

obj_1 = obj.reindex(list('abcde'))
obj_1

obj_2 = obj.reindex(list('abcde'), fill_value=0)
obj_2

obj = Series([3.5, 2.6, -2.3], index=[0,2,4])
obj

# 向前填充
obj.reindex(range(6), method='ffill')

# 向后填充
obj.reindex(range(6), method='bfill')

四、算数运算和数据对齐

  • 加法:add
  • 减法:sub
  • 乘法:mul
  • 除法:div
  • 取余:mod
d1 = Series([1.3, 1.5, 2.6, -3.5], index=list('abcd'))
d1

d2 = Series([-1.3, -1.5, -2.6, 3.9, 9.8], index=list('abcde'))
d2

# 加法
d1 + d2

df1 = DataFrame(np.arange(9).reshape((3, 3)), columns=list('abc'), index=list('123'))
df1

df2 = DataFrame(np.arange(12).reshape((4, 3)), columns=list('cde'), index=list('1234'))
df2

# 在行和列上都发生操作,没有重叠的部分都为空
df1 + df2

# 相加时,其中一个为空时默认以‘fill_value’相加
# 两者都为空时,结果为空
df1.add(df2, fill_value=0)

五、DataFrame 和 Series 之间的运算

frame = DataFrame(np.arange(12).reshape((4, 3)), columns=list('bde'), index=[1, 2, 3, 4])
frame

series = frame.loc[1]
series

# 广播相减
frame - series
# 广播相加
frame + series

series_1 = Series(range(3), index=list('bef'))
series_1

# 只有重叠列进行操作,其余为空
frame + series_1

六、排序

1、Series

obj = Series(range(4), index=['d', 'e', 'a', 'b'])
obj

obj.sort_index()

obj.sort_values()

2、DataFrame

frame = DataFrame(np.arange(8).reshape(2,4), index=['two', 'one'], columns=['c', 'd', 'a', 'b'])
frame

frame.sort_index()
frame.sort_index(axis=1)

frame = DataFrame({'b': [4, 7, 1, -1], 'a': [0, 4, 2, 0]})
frame

frame.sort_values(by='b')

七、层次化索引

它能够让你在一个轴上拥有多个索引级别,另外一种说法是它能够使你可以以低纬度形式处理高纬度数据(降维)
1、Series

data = Series(np.random.randn(10), index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'],[1, 2, 3, 1, 2, 3, 1, 2, 3, 3]])
data

data.index

data['b']
data['b':'c']
data[:,2]
data['b', 1]

2、DataFrame

frame_data = DataFrame(np.arange(12).reshape(4,3), 
                       index=[['a', 'a', 'b', 'b'], [1,2,1,2]],
                      columns=[['Black', 'Yellow', 'Blue'], ['Green', 'Red', 'Green']])
frame_data

frame_data.index.names = ['key1', 'key2']
frame_data

frame_data.columns.names = ['color1', 'color2']
frame_data

frame_data.index

frame_data['Black']
frame_data.loc['a']
frame_data.loc['a', ['Black']]

frame_data.sum(level='key2')
frame_data.sum(level='color2', axis=1)

八、pandas文本格式数据处理

查看数据:cat data1.csv

# 读文件
pd.read_csv('data1.csv')
pd.read_table('data1.csv', sep=',')
pd.read_csv('data1.csv', header=None)
pd.read_csv('data1.csv',index_col='追问')
pd.read_csv('data1.csv', index_col=['追问','问题'])
pd.read_csv('data2.csv', skiprows=[2])  # 行号是从1开始的
pd.read_csv('data1.csv', nrows=5)


chunker = pd.read_csv('data1.csv', chunksize=10)
chunker
sd = Series([])
for c in chunker:
    sd = sd.add(c['问题'].value_counts(), fill_value=0)
    
sd

# 写文件
data = pd.read_csv('data1.csv', nrows=5)
data.to_csv('test1.data', sep='|')

# excel
pd.read_excel('data3.xlsx')

# 图表显示
excel = pd.read_excel('data3.xlsx', sheet_name='Sheet2')
pl = excel.plot(kind='scatter', x='age', y='p').get_figure()
pl.savefig('1.jpg')

# 图表显示
dates = pd.date_range('20200501', periods=6)
df = DataFrame(np.random.rand(6,4), index=dates, columns=list('abcd'))
df
pl = df.plot(kind='scatter', x='a', y='b').get_figure()
pl.savefig('2.jpg')


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