这里来介绍一下pandas。由于知识点比较多,决定分几篇介绍。
import numpy as np
import pandas as pd
#pandas是基于numpy的一个开源python库。
#我认为相当于python版excel
#series是一种一维数组,是基于ndarray设计的,但是他多了一个功能就是自定义标签。
#说的明白点就是索引。因此可以通过这个索引来访问数组中的数据
#创建语法如下:
#my_series=pd.Series(data,index)
countries=['USA','France','China','England']
my_data=[100,200,300,400]
my_series=pd.Series(my_data,countries)
my_series
USA 100
France 200
China 300
England 400
dtype: int64
#注意,index是可以省略的,这时系统会自动已默认index进行索引,这时的series就类似数组了。
pd.Series(my_data)
0 100
1 200
2 300
3 400
dtype: int64
#从numpy数组对象来创建Series:
np_arr=np.array(my_data)
pd.Series(np_arr)
0 100
1 200
2 300
3 400
dtype: int64
#从字典来创建Series似乎更方便
#pandas会自动把字典的键值设置成Series的index,并将对应的values放在和索引对应的data里
#这也证明了,pandas的Series可以存放各种不同类型的对象。
my_dict={'a':50,'b':60,'c':70,'d':80}
pd.Series(my_dict)
a 50
b 60
c 70
d 80
dtype: int64
#从Series中获取数据,和字典操作基本一样。
my_dict['b']
60
#对Series进行算术运算操作
#基于index进行,可以用加减乘除这样的运算符对两个Series进行运算。
#结果均以浮点数的形式存储,以免丢失精度。
series1=pd.Series([1,2,3,4],['shandong','wuhan','changsha','hangzhou'])
series2=pd.Series([4,7,9,2],['beijing','tianjin','shijiazhuang','hangzhou'])
#如果pandas在两个Series里找不到相同的index,对应位置就返回空值NaN。
series1-series2
beijing NaN
changsha NaN
hangzhou 2.0
shandong NaN
shijiazhuang NaN
tianjin NaN
wuhan NaN
dtype: float64
series1+series2
beijing NaN
changsha NaN
hangzhou 6.0
shandong NaN
shijiazhuang NaN
tianjin NaN
wuhan NaN
dtype: float64
#DataFrames
#Pandas的DataFrame是一种2维数据结构,数据以表格的形式存储,分为若干行和列。
#下面用多个Series来构建一个DataFrame。道理很简单,多个一维数组组合起来就变成了二维数组
df={'Name':pd.Series(['齐','楚','秦','燕','赵','魏','韩'],index=['东','南','西','东北','北','中北','中']),
'Age':pd.Series(['32','42','32','45','14','22','34'],index=['东','南','西','东北','北','中北','中']),
'size':pd.Series(['2332','4212','3242','4455','1324','2232','3784'],['东','南','西','东北','北','中北','中'])
}
pd.DataFrame(df)
Name Age size
东 齐 32 2332
南 楚 42 4212
西 秦 32 3242
东北 燕 45 4455
北 赵 14 1324
中北 魏 22 2232
中 韩 34 3784
#用一个字典来创建DataFrame
data={'name':['dwd','dwds','fgerd'],
'age':[32,43,1231],
'year':[2012,2123,2312]
}
my_df=pd.DataFrame(data,index=['first','second','last'])
my_df
name age year
first dwd 32 2012
second dwds 43 2123
last fgerd 1231 2312
my_df[['age','year']]
age year
first 32 2012
second 43 2123
last 1231 2312
#给DataFrame增加数据列
#1.可以从头开始定义一个pd.Series,放到表中.
#2.可以用现有的列来产生需要的新列。
#1
my_df['size']=pd.Series([323,123,435],['first','second','last'])
my_df
name age year size
first dwd 32 2012 323
second dwds 43 2123 123
last fgerd 1231 2312 435
#2从其他列中创造新列
my_df['pip']=my_df['age']+my_df['size']
my_df=pd.DataFrame(my_df)
my_df
name age year size pip
first dwd 32 2012 323 355
second dwds 43 2123 123 166
last fgerd 1231 2312 435 1666
#从DataFrame删除行/列。用drop()函数。
#使用时需要指定具体的删除方向,axis=0对应的是行row,axis=1对应的是列column。
my_df.drop('pip',axis=1)
name age year size
first dwd 32 2012 323
second dwds 43 2123 123
last fgerd 1231 2312 435
my_df.drop('first',axis=0)
name age year size pip
second dwds 43 2123 123 166
last fgerd 1231 2312 435 1666
未完待续