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