小yo 博客

Back

Python数据分析-数据分析方法

数据导入与导出

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('分组的字段')['聚合的字段'].聚合函数()
Python数据分析-数据分析方法
https://smallyo.top/blog/a5356b7a18dfdd9a
Author小yo
Published atNovember 30, 2025