数据导入与导出
import numpy as np
import pandas as pd
# 数据导入
df = pd.read_csv("data.csv")
print(df.head())
print(type(df))
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
<class 'pandas.core.frame.DataFrame'>
print(df.Train_Acc.mean())
0.8865800000000001
# 数据的导出
df1= df.tail()
df.to_csv("new.csv")
# json文件
df2 = pd.read_json("E:\\mytheme\\package.json")
print(df2.head())
name type version scripts dependencies \
dev vhastro module 0.0.1 astro dev NaN
build vhastro module 0.0.1 astro build NaN
preview vhastro module 0.0.1 astro preview NaN
astro vhastro module 0.0.1 astro ^5.13.10
newpost vhastro module 0.0.1 node ./script/newpost.js NaN
devDependencies pnpm
dev NaN NaN
build NaN NaN
preview NaN NaN
astro NaN NaN
newpost NaN NaN
数据清洗
# 缺失值的处理
s = pd.Series([1,2,np.nan,None,pd.NA])
print(s)
0 1
1 2
2 NaN
3 None
4 <NA>
dtype: object
# 查看是否是缺失值
print(s.isna())
0 False
1 False
2 True
3 True
4 True
dtype: bool
print(s.isnull())
0 False
1 False
2 True
3 True
4 True
dtype: bool
print(df.isna())
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 False False False False False False
1 False False False False False False
2 False False False False False False
3 False False False False False False
4 False False False False False False
5 False False False False False False
6 False False False False False False
7 False False False False False False
8 False False False False False False
9 False False False False False False
10 False False False False False False
11 False False False False False False
12 False False False False False False
13 False False False False False False
14 False False False False False False
15 False False False False False False
16 False False False False False False
17 False False False False False False
18 False False False False False False
19 False False False False False False
20 False False False False False False
21 False False False False False False
22 False False False False False True
23 False False False False False False
24 False False False False False False
25 False False False False False False
26 False False False False False False
27 False False True False False False
28 False False False False True False
29 False False False False False False
print(df.isna().sum()) # 查看缺失值的个数
Unnamed: 0 0
Epoch 0
Train_Loss 1
Train_Acc 0
Val_Loss 1
Val_Acc 1
dtype: int64
# 剔除缺失值
print(s.dropna())
print(df.dropna()) # 删掉一整条记录
0 1
1 2
dtype: object
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
5 5 6 0.473939 0.835600 0.582652 0.8072
6 6 7 0.432094 0.848644 0.468109 0.8388
7 7 8 0.393686 0.864111 0.429461 0.8552
8 8 9 0.356874 0.876356 0.500846 0.8360
9 9 10 0.333076 0.883822 0.446606 0.8488
10 10 11 0.310424 0.891867 0.395992 0.8662
11 11 12 0.284330 0.900867 0.395248 0.8714
12 12 13 0.267211 0.904689 0.466472 0.8512
13 13 14 0.252369 0.912067 0.357027 0.8788
14 14 15 0.225934 0.920222 0.326612 0.8886
15 15 16 0.215926 0.924067 0.329903 0.8930
16 16 17 0.200772 0.930667 0.407676 0.8770
17 17 18 0.191555 0.932378 0.344014 0.8890
18 18 19 0.177961 0.936844 0.362166 0.8850
19 19 20 0.170277 0.940867 0.306026 0.8990
20 20 21 0.158309 0.944289 0.448888 0.8664
21 21 22 0.145230 0.948644 0.330578 0.9014
23 23 24 0.133425 0.952511 0.363670 0.8928
24 24 25 0.123354 0.956467 0.411105 0.8836
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
29 29 30 0.094147 0.965889 0.331762 0.9028
print(df.dropna(how = "all")) # 如果全都是缺失值才删除这一行
print(df.dropna(thresh=2)) # 如果至少有n个不是缺失值。就保留
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
5 5 6 0.473939 0.835600 0.582652 0.8072
6 6 7 0.432094 0.848644 0.468109 0.8388
7 7 8 0.393686 0.864111 0.429461 0.8552
8 8 9 0.356874 0.876356 0.500846 0.8360
9 9 10 0.333076 0.883822 0.446606 0.8488
10 10 11 0.310424 0.891867 0.395992 0.8662
11 11 12 0.284330 0.900867 0.395248 0.8714
12 12 13 0.267211 0.904689 0.466472 0.8512
13 13 14 0.252369 0.912067 0.357027 0.8788
14 14 15 0.225934 0.920222 0.326612 0.8886
15 15 16 0.215926 0.924067 0.329903 0.8930
16 16 17 0.200772 0.930667 0.407676 0.8770
17 17 18 0.191555 0.932378 0.344014 0.8890
18 18 19 0.177961 0.936844 0.362166 0.8850
19 19 20 0.170277 0.940867 0.306026 0.8990
20 20 21 0.158309 0.944289 0.448888 0.8664
21 21 22 0.145230 0.948644 0.330578 0.9014
22 22 23 0.137505 0.951489 0.321336 NaN
23 23 24 0.133425 0.952511 0.363670 0.8928
24 24 25 0.123354 0.956467 0.411105 0.8836
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 NaN 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 NaN 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
5 5 6 0.473939 0.835600 0.582652 0.8072
6 6 7 0.432094 0.848644 0.468109 0.8388
7 7 8 0.393686 0.864111 0.429461 0.8552
8 8 9 0.356874 0.876356 0.500846 0.8360
9 9 10 0.333076 0.883822 0.446606 0.8488
10 10 11 0.310424 0.891867 0.395992 0.8662
11 11 12 0.284330 0.900867 0.395248 0.8714
12 12 13 0.267211 0.904689 0.466472 0.8512
13 13 14 0.252369 0.912067 0.357027 0.8788
14 14 15 0.225934 0.920222 0.326612 0.8886
15 15 16 0.215926 0.924067 0.329903 0.8930
16 16 17 0.200772 0.930667 0.407676 0.8770
17 17 18 0.191555 0.932378 0.344014 0.8890
18 18 19 0.177961 0.936844 0.362166 0.8850
19 19 20 0.170277 0.940867 0.306026 0.8990
20 20 21 0.158309 0.944289 0.448888 0.8664
21 21 22 0.145230 0.948644 0.330578 0.9014
22 22 23 0.137505 0.951489 0.321336 NaN
23 23 24 0.133425 0.952511 0.363670 0.8928
24 24 25 0.123354 0.956467 0.411105 0.8836
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 NaN 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 NaN 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
print(df.dropna(subset=["Train_Loss"])) # 如果某列有缺失值,则剔除这一行
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
5 5 6 0.473939 0.835600 0.582652 0.8072
6 6 7 0.432094 0.848644 0.468109 0.8388
7 7 8 0.393686 0.864111 0.429461 0.8552
8 8 9 0.356874 0.876356 0.500846 0.8360
9 9 10 0.333076 0.883822 0.446606 0.8488
10 10 11 0.310424 0.891867 0.395992 0.8662
11 11 12 0.284330 0.900867 0.395248 0.8714
12 12 13 0.267211 0.904689 0.466472 0.8512
13 13 14 0.252369 0.912067 0.357027 0.8788
14 14 15 0.225934 0.920222 0.326612 0.8886
15 15 16 0.215926 0.924067 0.329903 0.8930
16 16 17 0.200772 0.930667 0.407676 0.8770
17 17 18 0.191555 0.932378 0.344014 0.8890
18 18 19 0.177961 0.936844 0.362166 0.8850
19 19 20 0.170277 0.940867 0.306026 0.8990
20 20 21 0.158309 0.944289 0.448888 0.8664
21 21 22 0.145230 0.948644 0.330578 0.9014
22 22 23 0.137505 0.951489 0.321336 NaN
23 23 24 0.133425 0.952511 0.363670 0.8928
24 24 25 0.123354 0.956467 0.411105 0.8836
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
28 28 29 0.101621 0.964067 NaN 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
# 填错缺失值
print(df.fillna({"Train_Loss":0.1}).tail()) # 自定义填充
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 0.100000 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 NaN 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
print(df.fillna(df[["Train_Loss","Val_Loss"]].mean()).tail()) # 使用统计值来填充
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 0.329108 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 0.458378 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
print(df.ffill().tail()) # 用前边的数据进行填充front
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 0.111692 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 0.381005 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
print(df.bfill().tail()) # 用后边的数据进行填充behind
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 0.101621 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 0.331762 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
# 重复数据的处理
print(df.duplicated()) # 一整条记录都是一样的,则标记为重复,返回true
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
14 False
15 False
16 False
17 False
18 False
19 False
20 False
21 False
22 False
23 False
24 False
25 False
26 False
27 False
28 False
29 False
dtype: bool
print(df.drop_duplicates()) # 把全部重复的一行删除
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
5 5 6 0.473939 0.835600 0.582652 0.8072
6 6 7 0.432094 0.848644 0.468109 0.8388
7 7 8 0.393686 0.864111 0.429461 0.8552
8 8 9 0.356874 0.876356 0.500846 0.8360
9 9 10 0.333076 0.883822 0.446606 0.8488
10 10 11 0.310424 0.891867 0.395992 0.8662
11 11 12 0.284330 0.900867 0.395248 0.8714
12 12 13 0.267211 0.904689 0.466472 0.8512
13 13 14 0.252369 0.912067 0.357027 0.8788
14 14 15 0.225934 0.920222 0.326612 0.8886
15 15 16 0.215926 0.924067 0.329903 0.8930
16 16 17 0.200772 0.930667 0.407676 0.8770
17 17 18 0.191555 0.932378 0.344014 0.8890
18 18 19 0.177961 0.936844 0.362166 0.8850
19 19 20 0.170277 0.940867 0.306026 0.8990
20 20 21 0.158309 0.944289 0.448888 0.8664
21 21 22 0.145230 0.948644 0.330578 0.9014
22 22 23 0.137505 0.951489 0.321336 NaN
23 23 24 0.133425 0.952511 0.363670 0.8928
24 24 25 0.123354 0.956467 0.411105 0.8836
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 NaN 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 NaN 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
print(df.drop_duplicates(subset=["Epoch"],keep="last")) # 根据指定列去重,并保留最后一次出现的记录
Unnamed: 0 Epoch Train_Loss Train_Acc Val_Loss Val_Acc
0 0 1 1.378301 0.496378 1.138243 0.5956
1 1 2 0.913497 0.673756 0.876917 0.7026
2 2 3 0.714228 0.748956 0.672718 0.7590
3 3 4 0.598144 0.792978 0.625913 0.7864
4 4 5 0.527811 0.817778 0.536250 0.8182
5 5 6 0.473939 0.835600 0.582652 0.8072
6 6 7 0.432094 0.848644 0.468109 0.8388
7 7 8 0.393686 0.864111 0.429461 0.8552
8 8 9 0.356874 0.876356 0.500846 0.8360
9 9 10 0.333076 0.883822 0.446606 0.8488
10 10 11 0.310424 0.891867 0.395992 0.8662
11 11 12 0.284330 0.900867 0.395248 0.8714
12 12 13 0.267211 0.904689 0.466472 0.8512
13 13 14 0.252369 0.912067 0.357027 0.8788
14 14 15 0.225934 0.920222 0.326612 0.8886
15 15 16 0.215926 0.924067 0.329903 0.8930
16 16 17 0.200772 0.930667 0.407676 0.8770
17 17 18 0.191555 0.932378 0.344014 0.8890
18 18 19 0.177961 0.936844 0.362166 0.8850
19 19 20 0.170277 0.940867 0.306026 0.8990
20 20 21 0.158309 0.944289 0.448888 0.8664
21 21 22 0.145230 0.948644 0.330578 0.9014
22 22 23 0.137505 0.951489 0.321336 NaN
23 23 24 0.133425 0.952511 0.363670 0.8928
24 24 25 0.123354 0.956467 0.411105 0.8836
25 25 26 0.120446 0.957178 0.335317 0.9038
26 26 27 0.111692 0.960667 0.400440 0.8964
27 27 28 NaN 0.963289 0.381005 0.8998
28 28 29 0.101621 0.964067 NaN 0.8988
29 29 30 0.094147 0.965889 0.331762 0.9028
# 数据类型的转化
print(df.dtypes)
df["Epoch"] = df["Epoch"].astype("int16")
print(df.dtypes)
Unnamed: 0 int64
Epoch int64
Train_Loss float64
Train_Acc float64
Val_Loss float64
Val_Acc float64
dtype: object
Unnamed: 0 int64
Epoch int16
Train_Loss float64
Train_Acc float64
Val_Loss float64
Val_Acc float64
dtype: object
# 数据重塑
df3= pd.melt(df,id_vars=["Unnamed: 0","Epoch"],var_name="指标",value_name="分数")
print(df3.sort_values("Epoch")) # 宽表转化为长表
Unnamed: 0 Epoch 指标 分数
0 0 1 Train_Loss 1.378301
90 0 1 Val_Acc 0.595600
60 0 1 Val_Loss 1.138243
30 0 1 Train_Acc 0.496378
91 1 2 Val_Acc 0.702600
.. ... ... ... ...
28 28 29 Train_Loss 0.101621
59 29 30 Train_Acc 0.965889
29 29 30 Train_Loss 0.094147
89 29 30 Val_Loss 0.331762
119 29 30 Val_Acc 0.902800
[120 rows x 4 columns]
# 长表转宽表
print(pd.pivot(df3,index=["Unnamed: 0","Epoch"],columns="指标",values="分数"))
指标 Train_Acc Train_Loss Val_Acc Val_Loss
Unnamed: 0 Epoch
0 1 0.496378 1.378301 0.5956 1.138243
1 2 0.673756 0.913497 0.7026 0.876917
2 3 0.748956 0.714228 0.7590 0.672718
3 4 0.792978 0.598144 0.7864 0.625913
4 5 0.817778 0.527811 0.8182 0.536250
5 6 0.835600 0.473939 0.8072 0.582652
6 7 0.848644 0.432094 0.8388 0.468109
7 8 0.864111 0.393686 0.8552 0.429461
8 9 0.876356 0.356874 0.8360 0.500846
9 10 0.883822 0.333076 0.8488 0.446606
10 11 0.891867 0.310424 0.8662 0.395992
11 12 0.900867 0.284330 0.8714 0.395248
12 13 0.904689 0.267211 0.8512 0.466472
13 14 0.912067 0.252369 0.8788 0.357027
14 15 0.920222 0.225934 0.8886 0.326612
15 16 0.924067 0.215926 0.8930 0.329903
16 17 0.930667 0.200772 0.8770 0.407676
17 18 0.932378 0.191555 0.8890 0.344014
18 19 0.936844 0.177961 0.8850 0.362166
19 20 0.940867 0.170277 0.8990 0.306026
20 21 0.944289 0.158309 0.8664 0.448888
21 22 0.948644 0.145230 0.9014 0.330578
22 23 0.951489 0.137505 NaN 0.321336
23 24 0.952511 0.133425 0.8928 0.363670
24 25 0.956467 0.123354 0.8836 0.411105
25 26 0.957178 0.120446 0.9038 0.335317
26 27 0.960667 0.111692 0.8964 0.400440
27 28 0.963289 NaN 0.8998 0.381005
28 29 0.964067 0.101621 0.8988 NaN
29 30 0.965889 0.094147 0.9028 0.331762
# 数据分箱 pd.cut(x,bins,labels)
df1 = df.head(10)[["Epoch","Train_Loss"]]
print(df1)
Epoch Train_Loss
0 1 1.378301
1 2 0.913497
2 3 0.714228
3 4 0.598144
4 5 0.527811
5 6 0.473939
6 7 0.432094
7 8 0.393686
8 9 0.356874
9 10 0.333076
pd.cut(df1["Train_Loss"],bins = 2) # bins=n,分成n段区间,起始值和结束值取的数据的最小值和最大值
0 (0.856, 1.378]
1 (0.856, 1.378]
2 (0.332, 0.856]
3 (0.332, 0.856]
4 (0.332, 0.856]
5 (0.332, 0.856]
6 (0.332, 0.856]
7 (0.332, 0.856]
8 (0.332, 0.856]
9 (0.332, 0.856]
Name: Train_Loss, dtype: category
Categories (2, interval[float64, right]): [(0.332, 0.856] < (0.856, 1.378]]
pd.cut(df1["Train_Loss"],bins = 3).value_counts()
Train_Loss
(0.332, 0.681] 7
(0.681, 1.03] 2
(1.03, 1.378] 1
Name: count, dtype: int64
pd.cut(df1["Train_Loss"],bins = [0,0.4,0.8,1.5]) # bins = list,分成n段
0 (0.8, 1.5]
1 (0.8, 1.5]
2 (0.4, 0.8]
3 (0.4, 0.8]
4 (0.4, 0.8]
5 (0.4, 0.8]
6 (0.4, 0.8]
7 (0.0, 0.4]
8 (0.0, 0.4]
9 (0.0, 0.4]
Name: Train_Loss, dtype: category
Categories (3, interval[float64, right]): [(0.0, 0.4] < (0.4, 0.8] < (0.8, 1.5]]
pd.cut(df1["Train_Loss"],bins = [0,0.4,0.8,1.5],labels=["低","中","高"])
0 高
1 高
2 中
3 中
4 中
5 中
6 中
7 低
8 低
9 低
Name: Train_Loss, dtype: category
Categories (3, object): ['低' < '中' < '高']
df1["损失函数"]=pd.cut(df1["Train_Loss"],bins = [0,0.4,0.8,1.5],labels=["低","中","高"])
df1
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
|
Epoch |
Train_Loss |
损失函数 |
| 0 |
1 |
1.378301 |
高 |
| 1 |
2 |
0.913497 |
高 |
| 2 |
3 |
0.714228 |
中 |
| 3 |
4 |
0.598144 |
中 |
| 4 |
5 |
0.527811 |
中 |
| 5 |
6 |
0.473939 |
中 |
| 6 |
7 |
0.432094 |
中 |
| 7 |
8 |
0.393686 |
低 |
| 8 |
9 |
0.356874 |
低 |
| 9 |
10 |
0.333076 |
低 |
pd.qcut(df1["Train_Loss"],3).value_counts() # 等频率划分
Train_Loss
(0.598, 1.378] 4
(0.332, 0.432] 3
(0.432, 0.598] 3
Name: count, dtype: int64
#df.rename(),df.set_index(),df.reset_index()
df1.set_index("Epoch",inplace=True)
print(df1) # 直接设置epoch为索引
df1.reset_index(inplace=True)
print(df1) # 重置
Train_Loss 损失函数
Epoch
1 1.378301 高
2 0.913497 高
3 0.714228 中
4 0.598144 中
5 0.527811 中
6 0.473939 中
7 0.432094 中
8 0.393686 低
9 0.356874 低
10 0.333076 低
Epoch Train_Loss 损失函数
0 1 1.378301 高
1 2 0.913497 高
2 3 0.714228 中
3 4 0.598144 中
4 5 0.527811 中
5 6 0.473939 中
6 7 0.432094 中
7 8 0.393686 低
8 9 0.356874 低
9 10 0.333076 低
df1.rename(columns={"Train_Loss":"准确率"})
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
|
Epoch |
准确率 |
损失函数 |
| 0 |
1 |
1.378301 |
高 |
| 1 |
2 |
0.913497 |
高 |
| 2 |
3 |
0.714228 |
中 |
| 3 |
4 |
0.598144 |
中 |
| 4 |
5 |
0.527811 |
中 |
| 5 |
6 |
0.473939 |
中 |
| 6 |
7 |
0.432094 |
中 |
| 7 |
8 |
0.393686 |
低 |
| 8 |
9 |
0.356874 |
低 |
| 9 |
10 |
0.333076 |
低 |
# 时间数据处理
d = pd.Timestamp('2015-05-02 10:22')
print(d)
print("年",d.year)
print("季度",d.quarter)
2015-05-02 10:22:00
年 2015
季度 2
print("是否是月底",d.is_month_end)
是否是月底 False
# 方法
print("星期几",d.day_name())
星期几 Saturday
print("转化为天",d.to_period("D"))
print("转化为季度",d.to_period("Q"))
转化为天 2015-05-02
转化为季度 2015Q2
# 字符串转换为日期类型
a = pd.to_datetime('20150225')
print(a)
2015-02-25 00:00:00
# 时间间隔
d1 = pd.Timestamp('2013-01-15')
d2 = pd.Timestamp('2023-02-18')
d3 = d2-d1
print(d3)
3686 days 00:00:00
# 创建时间序列
days = pd.date_range("2025-07-03",'2026-02-09',freq='W')
print(days)
DatetimeIndex(['2025-07-06', '2025-07-13', '2025-07-20', '2025-07-27',
'2025-08-03', '2025-08-10', '2025-08-17', '2025-08-24',
'2025-08-31', '2025-09-07', '2025-09-14', '2025-09-21',
'2025-09-28', '2025-10-05', '2025-10-12', '2025-10-19',
'2025-10-26', '2025-11-02', '2025-11-09', '2025-11-16',
'2025-11-23', '2025-11-30', '2025-12-07', '2025-12-14',
'2025-12-21', '2025-12-28', '2026-01-04', '2026-01-11',
'2026-01-18', '2026-01-25', '2026-02-01', '2026-02-08'],
dtype='datetime64[ns]', freq='W-SUN')
days = pd.date_range("2025-07-03",periods=10,freq='W')
print(days)
DatetimeIndex(['2025-07-06', '2025-07-13', '2025-07-20', '2025-07-27',
'2025-08-03', '2025-08-10', '2025-08-17', '2025-08-24',
'2025-08-31', '2025-09-07'],
dtype='datetime64[ns]', freq='W-SUN')
# 分组聚合
# df.groupby('分组的字段')['聚合的字段'].聚合函数()