pandas基本操作——1

这里来介绍一下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

未完待续
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章