Python pandas

  1. pandas是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具。
  2. pandas 是第三方库。

【 1. pandas中的数据结构 】

1. Series 一维数组

  1. 类似于Python中的基本数据结构 list,区别是Series只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据。
  2. series 包含一个数组的数据(任何NumPy的数据类型)和一个与数组关联的数据标签,被叫做索引 。最简单的Series是由一个数组的数据构成:

① 默认创建

import pandas as pd
obj=pd.Series([4,7,-5,3])
print(obj)

运行结果:
在这里插入图片描述
Series的交互式显示的字符串表示形式是索引在左边,值在右边。因为我们没有给数据指定索引,一个包含整数0到N-1这里N是数据的长度)的默认索引被创建。

② values、index属性

import pandas as pd
obj=pd.Series([4,7,-5,3])
print(obj.values)
print(obj.index)

运行结果:
在这里插入图片描述

③ 自定义索引的Series

import pandas as pd
obj=pd.Series([4,7,-5,3],index=['d','b','a','c'])
print(obj)

运行结果:
在这里插入图片描述

④ 字典向series的传递

可以通过传递字典来从这些数据创建一个Series,只传递一个字典的时候,结果Series中的索引将是排序后的字典的键。

import pandas as pd
sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
obj=pd.Series(sdata)
print(obj)

运行结果:
在这里插入图片描述

⑤ 排序

对索引排序
import pandas as pd
obj = pd.Series(range(4), index=['d','a','b','c'])
print( obj.sort_index()  )

运行结果:
在这里插入图片描述

对值排序
import pandas as pd
obj=pd.Series([4,7,-5,3])
print( obj.sort_values()  )

运行结果:
在这里插入图片描述

⑥ 删除行

import pandas as pd
s =pd. Series([4.5,7.2,-5.3,3.6], index=['d','b','a','c'])
print( s ) 
print()
print( s.drop('c') ) #drop()返回的是一个新对象,原对象不会被改变。

运行结果:
在这里插入图片描述

⑦ 层次化索引

层次化索引

层次化索引(hierarchical indexing)是pandas的一项重要功能,它使我们能在一个轴上拥有多个(两个以上)索引级别。

import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )

运行结果:
在这里插入图片描述

切片索引
import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )
print()
print(s['b':'d'] )

运行结果:
在这里插入图片描述

内层选取
import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )
print()
print(s[:,2] )

运行结果:
在这里插入图片描述

数据重塑
import pandas as pd
s = pd.Series([4,7,-5,3,5,7,9,2,0,3], index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
print(s )
print()
print(s.unstack() )

运行结果:
在这里插入图片描述

2. DataFrame 二维的表格型数据

很多功能与R中的data.frame类似,可以将DataFrame理解为Series的容器。
DataFrame是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由Series组成的字典。

① DataFrame 的创建

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = DataFrame(dictionary)

运行结果:
在这里插入图片描述

② 修改行名

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(dictionary,index=['one','two','three','four','five'])
print(frame)

运行结果:
在这里插入图片描述

③ 添加修改

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(dictionary)
frame['year']=[0,0,0,0,0]
print(frame)

运行结果:
在这里插入图片描述

④ 添加Series类型

import pandas as pd
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
         'year':[2000,2001,2002,2001,2002],
         'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(dictionary)

value = pd.Series([1,3,1,4,6,8],index = [0,1,2,3,4,5])
frame['add1'] = value
print(frame)

运行结果:
在这里插入图片描述

⑤ 排序

对索引排序
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]},index=[3,1,4,2])
print( frame  )
print()
print( frame.sort_index() ) #默认对行的索引排序
#frame.sort_index(axis=1, ascending=True)
#axis可为0或1,为0时对每行的索引排序;为1时对列的索引排序。
#ascending可为True或False,为True时升序,为False时降序。

运行结果:
在这里插入图片描述

对值排序
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]},index=[3,1,4,2])
print( frame  )
print()
print( frame.sort_values(by='b') ) #DataFrame必须传一个by参数表示要排序的列

运行结果:
在这里插入图片描述

⑥ 删除

删除行
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]},index=[3,1,4,2])
print( frame  )
print()
print( frame.drop(1) )

运行结果:
在这里插入图片描述

删除列
import pandas as pd
frame = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1],"c":[9,8,7,0]},index=[3,1,4,2])
print( frame  )
print()
print( frame.drop(["a"],axis=1) )

运行结果:
在这里插入图片描述

⑦ 算术运算(+,-,*,/)

DataFrame中的算术运算是df中对应索引的元素的算术运算,如果没有共同的索引,则用NaN代替。

import pandas as pd
frame1 = pd. DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1],"c":[1,2,3,4] },index=[3,1,4,2])
frame2 = pd. DataFrame({'b':[1, 2,  3, 4], 'a':[1, 2, 3, 4] },index=[3,1,4,2])
print( frame1+frame2 ) #对相同列索引进行算术运算,若有单独索引列,则结果列元素均为NaN
print()
print(frame1.add(frame2,fill_value=1) ) #也可对填充默认值

运行结果:
在这里插入图片描述

⑧ 去重

判断是否重复

DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行。

import pandas as pd
frame =pd. DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]})
print( frame )
print()
print(frame.duplicated() )

运行结果:
在这里插入图片描述

去除重复行
import pandas as pd
frame =pd. DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]})
print( frame )
print()
print(frame.drop_duplicates() )

运行结果:
在这里插入图片描述

3. Panel 三维的数组

可以理解为DataFrame的容器。

【 2. 读取CSV格式数据 】

在使用机器学习工具包对数据进行修改、探索和分析之前,我们必须先讲外部数据导入。使用Pandas导入数据比Numpy要容易。

# CSV格式内容:
Water Year,Rain (mm) Oct-Sep,Outflow (m3/s) Oct-Sep,Rain (mm) Dec-Feb,Outflow (m3/s) Dec-Feb,Rain (mm) Jun-Aug,Outflow (m3/s) Jun-Aug
1980/81,1182,5408,292,7248,174,2212
1981/82,1098,5112,257,7316,242,1936
1982/83,1156,5701,330,8567,124,1802
1983/84,993,4265,391,8905,141,1078
1984/85,1182,5364,217,5813,343,4313
1985/86,1027,4991,304,7951,229,2595
1986/87,1151,5196,295,7593,267,2826
1987/88,1210,5572,343,8456,294,3154
1988/89,976,4330,309,6465,200,1440
1989/90,1130,4973,470,10520,209,1740
1990/91,1022,4418,305,7120,216,1923
1991/92,1151,4506,246,5493,280,2118
1992/93,1130,5246,308,8751,219,2551
1993/94,1162,5583,422,10109,193,1638
1994/95,1110,5370,484,11486,103,1231
1995/96,856,3479,245,5515,172,1439
1996/97,1047,4019,258,5770,256,2102
1997/98,1169,4953,341,7747,285,3206
1998/99,1268,5824,360,8771,225,2240
1999/00,1204,5665,417,10021,197,2166
2000/01,1239,6092,328,9347,236,2142
2001/02,1185,5402,380,8891,259,3187
2002/03,1021,4366,272,7093,176,1478
2003/04,1165,4275,348,7493,315,2959
2004/05,1095,4547,309,7183,217,1799
2005/06,1046,4059,206,4578,188,1474
2006/07,1387,6391,437,10926,357,5168
2007/08,1225,5497,386,9485,320,3505
2008/09,1139,4941,268,6690,323,3189
2009/10,1103,4738,255,6435,244,1958
2010/11,1053,4521,265,6593,267,2885
2011/12,1285,5500,339,7630,379,5261
2012/13,1090,5329,350,9615,187,1797

1. CSV的读取 pd.read_csv()

从csv文件里导入数据,并储存在DataFrame中,只需要调用read_csv然后将文件的路径传进去即可。

# Reading a csv into Pandas.
# 如果数据集中有中文的话,最好在里面加上 encoding = 'gbk' ,以避免乱码问题。后面的导出数据的时候也一样。
import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
#header 关键字告诉Pandas哪些是数据的列名。如果没有列名的话就将它设定为 None。

2. 查看前n行 pd.head(n)

import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
print(df.head(5) )

运行结果:
在这里插入图片描述

3. 查看后n行 pd.tail(n)

import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
df.tail(5)

运行结果:
在这里插入图片描述

4. 查看总行数 len()

import pandas as pd
df = pd.read_csv('uk_rain_2014.csv', header=0)
print(len(df))

运行结果:
在这里插入图片描述

5. 修改列名 df.columns

import pandas as pd
df = pd.read_csv('0.csv', header=0)
df.columns = ['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', 'rain_junaug', 'outflow_junaug']
print(df.head(5) )

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Promethus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值