1. 程式人生 > 其它 >Pandas第二次作業

Pandas第二次作業

技術標籤:資料分析資料分析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)