DataFrame数据分析入门
一、to_datetime()进行日期格式转换
1)将字符串字段转换为日期类型
importpandasaspd#gmv是营业额df=pd.DataFrame({"gmv":[100,200,300,400,500],"trade_data":["2019-01-01","2019-01-02","2019-01-03","2019-01-04","2019-01-05"]})#将trade_data列转换为日期格式print(df)print(df.dtypes)df["trade_data"]=pd.to_datetime(df["trade_data"])print(df)print(df.dtypes)gmv trade_data 0 100 2019-01-01 1 200 2019-01-02 2 300 2019-01-03 3 400 2019-01-04 4 500 2019-01-05 gmv int64 trade_data str dtype: object gmv trade_data 0 100 2019-01-01 1 200 2019-01-02 2 300 2019-01-03 3 400 2019-01-04 4 500 2019-01-05 gmv int64 trade_data datetime64[us] dtype: object2、时间属性访问器对象Series.dt,获取日期数据的年月日星期
#获取年月日importpandasaspd df=pd.DataFrame({"gmv":[100,200,300,400],"trade_data":["2025-01-06","2032-09-08","2024-09-08","2002-09-08"]})df['ymd']=pd.to_datetime(df['trade_data'])#df['yy'],df['mm'],df['dd'] = df['ymd'].dt.year,df['ymd'].dt.month,df['ymd'].dt.day#print(df)df["年"]=df["ymd"].dt.year df["月"]=df["ymd"].dt.month df["日"]=df["ymd"].dt.dayprint(df)#获取星期df['week']=df['ymd'].dt.day_name()#获取日期所在季度df['quarter']=df['ymd'].dt.quarter#获取日期是否为 月底 年底df['is_month_end']=df['ymd'].dt.is_month_end df['is_month_start']=df['ymd'].dt.is_month_start df['is_year_end']=df['ymd'].dt.is_year_end df['is_year_start']=df['ymd'].dt.is_year_start df1=dfprint(df)gmv trade_data ymd 年 月 日 0 100 2025-01-06 2025-01-06 2025 1 6 1 200 2032-09-08 2032-09-08 2032 9 8 2 300 2024-09-08 2024-09-08 2024 9 8 3 400 2002-09-08 2002-09-08 2002 9 8 gmv trade_data ymd 年 月 日 week quarter is_month_end \ 0 100 2025-01-06 2025-01-06 2025 1 6 Monday 1 False 1 200 2032-09-08 2032-09-08 2032 9 8 Wednesday 3 False 2 300 2024-09-08 2024-09-08 2024 9 8 Sunday 3 False 3 400 2002-09-08 2002-09-08 2002 9 8 Sunday 3 False is_month_start is_year_end is_year_start 0 False False False 1 False False False 2 False False False 3 False False False3、to_period()获取统计周期freq:这是 to_period() 方法最重要的参数,用于指定要转换的时间周期频率
常见的取值如下:
“D”:按天周期,例如 2024-01-01 会转换为 2024-01-01 这个天的周期。
“W”:按周周期,通常以周日作为一周的结束,比如日期落在某一周内,就会转换为该周的周期表示。
“M”:按月周期,像 2024-05-15 会转换为 2024-05。
“Q”:按季度周期,一年分为四个季度,日期会转换到对应的季度周期,例如 2024Q2 。
“A” 或 “Y”:按年周期,如 2024-07-20 会转换为 2024 。
importpandasaspd#获取年统计周期df1["ystat"]=df1["ymd"].dt.to_period(freq="Y")#获取月统计周期df1["mstat"]=df1["ymd"].dt.to_period(freq="M")#获取季统计周期df1["qstat"]=df1["ymd"].dt.to_period(freq="Q")#获取周统计周期df1["wstat"]=df1["ymd"].dt.to_period(freq="W")#获取天统计周期df1["dstat"]=df1["ymd"].dt.to_period(freq="D")print(df1)gmv trade_data ymd 年 月 日 week quarter is_month_end \ 0 100 2025-01-06 2025-01-06 2025 1 6 Monday 1 False 1 200 2032-09-08 2032-09-08 2032 9 8 Wednesday 3 False 2 300 2024-09-08 2024-09-08 2024 9 8 Sunday 3 False 3 400 2002-09-08 2002-09-08 2002 9 8 Sunday 3 False is_month_start is_year_end is_year_start ystat mstat qstat \ 0 False False False 2025 2025-01 2025Q1 1 False False False 2032 2032-09 2032Q3 2 False False False 2024 2024-09 2024Q3 3 False False False 2002 2002-09 2002Q3 wstat dstat 0 2025-01-06/2025-01-12 2025-01-06 1 2032-09-06/2032-09-12 2032-09-08 2 2024-09-02/2024-09-08 2024-09-08 3 2002-09-02/2002-09-08 2002-09-08二、DataFrame数据分析入门
1、加载数据集
# 1、加载数据集df=pd.read_csv("data/weather.csv")print(df)print(df.shape)print(df.dtypes)print(df.columns)print(type(df))#df.infodate precipitation temp_max temp_min wind weather 0 2012-01-01 0.0 12.8 5.0 4.7 drizzle 1 2012-01-02 10.9 10.6 2.8 4.5 rain 2 2012-01-03 0.8 11.7 7.2 2.3 rain 3 2012-01-04 20.3 12.2 5.6 4.7 rain 4 2012-01-05 1.3 8.9 2.8 6.1 rain ... ... ... ... ... ... ... 1456 2015-12-27 8.6 4.4 1.7 2.9 rain 1457 2015-12-28 1.5 5.0 1.7 1.3 rain 1458 2015-12-29 0.0 7.2 0.6 2.6 fog 1459 2015-12-30 0.0 5.6 -1.0 3.4 sun 1460 2015-12-31 0.0 5.6 -2.1 3.5 sun [1461 rows x 6 columns] (1461, 6) date str precipitation float64 temp_max float64 temp_min float64 wind float64 weather str dtype: object Index(['date', 'precipitation', 'temp_max', 'temp_min', 'wind', 'weather'], dtype='str') <class 'pandas.DataFrame'>2、查看部分数据
# 2、查看部分数据#1)通过head()、tail()获取前n行或后n行print(df.head(5))print(df.tail(5))#2)获取一列或者多列数据#加载一列数据df_data_Series=df["date"]print(df_data_Series)df_data_dataFrame=df[["date"]]print(df_data_dataFrame)#加载多列数据</