Why is it most of the time (in many websites, articles or demonstration) the feature variable (columns) is denoted by a upper-case 'X' whereas the target variable is a lower-case 'y'?

Looks more like a coding standard to me.
Ex.

```
X = df.iloc[:, :-1]
y = df.iloc[:, -1]

```

Just curious because I hardly ever use just a single letter to represent a variable storing meaningful data.