Pandas模块

发布时间 2023-11-10 15:33:19作者: chenelm

1 Pandas基础

1.1 数据结构

1.1.1 Series 一维

#创建
#1.列表创建
>>> pd.Series(['a','b','c','d'])
0    a
1    b
2    c
3    d
dtype: object
#2.设置索引index
>>> pd.Series(['a','b','c','d'],index=['z1','z2','z3','z4'])
z1    a
z2    b
z3    c
z4    d
dtype: object
#3.字典创建
>>> pd.Series({'z1':'a','z2':'b','z3':'c','z4':'d'})
z1    a
z2    b
z3    c
z4    d
dtype: object
#索引
>>> se
z1    a
z2    b
z3    c
z4    d
dtype: object
#1.位置索引
dtype: object
>>> se[0]
'a'
#2.标签索引
>>> se['z1']
'a'
#3.切片索引
>>> se[1:4]
z2    b
z3    c
z4    d
dtype: object
#属性index和values
>>> se.index
Index(['z1', 'z2', 'z3', 'z4'], dtype='object')
>>> se.values
array(['a', 'b', 'c', 'd'], dtype=object)

1.1.2 DataFrame 二维

#创建对象
#1.列表创建
>>> pd.DataFrame([['John',60],['Amy',99],['Jack',80]])
      0   1
0  John  60
1   Amy  99
2  Jack  80
#2.列标签columns,行标签index
>>> pd.DataFrame([['John',60],['Amy',99],['Jack',80]],columns=['name','score'],index=['s01','s02','s03'])
     name  score
s01  John     60
s02   Amy     99
s03  Jack     80
#dataframe属性
>>> df.values
array([['John', 60],
       ['Amy', 99],
       ['Jack', 80]], dtype=object)
>>> df.dtypes
name     object
score     int64
dtype: object
>>> df.index
Index(['s01', 's02', 's03'], dtype='object')
>>> df.columns
Index(['name', 'score'], dtype='object')
>>> df.T
        s01  s02   s03
name   John  Amy  Jack
score    60   99    80
Index(['name', 'score'], dtype='object')
>>> df.head() # 查看前n条,默认5条
     name  score
s01  John     60
s02   Amy     99
s03  Jack     80
>>> df.head(2)
     name  score
s01  John     60
s02   Amy     99
>>> df.tail() # 查看后n条,默认5条
     name  score
s01  John     60
s02   Amy     99
s03  Jack     80
>>> df.tail(2)
     name  score
s02   Amy     99
s03  Jack     80
>>> df.shape
(3, 2)
>>> df.info() #查看索引,数据类型和内存信息
Index: 3 entries, s01 to s03
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   name    3 non-null      object
 1   score   3 non-null      int64
dtypes: int64(1), object(1)
memory usage: 180.0+ bytes

1.2 读取数据

#读取Excel
df=pd.read_excel('name.xlsx',sheet_name='表名',
                  header=表头所在行数,数据本身不包含列名则header=None,
                  index_col=以第n列的数据作为索引,
                  nrows=读取前n行数据,
                  usecols=选中的列,此处的列表表示的不是范围,
                  skiprows=省略指定行数的数据,从第一行开始
                  )
>>> df=pd.read_excel('数据2.xlsx',sheet_name='Sheet1')
>>> df
           中文名                 外文名 性别    国籍     身高     体重    项目   省份
0    阿尔法拉克·阿米奴     Al-Farouq Aminu  男  尼日利亚  206厘米   98kg    篮球  NaN 
1      安德森•瓦莱乔    Anderson Varejao  男    巴西  211厘米  118kg    篮球  NaN     
2          博涅娃    BONEVA Antoaneta  女  保加利亚    NaN    NaN    射击  NaN        
3       阿隆·贝内斯         Aron Baynes  男  澳大利亚  208厘米  118kg    篮球  NaN    
4      埃米莉·西博姆  Emily Jane Seebohm  女  澳大利亚  1.80米   64kg    游泳  NaN    
..         ...                 ... ..   ...    ...    ...   ...  ...
229     罗贝塔·文奇       Roberta Vinci  女   意大利    NaN    NaN    网球  NaN       
230        梁美玉         Liang meiyu  女    中国  166cm   65kg   曲棍球   广东       
231        罗晓玲        Luo Xiaoling  女    中国    NaN    NaN   自行车   甘肃       
232        李雪芮          Li Xue Rui  女    中国  173厘米   65kg   羽毛球   重庆     
233       拉菲尼亚              Rafael  男    巴西  178cm   75kg  男子足球  NaN       

[234 rows x 8 columns]

>>> df=pd.read_excel('数据2.xlsx',sheet_name='Sheet1',index_col=1,usecols=[0,1,2,5],nrows=6)
>>> df
                          中文名 性别     体重
外文名
Al-Farouq Aminu     阿尔法拉克·阿米奴  男   98kg
Anderson Varejao      安德森•瓦莱乔  男  118kg
BONEVA Antoaneta          博涅娃  女    NaN
Aron Baynes            阿隆·贝内斯  男  118kg
Emily Jane Seebohm    埃米莉·西博姆  女   64kg
Bahar Caglar         巴哈尔·卡格拉尔  女   76kg
#读取csv 同excel

1.3 选择数据

#loc 以列名和行名作为参数
>>> df
          中文名                 外文名 性别     体重
p1  阿尔法拉克·阿米奴     Al-Farouq Aminu  男   98kg
p2    安德森•瓦莱乔    Anderson Varejao  男  118kg
p3        博涅娃    BONEVA Antoaneta  女    NaN
p4     阿隆·贝内斯         Aron Baynes  男  118kg
p5    埃米莉·西博姆  Emily Jane Seebohm  女   64kg
p6   巴哈尔·卡格拉尔        Bahar Caglar  女   76kg
>>> df.loc['p3']
中文名                 博涅娃
外文名    BONEVA Antoaneta
性别                    女
体重                  NaN
Name: p3, dtype: object
>>> df.loc['p3']['中文名']
'博涅娃'
>>> df.loc[['p2','p3']]
        中文名               外文名 性别     体重
p2  安德森•瓦莱乔  Anderson Varejao  男  118kg
p3      博涅娃  BONEVA Antoaneta  女    NaN
>>> df.loc[:,['中文名','性别']]
          中文名 性别
p1  阿尔法拉克·阿米奴  男
p2    安德森•瓦莱乔  男
p3        博涅娃  女
p4     阿隆·贝内斯  男
p5    埃米莉·西博姆  女
p6   巴哈尔·卡格拉尔  女
>>> df.loc[['p2','p3'],['中文名','性别']]
        中文名 性别
p2  安德森•瓦莱乔  男
p3      博涅娃  女
#iloc 以行和列位置索引作为参数
>>> df.iloc[2]
中文名                 博涅娃
外文名    BONEVA Antoaneta
性别                    女
体重                  NaN
Name: p3, dtype: object
>>> df.iloc[2][1]
'BONEVA Antoaneta'

1.4 修改行标签和列标签

#直接修改df.index属性
>>> df.index
Index(['p1', 'p2', 'p3', 'p4', 'p5', 'p6'], dtype='object')
>>> df.index=list('123456')
>>> df.index
Index(['1', '2', '3', '4', '5', '6'], dtype='object')
#用df.rename()函数
>>> df.rename(columns={'外文名':'英文名'},index={'1':'a1','2':'a2','3':'a3'},in
>>> df
          中文名                 英文名 性别     体重
a1   阿尔法拉克·阿米奴     Al-Farouq Aminu  男   98kg
a2    安德森•瓦莱乔    Anderson Varejao  男  118kg
a3        博涅娃    BONEVA Antoaneta  女    NaN
4     阿隆·贝内斯         Aron Baynes  男  118kg
5     埃米莉·西博姆  Emily Jane Seebohm  女   64kg
6    巴哈尔·卡格拉尔        Bahar Caglar  女   76kg

2 Pandas数据操作

2.1 数据的运算

2.2 数据格式化

2.3 数据表的处理

2.4 数据移位