pandas 基础学习

import numpy as np
import pandas as pd

s = pd.Series([1, 3, 6, np.nan, 10, 23])
print(s)
dates = pd.date_range(‘20180101‘, periods=4)
print(dates)
df = pd.DataFrame(np.random.randn(4, 5), index=dates, columns=[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘])
print(df)
df = pd.DataFrame(np.random.randn(4, 5))
print(df)

pandas.Series(data=Noneindex=Nonedtype=Nonename=Nonecopy=Falsefastpath=False)  是一维数组

pandas.DataFrame([data, index, columns, dtype, copy])具有标记轴(行和列)的二维大小可变,可能异构的表格数据结构。 其中index代表行,colums是列

DataFrame:

DataFrame可以从字典形式或者pandas中组建

values属性

describe()方法

transpose()方法和T属性是转置

sort_index()方法,对index进行排序 其中 axis为0是对行排序,ascending是倒叙还是顺序

sort_values()方法,对值进行排序 其中 axis为0是对列排序,ascending是倒叙还是顺序

选择数据:

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index =dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])
print(df.A,df[‘A‘])
print(df[0:3])
print(df[‘20180101‘:‘20180103‘])

这四种选择方法都是可以的

select by label 即 loc

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index =dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

print(df.loc[‘20180103‘])
print(df.loc[‘20180101‘,[‘A‘,‘B‘]])
print(df.loc[‘20180101‘:‘20180102‘,[‘A‘,‘B‘]])

select by position: iloc

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

print(df.iloc[[1, 2], [1, 2]])
print(df.iloc[1:3,4:5])

mixed selection:ix

已经被移出了

Boolean indexing

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

print(df[df.A>8])

首先我们看df.A>8是什么

设置值:

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

df.iloc[2,2] = None        #位置
df.loc[‘20180101‘,‘B‘] = -1  #标签
df.B[df.A>4] = -2    #逻辑
df[‘F‘] = np.nan
df[‘G‘] = pd.Series([1,2,3,4,5,6],index=df.index) #添加上一个Series

丢去损失数据

dropna()

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

df.iloc[0, 1] = np.nan
df.iloc[1, 2] = np.nan
print(df)

print(df.dropna(axis=0, how=‘any‘))

其中的how是方法,any代表只要有nan就丢弃,all代表行/列 全部都是nan才丢掉

fillna()

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

df.iloc[0, 1] = np.nan
df.iloc[1, 2] = np.nan
print(df)

print(df.fillna(value=0))

isnull() 是否为Nan,返回一个Boolean向量

可以配合np.any配合使用,检查是否有Nan

import numpy as np
import pandas as pd

dates = pd.date_range(‘20180101‘, periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

df.iloc[0, 1] = np.nan
df.iloc[1, 2] = np.nan
print(df)

print(np.any(df.isnull()) == True)

打印出True

储存和读取:

import numpy as np
import pandas as pd

data = pd.read_csv(‘1.csv‘)
data.to_pickle(‘1.pickel‘)

合并concat:

ignore_index

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones([2,3])*0, columns=[‘a‘,‘b‘,‘c‘])
df2 = pd.DataFrame(np.ones([2,3])*1, columns=[‘a‘,‘b‘,‘c‘])
df3 = pd.DataFrame(np.ones([2,3])*2, columns=[‘a‘,‘b‘,‘c‘])
print(df1)
print(df2)
print(df3)
res = pd.concat([df1,df2,df3])
print(res)
res = pd.concat([df1,df2,df3], ignore_index=True)
print(res)

第一次是没有设置ignore_index 它的排序是010101。第二次就是0到5了

join

参数join模式默认的是outer如下:

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones([3,4])*0, columns=[‘a‘,‘b‘,‘c‘,‘d‘])
df2 = pd.DataFrame(np.ones([3,4])*1, columns=[‘b‘,‘c‘,‘d‘,‘e‘])

print(df1)
print(df2)

res = pd.concat([df1,df2])   #默认join=‘outer‘
print(res)

抛出了一个warning,在没有‘a‘标签的情况下填充NaN

当把join属性转化为inner

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones([3,4])*0, columns=[‘a‘,‘b‘,‘c‘,‘d‘])
df2 = pd.DataFrame(np.ones([3,4])*1, columns=[‘b‘,‘c‘,‘d‘,‘e‘])

print(df1)
print(df2)

res = pd.concat([df1,df2],join=‘inner‘)
print(res)

这时候pandas在合并时做裁剪

join_axis()

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones([3,4])*0, columns=[‘a‘,‘b‘,‘c‘,‘d‘],index=[1,2,3])
df2 = pd.DataFrame(np.ones([3,4])*1, columns=[‘b‘,‘c‘,‘d‘,‘e‘],index=[2,3,4])

print(df1)
print(df2)

res = pd.concat([df1,df2], axis=1)
print(res)

res = pd.concat([df1, df2],axis=1, join_axes=[df1.index])
print(res)

join_axis 决定了合并时依照哪个数据的index或者coloums,在没有设置这个参数的情况下他把 1 2 3 4都写进,没有的用Nan填充,当我们把join_axis设置成df1的index,只保留了tf的 1 2 3

append() 按照行增加数据

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones([3,4])*0, columns=[‘a‘,‘b‘,‘c‘,‘d‘])
df2 = pd.DataFrame(np.ones([3,4])*1, columns=[‘a‘,‘b‘,‘c‘,‘d‘])

res = df1.append(df2,ignore_index=True)
print(res)

它也有ignore_index参数

并入一个Series

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones([3,4])*0, columns=[‘a‘,‘b‘,‘c‘,‘d‘])
df2 = pd.DataFrame(np.ones([3,4])*1, columns=[‘a‘,‘b‘,‘c‘,‘d‘])

s1 = pd.Series([1,2,3,4], index=[‘a‘,‘b‘,‘c‘,‘d‘])
res = df1.append(s1, ignore_index=True)
print(res)

 

  

原文地址:https://www.cnblogs.com/francischeng/p/9740689.html

时间: 2024-11-05 23:33:49

pandas 基础学习的相关文章

Pandas基础学习与Spark Python初探

摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域.在Spark中,python程序可以方便修改,省去java和scala等的打包环节,如果需要导出文件,可以将数据转为pandas再保存到csv,excel等. 1.Pandas是什么? pandas是一个强大的Python数据分析工具包,是一个提供快速,灵活和表达性数据结构的python包,旨在使

pandas基础学习一

生成对象 用值列表生成 Series 时,Pandas 默认自动生成整数索引: In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8]) In [4]: s Out[4]: 0 1.0 1 3.0 2 5.0 3 NaN 4 6.0 5 8.0 dtype: float64 用含日期时间索引与标签的 NumPy 数组生成 DataFrame: In [5]: dates = pd.date_range('20130101', periods=6) In [6]

numpy+pandas 基础学习

#-*- coding:utf-8 -*- import numpy as np; data1=[1,2,3,4,5] array1=np.array(data1) #创建数组/矩阵 # 使用numpy中的array函数 data2=[[1,3,4],[2,5,6]] array2=np.array(data2) #查看变量的数据类型:dtype array2.dtype #转换数据格式 astype array2_str=array2.astype('str') array2_str.dtyp

pandas基础学习(1)

1.介绍 pandas是常用的数据分析库,用于处理表格型或者异质性数据,主要有两种数据类型:Series和DataFrame. 本文采用的是Jupyter notebook , 导入库语句:import pandas as pd Series是一维数据型对象,粗略的理解,有一点似于C语言中的数组值values+可重新命名的index,即索引,可以认为是一个长度固定的字典.是DataFrame的组成部分. DataFrame是二维结构,是一张表,有两条轴,axis=0(index行)与 axis=

python学习笔记(四):pandas基础

pandas 基础 serise import pandas as pd from pandas import Series, DataFrame obj = Series([4, -7, 5, 3]) obj 0 4 1 -7 2 5 3 3 dtype: int64 obj.values array([ 4, -7, 5, 3], dtype=int64) obj.index RangeIndex(start=0, stop=4, step=1) obj[[1,3]] # 跳着选取数据 1

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Linux新手入门书籍推荐 鸟哥的linux私房菜-基础学习篇

这本书写的不错.赞~\(≧▽≦)/~ 2017-02-24 下午,我开始在Linux下写第一个.c程序,在终端打印hello world.gcc 源代码文件之后,输出可执行文件,但是 当我输入文件名执行它的时候,却提示我 无法找到命令.于是我找百度,查资料,花了半个小时,终于找到解决方法了, 输入"./filename"即可.... 2017-02-25 我看<基础学习篇>这本书,在P158页下面的例题讲解中找到了昨天下午异常的解析.我就很是感慨,心想:要是早看这本书,半个