python笔记
数据读入
- 用pandas读入
将读取的数据放在data中
data = pd.read_csv(‘文件路径或文件名’, encoding=‘gbk’)
当为文件名时需要放在同一个文件夹下
encoding=‘gbk’,为了识别中文
data.head()可以查看输入的前几行数据 - 用numpy读入二维txt文件
data = np.loadtxt(‘文件路径或文件名’, dtype=np.int, delimiter=None)
当为文件名时需要放在同一个文件夹下
dtype为数据类型
delimiter=None数据分隔符为空格
数据清洗与准备
- data为pandas类型的数据
data.isnull().sum()可以获得缺失值的数量 - 用fillna()填充缺失值
① 使用一个常数代替缺失值
data_clean= data.fillna(0)
fillna返回的是一个新的对象,新对象是data_clean
②用字典为不同列设定不同的缺失值
nan_replacements = {“列1”: 0,“列2”: 0,“列3”:0, “列4”: 0, “列5”: 0}
data.fillna(nan_replacements, inplace=True)
#inplace=True是为修改已经存在的data对象
#将列1中的空值替换为0 - 替换某列数据的某些值
data[“需要被处理的列”].replace(“需要替换的值”, “替换后的值”, inplace=True)
当需要对已经存在的对象进行修改时,添加 inplace=True - 将某些无用数据行删除
garbage_data=list(data.loc[无用行].index) #取这些行的索引放在列表里
data.drop(data.index[garbage_data]) #删除无用数据行 - 在数据清洗完之后可以用data.shape查看有多少行多少列
顾客来自哪里?
1.value_counts()函数的用法
country_data=pd.DataFrame(data_clean[‘country’].value_counts())
没有选择行,所以有178行
country_data=pd.DataFrame(data_clean.loc[data_clean[‘is_canceled’]==0][‘country’].value_counts())
选择了行,所以只有166行
生成的行标签为国家名,列名是country
2. 用rename()函数为列重命名
country_data.rename(columns={“country”:“numbers of country”}, inplace=True)
3. sum()可以对列求和
total_country=country_data[‘numbers of country’].sum()
4. round( 算术式,2)
对算术式保留两位小数。
5. 用plotly.express绘制饼图
import plotly.express as px
fig = px.pie(country_data,
values="numbers of country",
names="country",
title="Home country of guests",
template="seaborn")
fig.update_traces(textposition="inside", textinfo="value+percent+label")
fig.show()
6. 用plotly.express绘制地图
guest_map = px.choropleth(country_data,
locations=country_data.index,
color=country_data["%"],
hover_name=country_data.index,
color_continuous_scale=px.colors.sequential.Plasma,
title="Home country of guests")
guest_map.show()
一年中每晚的价格变化
- sort_values()使用
先将.sort_values()中的参数排序,其余列跟随着.sort_values()中的参数变化 - 用matplotlib画箱型图
import matplotlib as plt
plt.figure(figsize=(12, 8))
sns.boxplot(x="reserved_room_type",
y="adr_p",
hue="hotel",
data=guest_price,
hue_order=["City Hotel", "Resort Hotel"],
fliersize=0)
plt.title("Price of room types per night and person", fontsize=16)
plt.xlabel("Room type", fontsize=16)
plt.ylabel