https://www.guru99.com/python-pandas-tutorial.html
import numpy as np
import pandas as pd
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
a 1.0 b 2.0 c 3.0 dtype: float64
pd.Series([1,2,np.nan])
0 1.0 1 2.0 2 NaN dtype: float64
## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]]
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)
Data Frame: 0 1 0 1 2 1 3 4
## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Numpy array: [[1 2] [3 4]]
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Name | Age | |
|---|---|---|
| 0 | John | 30 |
| 1 | Smith | 40 |
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04',
'2030-01-05', '2030-01-06'],
dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30',
'2030-05-31', '2030-06-30'],
dtype='datetime64[ns]', freq='M')
random = np.random.randn(6,4)
# Create data with date
df = pd.DataFrame(random,
index=dates_m,
columns=list('ABCD'))
df.head(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | 0.470902 | -0.697177 | -1.576668 | -0.091692 |
| 2030-02-28 | 0.109920 | 1.391333 | -0.305348 | -0.075809 |
| 2030-03-31 | 0.859818 | 0.857116 | -2.080500 | -0.731118 |
df.tail(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-04-30 | -0.710085 | 0.134623 | -1.329340 | 0.480398 |
| 2030-05-31 | -0.428340 | 0.131123 | -0.097111 | 0.122400 |
| 2030-06-30 | -1.718539 | 0.505573 | -0.537040 | 0.531134 |
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| count | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| mean | -0.236054 | 0.387098 | -0.987668 | 0.039219 |
| std | 0.925187 | 0.713913 | 0.789894 | 0.462023 |
| min | -1.718539 | -0.697177 | -2.080500 | -0.731118 |
| 25% | -0.639649 | 0.131998 | -1.514836 | -0.087721 |
| 50% | -0.159210 | 0.320098 | -0.933190 | 0.023295 |
| 75% | 0.380656 | 0.769230 | -0.363271 | 0.390898 |
| max | 0.859818 | 1.391333 | -0.097111 | 0.531134 |
## Slice
### Using name
df['A']
2030-01-31 0.470902 2030-02-28 0.109920 2030-03-31 0.859818 2030-04-30 -0.710085 2030-05-31 -0.428340 2030-06-30 -1.718539 Freq: M, Name: A, dtype: float64
df[['A', 'B']]
| A | B | |
|---|---|---|
| 2030-01-31 | 0.470902 | -0.697177 |
| 2030-02-28 | 0.109920 | 1.391333 |
| 2030-03-31 | 0.859818 | 0.857116 |
| 2030-04-30 | -0.710085 | 0.134623 |
| 2030-05-31 | -0.428340 | 0.131123 |
| 2030-06-30 | -1.718539 | 0.505573 |
### using a slice for row
df[0:3]
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | 0.470902 | -0.697177 | -1.576668 | -0.091692 |
| 2030-02-28 | 0.109920 | 1.391333 | -0.305348 | -0.075809 |
| 2030-03-31 | 0.859818 | 0.857116 | -2.080500 | -0.731118 |
## Multi col
df.loc[:,['A','B']]
| A | B | |
|---|---|---|
| 2030-01-31 | 0.470902 | -0.697177 |
| 2030-02-28 | 0.109920 | 1.391333 |
| 2030-03-31 | 0.859818 | 0.857116 |
| 2030-04-30 | -0.710085 | 0.134623 |
| 2030-05-31 | -0.428340 | 0.131123 |
| 2030-06-30 | -1.718539 | 0.505573 |
df.iloc[:, :2]
| A | B | |
|---|---|---|
| 2030-01-31 | 0.470902 | -0.697177 |
| 2030-02-28 | 0.109920 | 1.391333 |
| 2030-03-31 | 0.859818 | 0.857116 |
| 2030-04-30 | -0.710085 | 0.134623 |
| 2030-05-31 | -0.428340 | 0.131123 |
| 2030-06-30 | -1.718539 | 0.505573 |
df.drop(columns=['A', 'C'])
| B | D | |
|---|---|---|
| 2030-01-31 | -0.697177 | -0.091692 |
| 2030-02-28 | 1.391333 | -0.075809 |
| 2030-03-31 | 0.857116 | -0.731118 |
| 2030-04-30 | 0.134623 | 0.480398 |
| 2030-05-31 | 0.131123 | 0.122400 |
| 2030-06-30 | 0.505573 | 0.531134 |
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
'Age': ['25', '30', '50']},
index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
'Age': ['26', '11']},
index=[3, 4])
df_concat = pd.concat([df1,df2])
df_concat
| name | Age | |
|---|---|---|
| 0 | John | 25 |
| 1 | Smith | 30 |
| 2 | Paul | 50 |
| 3 | Adam | 26 |
| 4 | Smith | 11 |
df_concat.drop_duplicates('name')
| name | Age | |
|---|---|---|
| 0 | John | 25 |
| 1 | Smith | 30 |
| 2 | Paul | 50 |
| 3 | Adam | 26 |
df_concat.sort_values('Age')
| name | Age | |
|---|---|---|
| 4 | Smith | 11 |
| 0 | John | 25 |
| 3 | Adam | 26 |
| 1 | Smith | 30 |
| 2 | Paul | 50 |
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Surname | Age_ppl | |
|---|---|---|
| 0 | John | 25 |
| 1 | Smith | 30 |
| 2 | Paul | 50 |
| 3 | Adam | 26 |
| 4 | Smith | 11 |