本文是视频Python数据分析三剑客 数学建模基础 numpy、pandas、matplotlib的学习笔记。
————————————————————————————————————————————————————
**注意:本文代码依托Jupyter Notebook实现,代码输入输出格式以及内容仅供参考!!!**
pandas是一种基于Numpy的工具
pandas包的引入:
import pandas as pd
import numpy as np
series : 一维数组,可保存不同种数据类型
DataFrame : 二维的表格型数据结构,可看作series的容器
series类型
初始化:
s=pd.Series([1,3,5,np.nan,6,8])
s
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
s=pd.Series([1,3,5,np.nan,6,8],index=['a','b','c','d','e','f'])
s
a 1.0
b 3.0
c 5.0
d NaN
e 6.0
f 8.0
dtype: float64
索引——数据行标签
s.index
Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
值
s.values
array([ 1., 3., 5., nan, 6., 8.])
s[2]
5.0
切片
s[2:5]
c 5.0
d NaN
e 6.0
dtype: float64
s[::2]
a 1.0
c 5.0
e 6.0
dtype: float64
索引赋值
s.index.name="索引"
s
索引
a 1.0
b 3.0
c 5.0
d NaN
e 6.0
f 8.0
dtype: float64
s.index=list([1,2,3,4,5,6])
s
1 1.0
2 3.0
3 5.0
4 NaN
5 6.0
6 8.0
dtype: float64
s.index=list('abcedf')
s['a':'c']
a 1.0
b 3.0
c 5.0
dtype: float64
DataFrame类型
构造时间序列:
date=pd.date_range('20210128',periods=6)
print(date)
DatetimeIndex(['2021-01-28', '2021-01-29', '2021-01-30', '2021-01-31',
'2021-02-01', '2021-02-02'],
dtype='datetime64[ns]', freq='D')
构造DataFrame结构:
df=pd.DataFrame(np.random.randn(6,4))
df
0 1 2 3
0 0.627261 -0.776131 0.495415 -0.029275
1 0.671373 0.278222 -0.603066 -0.866833
2 -0.991224 -1.028955 1.921942 -0.402303
3 -0.885962 1.168009 -1.104759 -1.478723
4 0.288599 -0.085186 -0.860440 -1.903465
5 -0.826311 0.557032 -0.599272 0.293506
df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list('ABCD'))
df
A B C D
2021-01-28 0.431498 0.805697 -0.134194 0.879668
2021-01-29 0.140056 0.428193 -0.628229 0.956076
2021-01-30 -0.953365 -0.142609 -0.476448 1.458110
2021-01-31 0.316369 -1.861203 0.122656 0.396402
2021-02-01 -0.101479 -2.128830 -0.384932 0.029569
2021-02-02 0.910300 -1.192472 -0.479991 -0.090318
默认情况下,不指定index参数和columns参数,他们的值将用从0开始的数字替代
使用字典传入数据:
case是列名称,每列格式要相同,列与列之前不一定相同
key值为数据,每个key代表一列,其value可以是各种可以转换为Series的对象
df2=pd.DataFrame({"a":1.2,"b":pd.Timestamp('20200202'),"c":pd.Series(1,index=list(range(4)),dtype=float),"d":np.array([3]*4,dtype=int),"e":pd.Categorical(["test","train","test","train"]),"f":'abc'})
df2
a b c d e f
0 1.2 2020-02-02 1.0 3 test abc
1 1.2 2020-02-02 1.0 3 train abc
2 1.2 2020-02-02 1.0 3 test abc
3 1.2 2020-02-02 1.0 3 train abc
查看数据
头尾数据
head和tail方法可以分别查看最前面几行和最后面几行的数据(默认为5):
df.head()
A B C D
2021-01-28 0.431498 0.805697 -0.134194 0.879668
2021-01-29 0.140056 0.428193 -0.628229 0.956076
2021-01-30 -0.953365 -0.142609 -0.476448 1.458110
2021-01-31 0.316369 -1.861203 0.122656 0.396402
2021-02-01 -0.101479 -2.128830 -0.384932 0.029569
最后三行:
df.tail(3)
A B C D
2021-01-31 0.316369 -1.861203 0.122656 0.396402
2021-02-01 -0.101479 -2.128830 -0.384932 0.029569
2021-02-02 0.910300 -1.192472 -0.479991 -0.090318
查看类型:
df2.dtypes
a float64
b datetime64[ns]
c float64
d int32
e category
f object
dtype: object
查看下标:
df.index
DatetimeIndex(['2021-01-28', '2021-01-29', '2021-01-30', '2021-01-31',
'2021-02-01', '2021-02-02'],
dtype='datetime64[ns]', freq='D')
查看列标:
df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
查看值:
df.values
array([[ 0.43149789, 0.80569688, -0.13419407, 0.87966773],
[ 0.14005632, 0.42819346, -0.62822854, 0.95607551],
[-0.95336494, -0.14260946, -0.47644814, 1.45810952],
[ 0.31636926, -1.86120334, 0.12265634, 0.3964021 ],
[-0.1014788 , -2.12883016, -0.38493237, 0.02956909],
[ 0.91029952, -1.19247174, -0.47999106, -0.09031817]])
pandas读取数据及数据操作
数据读入:
文件名前r
的作用:避免\
被识别为转义字符
df=pd.read_excel(r'C:\Users\丁丁sama\Desktop\数据\豆瓣电影数据.xlsx')
注意:
若文件名与工作文件属于同一文件夹路径下,可不写文件路径
若数据读入产生 Unnamed:0 列:
加入参数index_col=0即可解决,例:
df=pd.read_excel('香港酒店数据.xlsx',index_col=0)
参考:解决问题:pandas读取或者写入csv文件会多出现一列----Unnamed:0
行操作
df.iloc[1]
名字 控方证人
投票人数 42995
类型 剧情/悬疑/犯罪
产地 美国
上映时间 1957-12-17 00:00:00
时长 116
年代 1957
评分 9.5
首映地点 美国
Name: 1, dtype: object
df.iloc[0:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
也可以使用loc,注意是左闭右闭
df.loc[0:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
5 5 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆
添加一行:
注意:添加时候中英文字符的转换,误用中文字符很容易报错,建议在IDE中写好再粘贴至notebook
dit={'名字':'工作细胞','投票人数':123456,'类型':'动画','产地':'日本','上映时间':'2018-04-10 00:00:00','时长':125,'年代':2018,'评分':np.nan,'首映地点':'日本'}
s=pd.Series(dit)
s.name=38738
s
写入空值时使用np.nan
函数
名字 工作细胞
投票人数 123456
类型 动画
产地 日本
上映时间 2018-04-10 00:00:00
时长 125
年代 2018
评分 NaN
首映地点 日本
Name: 38738, dtype: object
df=df.append(s)
df.tail()
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38733 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58 1983 8.6 美国
38735 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.1 美国
38736 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.0 美国
38737 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.6 美国
38738 工作细胞 123456.0 动画 日本 2018-04-10 00:00:00 125 2018 NaN 日本
删除一行:
df=df.drop([38738])
df.tail()
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38732 极乐森林 45.0 纪录片 美国 1986-09-14 00:00:00 90 1986 8.1 美国
38733 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58 1983 8.6 美国
38735 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.1 美国
38736 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.0 美国
38737 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.6 美国
列操作
df.columns
Index(['Unnamed: 0', '名字', '投票人数', '类型', '产地', '上映时间', '时长', '年代', '评分',
'首映地点'],
dtype='object')
df['名字'][:5]
0 肖申克的救赎
1 控方证人
2 美丽人生
3 阿甘正传
4 霸王别姬
Name: 名字, dtype: object
df[['名字','类型']][:5]
名字 类型
0 肖申克的救赎 剧情/犯罪
1 控方证人 剧情/悬疑/犯罪
2 美丽人生 剧情/喜剧/爱情
3 阿甘正传 剧情/爱情
4 霸王别姬 剧情/爱情/同性
增加一列:
df['序号']=range(1,len(df)+1)
df[:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点 序号
0 0.0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节 1
1 1.0 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国 2
2 2.0 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利 3
3 3.0 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映 4
4 4.0 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港 5
删除一列
df=df.drop("序号",axis=1)
df[:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0.0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1.0 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 2.0 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 3.0 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 4.0 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
通过标签选择数据
df.loc[[index],[column]],通过标签选择数据
df.loc[1,'名字']
'控方证人'
df.loc[[1,3,5,7,9],['名字','评分']]
名字 评分
1 控方证人 9.5
3 阿甘正传 9.4
5 泰坦尼克号 9.4
7 新世纪福音战士剧场版:Air/真心为你 新世紀エヴァンゲリオン劇場版 Ai 9.4
9 这个杀手不太冷 9.4
条件选择
选取产地为美国的所有电影
df[df['产地']=='美国'][:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0.0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1.0 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
3 3.0 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
5 5.0 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆
6 6.0 辛德勒的名单 306904.0 剧情/历史/战争 美国 1993-11-30 00:00:00 195 1993 9.4 华盛顿首映
选取产地为美国,且评分大于9分的所有电影
df[(df.产地=='美国')&(df.评分>9)][:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0.0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1.0 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
3 3.0 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
5 5.0 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆
6 6.0 辛德勒的名单 306904.0 剧情/历史/战争 美国 1993-11-30 00:00:00 195 1993 9.4 华盛顿首映
选取产地为美国或者中国大陆,且评分大于9分的所有电影
df[((df.产地=='美国')|(df.产地=='中国大陆'))&(df.评分>9)][:5]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0.0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1.0 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
3 3.0 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 4.0 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
5 5.0 泰坦尼克号 157074.0 剧情/爱情/灾难 美国 2012-04-10 00:00:00 194 2012 9.4 中国大陆
缺失值和异常值处理
缺失值处理方法:
判断缺失值
方法 | 说明 |
---|---|
dropna | 根据标签中缺失值进行过滤,删除缺失值 |
fillna | 对缺失值进行填充 |
isnull | 返回布尔值对象,判断哪些是缺失值 |
notnull | isnull的否定式 |
df.isnull()
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 False False False False False False False False False False
1 False False False False False False False False False False
2 False False False False False False False False False False
3 False False False False False False False False False False
4 False False False False False False False False False False
... ... ... ... ... ... ... ... ... ... ...
38733 False False False False False False False False False False
38735 False False False False False False False False False False
38736 False False False False False False False False False False
38737 False False False False False False False False False False
38738 True False False False False False False False False False
38738 rows × 10 columns
df[df['名字'].isnull()][:10]
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
231 231.0 NaN 144.0 纪录片/音乐 韩国 2011-02-02 00:00:00 90 2011 9.7 美国
361 361.0 NaN 80.0 短片 其他 1905-05-17 00:00:00 4 1964 5.7 美国
369 369.0 NaN 5315.0 剧情 日本 2004-07-10 00:00:00 111 2004 7.5 日本
372 372.0 NaN 263.0 短片/音乐 英国 1998-06-30 00:00:00 34 1998 9.2 美国
374 374.0 NaN 47.0 短片 其他 1905-05-17 00:00:00 3 1964 6.7 美国
375 375.0 NaN 1193.0 短片/音乐 法国 1905-07-01 00:00:00 10 2010 7.7 美国
411 411.0 NaN 32.0 短片 其他 1905-05-17 00:00:00 3 1964 7.0 美国
432 432.0 NaN 1081.0 剧情/动作/惊悚/犯罪 美国 2016-02-26 00:00:00 115 2016 6.0 美国
441 441.0 NaN 213.0 恐怖 美国 2007-03-06 00:00:00 83 2007 3.2 美国
448 448.0 NaN 110.0 纪录片 荷兰 2002-04-19 00:00:00 48 2000 9.3 美国
填充缺失值
df[df['评分'].isnull()]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38738 工作细胞 123456.0 动画 日本 2018-04-10 00:00:00 125 2018 NaN 日本
df['评分'].fillna(np.mean(df['评分']),inplace=True)
df[-5:]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
38733 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58 1983 8.600000 美国
38735 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.100000 美国
38736 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.000000 美国
38737 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.600000 美国
38738 工作细胞 123456.0 动画 日本 2018-04-10 00:00:00 125 2018 6.935687 日本
df1=df.fillna('未知电影')#所有空值都会被填充
df1[df1['名字'].isnull()]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
删除缺失值
df.dropna()
参数:
- how=‘all’;删除全部为空值的行或列
- inplace=True;覆盖之前的数据
- axis=0;选择行或列
len(df)
38176
df2=df.dropna()
len(df2)
38175
df.dropna(inplace=True)#inplace会覆盖之前值
df
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.600000 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.500000 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.500000 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.400000 洛杉矶首映
4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.400000 香港
... ... ... ... ... ... ... ... ... ...
38733 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58 1983 8.600000 美国
38735 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91 1986 7.100000 美国
38736 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78 1986 8.000000 美国
38737 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97 1977 6.600000 美国
38738 工作细胞 123456.0 动画 日本 2018-04-10 00:00:00 125 2018 6.935687 日本
38175 rows × 9 columns
处理异常值
异常值即数据集中不合理的值,又称离群点,如年龄为-1,人数为1.2等
df[df.投票人数<0]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
19777 皇家大贼 皇家大 -80.0 剧情/犯罪 中国香港 1985-05-31 00:00:00 60 1985 6.3 美国
19786 日本的垃圾去中国大陆 にっぽんの“ゴミ” 大陆へ渡る ~中国式リサイクル錬 -80.0 纪录片 日本 1905-06-26 00:00:00 60 2004 7.9 美国
19797 女教徒 -118.0 剧情 法国 1966-05-06 00:00:00 135 1966 7.8 美国
对于异常值一般数量很少,在不影响整体数据分部的情况下,可以直接进行删除,或者找原始数据进行修正。
查找投票人数不为整数的数:
df[df['投票人数']%1!=0]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
19791 女教师 女教 8.30 剧情/犯罪 日本 1977-10-29 00:00:00 100 1977 6.6 日本
19804 女郎漫游仙境 ドレミファ娘の血は騒 5.90 喜剧/歌舞 日本 1985-11-03 00:00:00 80 1985 6.7 日本
19820 女仆日记 12.87 剧情 法国 2015-04-01 00:00:00 96 2015 5.7 法国
38055 逃出亚卡拉 12.87 剧情/动作/惊悚/犯罪 美国 1979-09-20 00:00:00 112 1979 7.8 美国
对异常值进行删除:
df=df[df.投票人数>0]
df=df[df['投票人数']%1==0]
df[df['投票人数']%1!=0]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
df[df.投票人数<0]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
数据保存
数据处理后,将数据保存到movie_data.xlsx表格
df.to_excel("movie_data.xlsx")
第三次课作业
(1)Pandas基础知识
(1)用字典数据类型创建DataFrame。 data={‘state’:[‘a’,‘b’,‘c’,‘d’], ‘year’:[1991,1992,1993,1994], ‘pop’:[6,7,8,9]}
data={'state':['a','b','c','d'], 'year':[1991,1992,1993,1994], 'pop':[6,7,8,9]}
df=pd.DataFrame(data)
df
state year pop
0 a 1991 6
1 b 1992 7
2 c 1993 8
3 d 1994 9
(2)将创建的Dataframe的索引设置为,ABCD。并且命名为“索引”。
data={'state':['a','b','c','d'], 'year':[1991,1992,1993,1994], 'pop':[6,7,8,9]}
df1=pd.DataFrame(data,index=list('ABCD'))
df1.index.name='索引'
df1
索引 state year pop
A a 1991 6
B b 1992 7
C c 1993 8
D d 1994 9
(3)在下面新增一行。然后删除。
dit={'state':'p', 'year':2001, 'pop':2}
s=pd.Series(dit)
s.name='E'
df1=df1.append(s)
df1
索引 state year pop
A a 1991 6
B b 1992 7
C c 1993 8
D d 1994 9
E p 2001 2
df1=df1.drop(['E'])
df1
索引 state year pop
A a 1991 6
B b 1992 7
C c 1993 8
D d 1994 9
(4)增加新的属性列,列名设置为‘port’,值均为1。
df1['port']=np.ones(len(df1),dtype=int)
df1
索引 state year pop
A a 1991 6 1
B b 1992 7 1
C c 1993 8 1
D d 1994 9 1
(5)取出1991和1994年的数据。
df1[(df1['year']==1991)|(df1['year']==1994)]
索引 state year pop
A a 1991 6 1
D d 1994 9 1
(6)获取前‘state’和‘year’的数据。
df1[['state','year']]
索引 state year
A a 1991
B b 1992
C c 1993
D d 1994
(7)查看每一列数据的数据格式,并且将‘pop’每个数据乘2。
df1.dtypes
df1['pop']*=2
df1
索引 state year pop
A a 1991 12 1
B b 1992 14 1
C c 1993 16 1
D d 1994 18 1
(2)数据操作
(1)读取香港酒店数据。
df=pd.read_excel('香港酒店数据.xlsx',index_col=0)
df
字段1 字段2 字段3 字段4 字段5 字段6 字段7 字段8
NaN NaN NaN NaN NaN NaN NaN NaN NaN
0.0 香港嘉湖海逸酒店(Harbour Plaza Resort City) 休闲度假 香港 元朗 天水围 天恩路18号 4.6 17604.0 422.0
1.0 香港铜锣湾皇悦酒店(Empire Hotel Hong Kong-Causeway Bay) 浪漫情侣 香港 东区 铜锣湾永兴街8号 4.5 12708.0 693.0
2.0 香港碧荟酒店(The BEACON) 商务出行 香港 油尖旺 九龙旺角洗衣街88号 4.7 328.0 747.0
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.4 5014.0 693.0
... ... ... ... ... ... ... ... ...
415.0 香港天天宾馆(TIN TIN GUEST HOUSE) 地铁周边 香港 油尖旺 旺角弥敦道607号新兴大厦1517A 3.2 16.0 227.0
416.0 香港AMR宾馆(AMR Hostel) 地铁周边 香港 NaN 尖沙咀弥敦道58号美丽都大厦6字楼A12室 NaN NaN 977.0
417.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.5 45462.0 709.0
418.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.5 45463.0 709.0
419.0 香港花盈酒店(家庭旅馆)(Bloomy Hotel) 地铁周边 香港 油尖旺 尖沙咀弥敦道87号华源大厦9字楼C2室 4.0 273.0 256.0
421 rows × 8 columns
(2)按照数据的内容,重新设置数据的索引,重新设置列名称为’名字’,‘类型’,‘城市’,‘地区’,‘地点’,‘评分’,‘评分人数’,‘价格’。
a=['名字','类型','城市','地区','地点','评分','评分人数','价格']
df.columns=a
df
名字 类型 城市 地区 地点 评分 评分人数 价格
NaN NaN NaN NaN NaN NaN NaN NaN NaN
0.0 香港嘉湖海逸酒店(Harbour Plaza Resort City) 休闲度假 香港 元朗 天水围 天恩路18号 4.6 17604.0 422.0
1.0 香港铜锣湾皇悦酒店(Empire Hotel Hong Kong-Causeway Bay) 浪漫情侣 香港 东区 铜锣湾永兴街8号 4.5 12708.0 693.0
2.0 香港碧荟酒店(The BEACON) 商务出行 香港 油尖旺 九龙旺角洗衣街88号 4.7 328.0 747.0
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.4 5014.0 693.0
... ... ... ... ... ... ... ... ...
415.0 香港天天宾馆(TIN TIN GUEST HOUSE) 地铁周边 香港 油尖旺 旺角弥敦道607号新兴大厦1517A 3.2 16.0 227.0
416.0 香港AMR宾馆(AMR Hostel) 地铁周边 香港 NaN 尖沙咀弥敦道58号美丽都大厦6字楼A12室 NaN NaN 977.0
417.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.5 45462.0 709.0
418.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.5 45463.0 709.0
419.0 香港花盈酒店(家庭旅馆)(Bloomy Hotel) 地铁周边 香港 油尖旺 尖沙咀弥敦道87号华源大厦9字楼C2室 4.0 273.0 256.0
421 rows × 8 columns
(3)查看所有类型为“浪漫情侣”的酒店
df[df.类型=='浪漫情侣']
名字 类型 城市 地区 地点 评分 评分人数 价格
1.0 香港铜锣湾皇悦酒店(Empire Hotel Hong Kong-Causeway Bay) 浪漫情侣 香港 东区 铜锣湾永兴街8号 4.5 12708.0 693.0
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.4 5014.0 693.0
4.0 如心艾朗酒店(L‘hotel elan) 浪漫情侣 香港 观塘 观塘创业街38号 4.6 3427.0 581.0
5.0 香港隆堡柏宁顿酒店(Hotel Pennington by Rhombus) 浪漫情侣 香港 湾仔 铜锣湾边宁顿街13-15号 4.5 1938.0 869.0
20.0 香港恒丰酒店(Prudential Hotel) 浪漫情侣 香港 油尖旺 尖沙嘴 弥敦道222号 4.5 8194.0 692.0
... ... ... ... ... ... ... ... ...
234.0 香港金坊宾馆(GOLD PALACE HOTEL) 浪漫情侣 香港 NaN 香港油尖旺区九龙旺角弥敦道607号新兴大厦22字楼2201室 4.7 436.0 245.0
240.0 香港登台酒店(HOTEL STAGE) 浪漫情侣 香港 油尖旺 佐敦志和街1号 4.7 962.0 1084.0
246.0 香港红茶馆酒店(鸭脷洲大街店)(Bridal Tea House Hotel (Ap Lei... 浪漫情侣 香港 南区 港岛鸭脷洲大街95号 4.2 1203.0 377.0
247.0 香港乐仕酒店(Acesite Knutsford Hotel) 浪漫情侣 香港 油尖旺 九龙尖沙咀天文台围8号 4.2 1879.0 237.0
259.0 香港旺角新天地酒店(Mong Kok Sunny Day Hotel) 浪漫情侣 香港 油尖旺 香港九龍旺角新填地街419號 4.3 784.0 949.0
69 rows × 8 columns
(4)查看所有类型为“浪漫情侣”,地区在湾仔的酒店
df[(df.类型=='浪漫情侣')&(df.地区=='湾仔')]
名字 类型 城市 地区 地点 评分 评分人数 价格
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.4 5014.0 693.0
5.0 香港隆堡柏宁顿酒店(Hotel Pennington by Rhombus) 浪漫情侣 香港 湾仔 铜锣湾边宁顿街13-15号 4.5 1938.0 869.0
23.0 香港南洋酒店(South Pacific Hotel) 浪漫情侣 香港 湾仔 摩理臣山道23号 4.5 7981.0 445.0
35.0 香港遨舍卫兰轩(OZO Wesley Hong Kong) 浪漫情侣 香港 湾仔 湾仔轩尼诗道22号 4.6 3283.0 871.0
67.0 香港星网商务精品酒店(Wifi Boutique Hotel) 浪漫情侣 香港 湾仔 湾仔 骆克道366号 4.4 1527.0 412.0
72.0 香港丽骏酒店(Brighton Hotel Hong Kong) 浪漫情侣 香港 湾仔 湾仔骆克道128号 4.5 2383.0 1152.0
123.0 香港逸兰精品酒店(Lanson Place Hotel) 浪漫情侣 香港 湾仔 铜锣湾礼顿道133号 4.7 2053.0 1349.0
128.0 香港珀丽酒店(Rosedale Hotel Hong Kong) 浪漫情侣 香港 湾仔 铜锣湾信德街8号 4.4 7342.0 457.0
133.0 英皇骏景酒店(香港湾仔店)(The Emperor Hotel) 浪漫情侣 香港 湾仔 皇后大道东373号 4.5 1040.0 526.0
159.0 香港华丽铜锣湾酒店(原香港华丽精品酒店)(Best Western Hotel Causew... 浪漫情侣 香港 湾仔 铜锣湾坚拿道西祥和里 4.2 5707.0 309.0
160.0 香港铜锣湾智选假日酒店(Holiday Inn Express Hong Kong Caus... 浪漫情侣 香港 湾仔 铜锣湾 霎东街33号 4.5 4550.0 774.0
182.0 香港问月酒店(Mira Moon Hong Kong) 浪漫情侣 香港 湾仔 谢斐道388号 4.5 1044.0 1282.0
183.0 帆船精品酒店(VELA BOUTIQUE HOTEL) 浪漫情侣 香港 湾仔 摩理臣山道84-86号 4.2 2063.0 413.0
184.0 铜锣湾迷你精品酒店(Mini Hotel Causeway Bay) 浪漫情侣 香港 湾仔 铜锣湾新会道8号 4.3 4882.0 368.0
217.0 香港君临海域酒店(Gloucester Hotel) 浪漫情侣 香港 湾仔 铜锣湾告士打道218号 4.5 2324.0 957.0
(5)查看所有地址在观塘或者油尖旺,评分大于4的酒店
df[((df.地区=='观塘')|(df.地区=='油尖旺'))&(df.评分>4)]
名字 类型 城市 地区 地点 评分 评分人数 价格
2.0 香港碧荟酒店(The BEACON) 商务出行 香港 油尖旺 九龙旺角洗衣街88号 4.7 328.0 747.0
4.0 如心艾朗酒店(L‘hotel elan) 浪漫情侣 香港 观塘 观塘创业街38号 4.6 3427.0 581.0
6.0 海景嘉福洲际酒店(InterContinental Grand Stanford Hong ... 海滨风光 香港 油尖旺 尖沙咀東部麽地道70号 4.7 4366.0 1296.0
8.0 香港富豪九龙酒店(Regal Kowloon Hotel) 休闲度假 香港 油尖旺 尖沙嘴麽地道71号 4.5 11265.0 692.0
10.0 香港广易商务宾馆(家庭旅馆)(WIDE EVER HOSTEL) 地铁周边 香港 油尖旺 九龙旺角弥敦道607号新兴大厦14楼16单位 4.1 1029.0 218.0
... ... ... ... ... ... ... ... ...
363.0 香港珊瑚酒店(家庭旅馆)((Coral Inn)(Hostel)) 地铁周边 香港 油尖旺 香港九龙尖沙咀弥敦道83-97号华源大厦9/F十楼D2室 4.4 149.0 379.0
372.0 香港意乐旅馆(eLog Inn) 地铁周边 香港 油尖旺 佐敦道22号鸿运大厦4字楼H室 4.3 155.0 237.0
378.0 香港牛津尊贵旅舍(Oxford Premium Guest House) NaN 香港 油尖旺 尖沙咀弥敦道56-58号美丽都大厦16字楼A2室 4.7 15.0 NaN
379.0 香港恒好宾馆(Hang Ho Hostel) 地铁周边 香港 油尖旺 九龙弥敦道242号立信大厦6字楼B室 4.5 142.0 445.0
395.0 香港御珑馆(家庭旅馆)(Hotel Conext) 地铁周边 香港 油尖旺 九龙弥敦道240号立信大厦3楼B室 4.2 359.0 317.0
139 rows × 8 columns
(6)查看类型缺失的数据
df[df['类型'].isnull()]
名字 类型 城市 地区 地点 评分 评分人数 价格
NaN NaN NaN NaN NaN NaN NaN NaN NaN
39.0 香港颐庭酒店(铜锣湾店)(Eco Tree Hotel Causeway Bay) NaN 香港 东区 铜锣湾水星街15号 4.6 15.0 567.0
187.0 工業家酒店(IND Hotel) NaN 香港 观塘 九龙观塘观塘道326号 4.2 6.0 448.0
200.0 香港永倫800酒店(WINLAND800HOTEL) NaN 香港 葵青 新界青衣路一号 3.4 3098.0 196.0
241.0 香港港湾酒店(Hong Kong Harbor Hotel) NaN 香港 南区 香港仔石排湾道47号 3.8 709.0 259.0
268.0 香港奥斯酒店(O‘ Hotel) NaN 香港 九龙城 香港九龙土瓜湾九龙城道42-46号 3.7 869.0 369.0
284.0 巴黎旅馆(Paris Guest House (D2, 10/F)) NaN 香港 NaN Flat D2, 10/F, Block D, Chungking Mansion, 40 ... 2.0 5.0 67.0
300.0 香港海景渡假乐园(Hong Kong Seaview Holiday Resort) NaN 香港 离岛 大屿山梅窝东湾头路11号 2.9 5.0 881.0
301.0 香港海边小屋(The Cove Hostel) NaN 香港 离岛 大屿山塘福村17D,1-2字楼 NaN 2.0 352.0
304.0 香港和平宾馆(HK Peace Guest House) NaN 香港 NaN 尖沙咀弥敦道58号美丽都大厦13楼A5室 NaN NaN 201.0
306.0 香港文苑宾馆(Man Yuen Hotel) NaN 香港 油尖旺 旺角弥敦道737号金轮大厦二楼H室 4.7 5.0 169.0
315.0 墨尔本宾馆(Melbourne Hostel) NaN 香港 NaN 九龙尖沙咀弥敦道40号重庆大厦E座10字楼E1室 NaN 2.0 93.0
318.0 香港百丽旅馆(Park Guest House) NaN 香港 油尖旺 九龙尖沙咀海防道53至55号海防大厦1楼10号 NaN 6.0 445.0
321.0 香港尊贵旅馆(Hong Kong Premium Guest House) NaN 香港 油尖旺 尖沙咀弥敦道56-58号美丽都大厦16字楼B2,A5室(前台入住办理设在16字楼A2室) 4.8 19.0 166.0
322.0 香港美华宾馆(Mei Wah Guest House) NaN 香港 NaN 九龙旺角弥敦道737号金轮大厦9字楼F座 4.0 27.0 250.0
323.0 香港威尼斯宾馆 NaN 香港 NaN 香港油尖旺区旺角弥顿道580号恒隆大厦4楼 4.7 48.0 298.0
327.0 80后潘多拉旅馆(香港佐敦店)(原华丰宾馆)(Pandora After 80s Jordan) NaN 香港 油尖旺 九龙佐敦佐敦道15号华丰大厦1字楼H室 3.1 36.0 70.0
335.0 香港Primo旅馆(Primo Guesthouse) NaN 香港 NaN 九龙尖沙咀弥敦道40号重庆大厦E座3字楼E3室 NaN 1.0 131.0
337.0 纳里旅馆(Narli Guest House) NaN 香港 油尖旺 尖沙咀弥敦道36-44号重庆大厦16字楼D座D8室 NaN NaN 175.0
343.0 香港宿雾宾馆(Cebu Hotel) NaN 香港 NaN 弥敦道36-44号重庆大厦A座17字楼A6 & A7室 NaN 1.0 113.0
348.0 美丽宾馆(Lily Guest House) NaN 香港 NaN 九龙尖沙咀弥敦道40号重庆大厦E座8字楼E3室(于E座8楼E1室登记入住) NaN NaN 165.0
364.0 全球旅舍(Global Inn) NaN 香港 NaN 弥敦道36-44号重庆大厦C座6楼C2室 (登记前台於E座8楼E1室) NaN 2.0 165.0
371.0 珠峰宾馆(Everest Guest House (3/F)) NaN 香港 NaN 九龙尖沙咀弥敦道40号重庆大厦D座3字楼5-6室 NaN 1.0 181.0
378.0 香港牛津尊贵旅舍(Oxford Premium Guest House) NaN 香港 油尖旺 尖沙咀弥敦道56-58号美丽都大厦16字楼A2室 4.7 15.0 NaN
381.0 香港俄罗斯旅舍(Russian Hostel) NaN 香港 NaN 香港九龙弥敦道40号重庆大厦D座16楼1室 NaN NaN 175.0
384.0 尊贵闲庭酒店(Premium Lounge) NaN 香港 NaN Flat A6 & A7, 16/F, Block A, Chungking Mansion... NaN 1.0 166.0
399.0 香港新天天酒店(Everyday Inn Hotel) NaN 香港 油尖旺 佐敦庙街230-236号韶兴大厦5字楼B座 NaN NaN 350.0
403.0 伍德斯托克旅馆(Woodstock Hostel) NaN 香港 NaN Flat A1-A6, 16/F, Block A, Chungking Mansions,... NaN NaN 172.0
404.0 旅客宾馆(Traveller‘s Hostel) NaN 香港 NaN 九龙尖沙咀弥敦道40号重庆大厦A座16字楼A1& A2室 NaN NaN 269.0
405.0 欧若旅馆(Euro Hostel) NaN 香港 NaN Flat 6, Block D, 17/F, Chungking Mansion, NaN NaN 174.0
406.0 香港Prestige旅馆(Prestige Guesthouse) NaN 香港 NaN 弥敦道40号重庆大厦E座3字楼E1室 NaN NaN 122.0
411.0 香港兰涛度假屋(Lantau Lodge) NaN 香港 荃湾 大屿山水口村47A号2楼 NaN NaN 1035.0
(7)用“其他”填充类型和地区
df['类型'].fillna('其他',inplace=True)
df['地区'].fillna('其他',inplace=True)
df
名字 类型 城市 地区 地点 评分 评分人数 价格
NaN NaN 其他 NaN 其他 NaN NaN NaN NaN
0.0 香港嘉湖海逸酒店(Harbour Plaza Resort City) 休闲度假 香港 元朗 天水围 天恩路18号 4.6 17604.0 422.0
1.0 香港铜锣湾皇悦酒店(Empire Hotel Hong Kong-Causeway Bay) 浪漫情侣 香港 东区 铜锣湾永兴街8号 4.5 12708.0 693.0
2.0 香港碧荟酒店(The BEACON) 商务出行 香港 油尖旺 九龙旺角洗衣街88号 4.7 328.0 747.0
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.4 5014.0 693.0
... ... ... ... ... ... ... ... ...
415.0 香港天天宾馆(TIN TIN GUEST HOUSE) 地铁周边 香港 油尖旺 旺角弥敦道607号新兴大厦1517A 3.2 16.0 227.0
416.0 香港AMR宾馆(AMR Hostel) 地铁周边 香港 其他 尖沙咀弥敦道58号美丽都大厦6字楼A12室 NaN NaN 977.0
417.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.5 45462.0 709.0
418.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.5 45463.0 709.0
419.0 香港花盈酒店(家庭旅馆)(Bloomy Hotel) 地铁周边 香港 油尖旺 尖沙咀弥敦道87号华源大厦9字楼C2室 4.0 273.0 256.0
421 rows × 8 columns
(8)用评分均值填充缺失值
df['评分'].fillna(np.mean(df['评分']),inplace=True)
df
名字 类型 城市 地区 地点 评分 评分人数 价格
NaN NaN 其他 NaN 其他 NaN 4.283827 NaN NaN
0.0 香港嘉湖海逸酒店(Harbour Plaza Resort City) 休闲度假 香港 元朗 天水围 天恩路18号 4.600000 17604.0 422.0
1.0 香港铜锣湾皇悦酒店(Empire Hotel Hong Kong-Causeway Bay) 浪漫情侣 香港 东区 铜锣湾永兴街8号 4.500000 12708.0 693.0
2.0 香港碧荟酒店(The BEACON) 商务出行 香港 油尖旺 九龙旺角洗衣街88号 4.700000 328.0 747.0
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.400000 5014.0 693.0
... ... ... ... ... ... ... ... ...
415.0 香港天天宾馆(TIN TIN GUEST HOUSE) 地铁周边 香港 油尖旺 旺角弥敦道607号新兴大厦1517A 3.200000 16.0 227.0
416.0 香港AMR宾馆(AMR Hostel) 地铁周边 香港 其他 尖沙咀弥敦道58号美丽都大厦6字楼A12室 4.283827 NaN 977.0
417.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.500000 45462.0 709.0
418.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.500000 45463.0 709.0
419.0 香港花盈酒店(家庭旅馆)(Bloomy Hotel) 地铁周边 香港 油尖旺 尖沙咀弥敦道87号华源大厦9字楼C2室 4.000000 273.0 256.0
421 rows × 8 columns
(9)删除价格和评分人数的缺失值
df=df.dropna(subset=['价格','评分人数'])
df
名字 类型 城市 地区 地点 评分 评分人数 价格
0.0 香港嘉湖海逸酒店(Harbour Plaza Resort City) 休闲度假 香港 元朗 天水围 天恩路18号 4.600000 17604.0 422.0
1.0 香港铜锣湾皇悦酒店(Empire Hotel Hong Kong-Causeway Bay) 浪漫情侣 香港 东区 铜锣湾永兴街8号 4.500000 12708.0 693.0
2.0 香港碧荟酒店(The BEACON) 商务出行 香港 油尖旺 九龙旺角洗衣街88号 4.700000 328.0 747.0
3.0 香港湾仔帝盛酒店(Dorsett Wanchai) 浪漫情侣 香港 湾仔 皇后大道东387-397号 4.400000 5014.0 693.0
4.0 如心艾朗酒店(L‘hotel elan) 浪漫情侣 香港 观塘 观塘创业街38号 4.600000 3427.0 581.0
... ... ... ... ... ... ... ... ...
414.0 香港金泉酒店 地铁周边 香港 其他 香港旺角弥敦道607号新兴大厦1407室 4.283827 16.0 245.0
415.0 香港天天宾馆(TIN TIN GUEST HOUSE) 地铁周边 香港 油尖旺 旺角弥敦道607号新兴大厦1517A 3.200000 16.0 227.0
417.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.500000 45462.0 709.0
418.0 香港如心海景酒店暨会议中心(L‘hotel Nina et Convention Centre) 海滨风光 香港 荃湾 荃湾 杨屋道8号 4.500000 45463.0 709.0
419.0 香港花盈酒店(家庭旅馆)(Bloomy Hotel) 地铁周边 香港 油尖旺 尖沙咀弥敦道87号华源大厦9字楼C2室 4.000000 273.0 256.0
397 rows × 8 columns
(10)保存到“酒店数据1.xlsx”
df.to_excel('酒店数据11.xlsx')