到了pandas 了感觉学习的过程,特别想睡觉,不知道大家和我是不是有同样的感受,果然热天就特别想睡觉,不过话说回来,冬天仿佛也想睡觉。可能我就是天生睡觉的体质,不过想想还是放首歌来调节一下,就坚持坚持,今天一定要把pandas给拿下。毕竟在以后pandas,和matplotlib肯定用的特别多。不过想想数据分析可视化库还是挺多的,后面在拿出来整理整理。
一、库的导入
pandas 常用 pd作为简称
matplotlib 常用 plt作为简称
import panda as pd
import matplotlib as plt
二、Series 和 DataFrame
2.1 Series
与numpy相比,pandas库更擅长处理二维数据,pandas库主要有Series和DataFrame两种数据结构。Series类似于通过Numpy库创建的一维数组,不同的是Series 对象不仅包含数组,还包含一组索引,其创建方式如下:
import pandas as pd
s1 = pd.Series(['小猪','喜欢','你'])
print(s1 )
out :
0 小猪 1 喜欢 2 你 dtype: object
不过Series单独使用的比较少,我个人感觉,碰到的少,我们学习他主要是为了它提供的DataFrame数据结构,它是一个二维表的数据结构,可以看成一个excel表。
2.2 二维表格DataFrame的创建
1、通过列表创建DataFrame
import pandas as pd
a = pd.DataFrame([[1,2],[2,3],[3,4]])
print(a)
out:
0 1 0 1 2 1 2 3 2 3 4
可以看到,这是一个二维数组,如果把之前的numpy的数组拿出来对比,这个DataFrame创建的数组明显多了索引。需要注意的是他的索引序号是从0开始的。
当然对于DataFrame来说我们可以自定义行索引和列索引名。
实例如下:
a = pd.DataFrame([[1,2],[2,3],[3,4]],columns = ['data','score'],index = ['A','B','C'])
print(a)
out:
data score A 1 2 B 2 3 C 3 4
通过列表创建DataFrame还可以采用以下方式
#创建一个空的Dataframe对象
a = pd.DataFrame()
a['data'] = [1,3,5]
a['score'] = [2,4,6]
print(a)
out:
data score 0 1 2 1 3 4 2 5 6
2、通过字典创建DataFrame
import pandas as pd
b = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]},index = ['x','y','z'])
print(b)
a b x 1 2 y 3 4 z 5 6
我们知道在矩阵里面可以转置(列变行,行变列),其实在Dataframe里面也可以,其中有两个方法 一是用from_dict()函数将字典转换为DataFrame,并同时设置orient = index,其二了就是创建好DataFrame后再用 .T进行转置。这里用第二种写个实例,因为用的比较多。
import pandas as pd
b = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]},index = ['x','y','z'])
print(b)
print(b.T)
out:
a b x 1 2 y 3 4 z 5 6 x y z a 1 3 5 b 2 4 6
3、通过二维数组创建DataFrame
import numpy as np
import pandas as pd
d = pd.DataFrame(np.arange(12).reshape(3,4),index = [1,2,3],columns = ['a','b','c','d'])
print(d)
out:
a b c d 1 0 1 2 3 2 4 5 6 7 3 8 9 10 11
4,修改行索引和列索引的名称。
在进行数据预处理的时候,我们常常会遇见行和列名要修改的情况,在这里我们就经常用到rename()这个函数,用新索引名新建一个DataFrame赋给a来改变其内容,也可以设置inplace = True来实现真正的重命名。
实例如下:
import pandas as pd
a = pd.DataFrame([[1,2],[3,4]],columns = ['data','score'],index = ['a','b'])
print(a)
a = a.rename(index = {'a':'小z','b':'csdn'})
print(a)
out:
当然如果想要直接更改列名,和行名的话,我感觉这样要方便一点。
import pandas as pd
a = pd.DataFrame([[1,2],[3,4]],columns = ['data','score'],index = ['a','b'])
print(a)
a.columns = ['第一','第二']
print(a)
a.index = [0,1]
print(a)
out:
data score a 1 2 b 3 4 第一 第二 a 1 2 b 3 4 第一 第二 0 1 2 1 3 4
对于一个表来说,表的索引名我们得知道吧。
此时我们就可以用values来查看,不过我感觉用的不多,我用的不多而已,我直接把所有情况打印一遍,方便看一看区别。
import pandas as pd
a = pd.DataFrame([[1,2],[3,4]],columns = ['data','score'],index = ['a','b'])
print(a)
print(a.index)
print(a.index.values)
print(a.columns)
print(a.columns.values)
print(type(a.index.values))
out:
data score a 1 2 b 3 4 Index(['a', 'b'], dtype='object') ['a' 'b'] Index(['data', 'score'], dtype='object') ['data' 'score'] <class 'numpy.ndarray'>
可以直接看到他们的不同,不过要注意的是values出来的是一个array格式的一维数组
如果想要把行索引改为某列内容的话可以使用set_index()函数。如果想把索引变为数字可以使用reset_index()我直接打印多个情况看看
实例如下:
import pandas as pd
a = pd.DataFrame([[1,2],[3,4]],columns = ['data','score'],index = ['a','b'])
print(a)
a = a.set_index('data')
print(a)
a = a.reset_index()
print(a)
out:
data score a 1 2 b 3 4 score data 1 2 3 4 data score 0 1 2 1 3 4
三 总结
今天对DataFrame的表创建进行了整理,并且并且了解了rename 和set_index 和 reset_index()基本用法,过后再整理一下pandas 对excel 表格处理了操作,感觉这里面细节挺多的,容易弄错。后面在整理一下matplotlib的画图。