Pandas第二次作業
阿新 • • 發佈:2021-01-28
技術標籤:資料分析資料分析pythonpandascsvexcel
Pandas第二次作業
Pandas第二次作業
作業1
任務目標:
讀取 catNames2.csv 檔案,完成需求:
• 找到所有的使用次數超過800的貓的名字
• 獲取用次數最高的名字
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 27 09:42:50 2021
@author: 清弦墨客(聆聽)
"""
import numpy as np
import pandas as pd
# 用pandas讀取csv檔案
path = r"D:\Coding\Python\LogicCoding\Data Analyze\catNames2.csv"
df = pd.read_csv(path)
#print(df.shape)
"""
通過觀察檔案內容,發現檔案有兩列,第一列是Row_Labels,其中包含貓的名字,
第二列是Count_AnimalName,顧名思義,是貓的名字被使用的次數。
"""
# 找到所有的使用次數超過800的貓的名字
#print(df[df["Count_AnimalName"]>800])
# 把得到的DataFrame賦給一個新DataFrame,並按照名字的使用次數逆序列印
df_popular_names = df[df["Count_AnimalName"]>800].sort_values(by="Count_AnimalName", ascending=False)
print(df_popular_names)
# 將這些貓的名字放入一個列表中儲存即可
popular_catnames = df_popular_names["Row_Labels"].tolist()
print(popular_catnames)
# 找到使用次數最高的貓的名字,
# 方法一,取popular_catnames的第一個元素即可
most_popular_name = popular_catnames[0]
print(most_popular_name)
# 方法一其實就是取df_popular_names中第1行第1列的資料
most_popular_name = df_popular_names.iloc[0,0]
print(most_popular_name)
# 方法二,使用max()方法,先找到"Count_AnimalName"這一列的最大值
max_value = df["Count_AnimalName"].max()
#print(max_value) # 這個值應為1195
# 再找到最大值對應的行
most_popular_name = df[df["Count_AnimalName"]==max_value]
#print(most_popular_name)
# 再將行對應的"Row_Labels"列的值取出
most_popular_name = most_popular_name.iloc[0,0]
# 方便讀者,我就不合並寫了。
print(most_popular_name)
作業2
任務目標:
讀取 五糧液2020.xlsx 資料,指定 索引為0列 為 行索引
檢視 該資料的基本資訊
計算每一天各指標的差異值
計算其 pre_close 的增長率
將 pre_close 的增長率新增至 wly_data 資料中
將 pct_change 該列 呈現的 NaN 用0填充
檢視 pre_close 與 pct_change 的相關性
將 pct_change 這列乘以100 保留兩位小數 成為百分比
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 27 10:05:08 2021
@author: 清弦墨客(聆聽)
"""
import numpy as np
import pandas as pd
# 用pandas讀取excel檔案,並指定第一列為行索引
path = r"D:\Coding\Python\LogicCoding\Data Analyze\五糧液2020.xlsx"
wly_data = pd.read_excel(path, index_col=0)
# print(df.shape)
# 檢視資料的基本資訊
print(wly_data.info())
#計算每一天各指標的差異值,axis=0可以省略
print(wly_data.diff(axis=0))
# 計算其 pre_close 的增長率,並新增至 wly_data 資料中
wly_data["pct_change"] = wly_data["pre_close"].pct_change()
print(wly_data)
# 將 pct_change 該列 呈現的 NaN 用0填充
wly_data.fillna(value = 0, inplace = True)
print(wly_data)
# 檢視 pre_close 與 pct_change 的相關性
# 使用相關矩陣corr
print(wly_data["pre_close"].corr(wly_data["pct_change"]))
# 檢視所有列特徵向量的相關性
print(wly_data.corr())
# 將 pct_change 這列乘以100 保留兩位小數 成為百分比
# 方法一,使用round()方法
f = lambda x:round(x*100, 2)
#print(wly_data["pct_change"].apply(f))
# 方法二,使用%.2f格式化
f = lambda x:"%.2f"%x
#print(wly_data["pct_change"].apply(f))
# 合併寫法
wly_data['pct_change'] = wly_data['pct_change'].apply(lambda x:format(x, '.2%'))
print(wly_data)
# 將資料儲存到modified.xlsx檔案中
path = r"D:\Coding\Python\LogicCoding\Data Analyze\五糧液2020 modified.xlsx"
wly_data.to_excel(path, index = False)