Les biliothèques qui vont être utilisées relèvent de l'écosystème PyData (un groupe d'utilisateurs / de developpeurs et une série de conférences autour de l'analyse de données - ainsi que les bibliothèques comme pandas
et xarray
).
DataFrame
.data.frame
R.Les données proviennent de The Price of Weed website : http://www.priceofweed.com/
Un utilisateur a récupéré les données journalières (491 dates) pour les 51 états américains : https://github.com/frankbi/price-of-weed/
On va regarder comment ouvrir, nettoyer et manipuler ces données avec pandas
# Imports nécessaires
import pandas as pd
import numpy as np
import os
# Lister les fichiers du dossier contenant les données :
files = os.listdir('data/prices')
files
['weedprices13082014.csv', 'weedprices02022015.csv', 'weedprices25052014.csv', 'weedprices08022015.csv', 'weedprices20062015.csv', 'weedprices27082014.csv', 'weedprices22012015.csv', 'weedprices13072014.csv', 'weedprices08062014.csv', 'weedprices10082014.csv', 'weedprices09032014.csv', 'weedprices03012014.csv', 'weedprices31052015.csv', 'weedprices21042014.csv', 'weedprices08092014.csv', 'weedprices12012014.csv', 'weedprices06062014.csv', 'weedprices04072014.csv', 'weedprices10102014.csv', 'weedprices29032014.csv', 'weedprices11012015.csv', 'weedprices18072014.csv', 'weedprices03022014.csv', 'weedprices20042014.csv', 'weedprices29102014.csv', 'weedprices03122014.csv', 'weedprices02022014.csv', 'weedprices18062014.csv', 'weedprices19022014.csv', 'weedprices13022014.csv', 'weedprices07102014.csv', 'weedprices03112014.csv', 'weedprices14022015.csv', 'weedprices27012015.csv', 'weedprices16042014.csv', 'weedprices24032014.csv', 'weedprices11052014.csv', 'weedprices11072014.csv', 'weedprices08062015.csv', 'weedprices04042014.csv', 'weedprices26062014.csv', 'weedprices09112014.csv', 'weedprices10112014.csv', 'weedprices21022014.csv', 'weedprices04022014.csv', 'weedprices06122014.csv', 'weedprices09072015.csv', 'weedprices28102014.csv', 'weedprices25032014.csv', 'weedprices01072014.csv', 'weedprices11032014.csv', 'weedprices09012014.csv', 'weedprices06022014.csv', 'weedprices28062014.csv', 'weedprices23122014.csv', 'weedprices15022015.csv', 'weedprices07042014.csv', 'weedprices17092014.csv', 'weedprices16062015.csv', 'weedprices21062015.csv', 'weedprices17042014.csv', 'weedprices18102014.csv', 'weedprices31032014.csv', 'weedprices07012015.csv', 'weedprices11062014.csv', 'weedprices02072015.csv', 'weedprices14012015.csv', 'weedprices08012015.csv', 'weedprices17082014.csv', 'weedprices18122014.csv', 'weedprices29012014.csv', 'weedprices25062014.csv', 'weedprices11042014.csv', 'weedprices05042014.csv', 'weedprices28042014.csv', 'weedprices11072015.csv', 'weedprices01022014.csv', 'weedprices21122014.csv', 'weedprices15082014.csv', 'weedprices27022014.csv', 'weedprices06012014.csv', 'weedprices25012014.csv', 'weedprices30032014.csv', 'weedprices22072014.csv', 'weedprices22122014.csv', 'weedprices22062015.csv', 'weedprices07052014.csv', 'weedprices24022014.csv', 'weedprices25022014.csv', 'weedprices26092014.csv', 'weedprices16112014.csv', 'weedprices27072014.csv', 'weedprices28082014.csv', 'weedprices19052014.csv', 'weedprices10042014.csv', 'weedprices20052015.csv', 'weedprices22082014.csv', 'weedprices19112014.csv', 'weedprices26102014.csv', 'weedprices24042014.csv', 'weedprices27092014.csv', 'weedprices11102014.csv', 'weedprices28032014.csv', 'weedprices09042014.csv', 'weedprices19012015.csv', 'weedprices04122014.csv', 'weedprices19092014.csv', 'weedprices14022014.csv', 'weedprices26062015.csv', 'weedprices30112014.csv', 'weedprices14102014.csv', 'weedprices10032014.csv', 'weedprices27032014.csv', 'weedprices03072014.csv', 'weedprices06112014.csv', 'weedprices20012015.csv', 'weedprices24072014.csv', 'weedprices27012014.csv', 'weedprices30062014.csv', 'weedprices30042014.csv', 'weedprices21072015.csv', 'weedprices06042014.csv', 'weedprices18052014.csv', 'weedprices14122014.csv', 'weedprices29072014.csv', 'weedprices22022014.csv', 'weedprices18032014.csv', 'weedprices31072014.csv', 'weedprices18112014.csv', 'weedprices29062014.csv', 'weedprices25082014.csv', 'weedprices24012014.csv', 'weedprices25112014.csv', 'weedprices06062015.csv', 'weedprices13032014.csv', 'weedprices05012014.csv', 'weedprices29042014.csv', 'weedprices09022014.csv', 'weedprices17032014.csv', 'weedprices03012015.csv', 'weedprices14062014.csv', 'weedprices25062015.csv', 'weedprices01082014.csv', 'weedprices21052014.csv', 'weedprices21012014.csv', 'weedprices19102014.csv', 'weedprices13062015.csv', 'weedprices16012014.csv', 'weedprices03072015.csv', 'weedprices10092014.csv', 'weedprices20032014.csv', 'weedprices18042014.csv', 'weedprices07072015.csv', 'weedprices01012014.csv', 'weedprices27062014.csv', 'weedprices07022015.csv', 'weedprices07062015.csv', 'weedprices27122013.csv', 'weedprices01052014.csv', 'weedprices08072014.csv', 'weedprices02012015.csv', 'weedprices10012014.csv', 'weedprices04012015.csv', 'weedprices12122014.csv', 'weedprices29122013.csv', 'weedprices08032014.csv', 'weedprices15092014.csv', 'weedprices31012014.csv', 'weedprices06092014.csv', 'weedprices27052015.csv', 'weedprices24012015.csv', 'weedprices29012015.csv', 'weedprices19122014.csv', 'weedprices31012015.csv', 'weedprices11022014.csv', 'weedprices14072015.csv', 'weedprices19032014.csv', 'weedprices10062015.csv', 'weedprices23012015.csv', 'weedprices01022015.csv', 'weedprices30052015.csv', 'weedprices05062014.csv', 'weedprices24092014.csv', 'weedprices28112014.csv', 'weedprices08012014.csv', 'weedprices09052014.csv', 'weedprices12022015.csv', 'weedprices06072015.csv', 'weedprices28052015.csv', 'weedprices16092014.csv', 'weedprices26022014.csv', 'weedprices20062014.csv', 'weedprices25092014.csv', 'weedprices29112014.csv', 'weedprices08052014.csv', 'weedprices19072015.csv', 'weedprices13122014.csv', 'weedprices05112014.csv', 'weedprices12032014.csv', 'weedprices25012015.csv', 'weedprices15062015.csv', 'weedprices07022014.csv', 'weedprices05062015.csv', 'weedprices12052015.csv', 'weedprices03032014.csv', 'weedprices15012015.csv', 'weedprices10062014.csv', 'weedprices28122014.csv', 'weedprices22072015.csv', 'weedprices03052014.csv', 'weedprices01032014.csv', 'weedprices20052014.csv', 'weedprices09092014.csv', 'weedprices28022014.csv', 'weedprices30122013.csv', 'weedprices18082014.csv', 'weedprices29062015.csv', 'weedprices27102014.csv', 'weedprices12092014.csv', 'weedprices29092014.csv', 'weedprices12062014.csv', 'weedprices21062014.csv', 'weedprices22032014.csv', 'weedprices12102014.csv', 'weedprices11082014.csv', 'weedprices04092014.csv', 'weedprices30012014.csv', 'weedprices12072015.csv', 'weedprices14052015.csv', 'weedprices01102014.csv', 'weedprices17072015.csv', 'weedprices08122014.csv', 'weedprices13062014.csv', 'weedprices10022014.csv', 'weedprices02042014.csv', 'weedprices30082014.csv', 'weedprices16062014.csv', 'weedprices27122014.csv', 'weedprices29052015.csv', 'weedprices23032014.csv', 'weedprices09012015.csv', 'weedprices23072015.csv', 'weedprices05022015.csv', 'weedprices19012014.csv', 'weedprices18092014.csv', 'weedprices17122014.csv', 'weedprices02112014.csv', 'weedprices18022014.csv', 'weedprices01062014.csv', 'weedprices05072014.csv', 'weedprices12022014.csv', 'weedprices24062014.csv', 'weedprices15112014.csv', 'weedprices05092014.csv', 'weedprices13012014.csv', 'weedprices11062015.csv', 'weedprices08082014.csv', 'weedprices05122014.csv', 'weedprices04052014.csv', 'weedprices22112014.csv', 'weedprices05052014.csv', 'weedprices01122014.csv', 'weedprices20082014.csv', 'weedprices13112014.csv', 'weedprices28072014.csv', 'weedprices23062015.csv', 'weedprices09062014.csv', 'weedprices23042014.csv', 'weedprices06012015.csv', 'weedprices06032014.csv', 'weedprices13052014.csv', 'weedprices31082014.csv', 'weedprices08112014.csv', 'weedprices02102014.csv', 'weedprices13072015.csv', 'weedprices04032014.csv', 'weedprices04012014.csv', 'weedprices13042014.csv', 'weedprices27042014.csv', 'weedprices23052015.csv', 'weedprices24112014.csv', 'weedprices27112014.csv', 'weedprices22092014.csv', 'weedprices08042014.csv', 'weedprices08022014.csv', 'weedprices28012014.csv', 'weedprices16052015.csv', 'weedprices21082014.csv', 'weedprices22012014.csv', 'weedprices15122014.csv', 'weedprices15042014.csv', 'weedprices05072015.csv', 'weedprices26012015.csv', 'weedprices16012015.csv', 'weedprices07122014.csv', 'weedprices03062014.csv', 'weedprices22062014.csv', 'weedprices17062014.csv', 'weedprices15032014.csv', 'weedprices02092014.csv', 'weedprices13102014.csv', 'weedprices14062015.csv', 'weedprices21112014.csv', 'weedprices23062014.csv', 'weedprices25102014.csv', 'weedprices29052014.csv', 'weedprices05012015.csv', 'weedprices06052014.csv', 'weedprices22052014.csv', 'weedprices30052014.csv', 'weedprices01072015.csv', 'weedprices21072014.csv', 'weedprices30122014.csv', 'weedprices01062015.csv', 'weedprices27062015.csv', 'weedprices07032014.csv', 'weedprices13012015.csv', 'weedprices09072014.csv', 'weedprices07112014.csv', 'weedprices06072014.csv', 'weedprices11112014.csv', 'weedprices28092014.csv', 'weedprices26042014.csv', 'weedprices21012015.csv', 'weedprices02122014.csv', 'weedprices04022015.csv', 'weedprices19052015.csv', 'weedprices26122014.csv', 'weedprices21032014.csv', 'weedprices16022015.csv', 'weedprices07012014.csv', 'weedprices10122014.csv', 'weedprices14112014.csv', 'weedprices11052015.csv', 'weedprices06022015.csv', 'weedprices23102014.csv', 'weedprices31122013.csv', 'weedprices25072014.csv', 'weedprices17102014.csv', 'weedprices30102014.csv', 'weedprices15022014.csv', 'weedprices19072014.csv', 'weedprices16072014.csv', 'weedprices17022014.csv', 'weedprices14082014.csv', 'weedprices14012014.csv', 'weedprices30062015.csv', 'weedprices13092014.csv', 'weedprices20022014.csv', 'weedprices06082014.csv', 'weedprices02062014.csv', 'weedprices10052014.csv', 'weedprices14072014.csv', 'weedprices07062014.csv', 'weedprices02032014.csv', 'weedprices22102014.csv', 'weedprices31052014.csv', 'weedprices16072015.csv', 'weedprices04062014.csv', 'weedprices07082014.csv', 'weedprices24062015.csv', 'weedprices20072014.csv', 'weedprices12042014.csv', 'weedprices04082014.csv', 'weedprices12012015.csv', 'weedprices09082014.csv', 'weedprices23072014.csv', 'weedprices21052015.csv', 'weedprices08102014.csv', 'weedprices18072015.csv', 'weedprices12072014.csv', 'weedprices10012015.csv', 'weedprices15072014.csv', 'weedprices16032014.csv', 'weedprices30092014.csv', 'weedprices06102014.csv', 'weedprices25122014.csv', 'weedprices09022015.csv', 'weedprices05022014.csv', 'weedprices21102014.csv', 'weedprices12082014.csv', 'weedprices23112014.csv', 'weedprices10072014.csv', 'weedprices16122014.csv', 'weedprices14042014.csv', 'weedprices28062015.csv', 'weedprices21092014.csv', 'weedprices13022015.csv', 'weedprices23022014.csv', 'weedprices26032014.csv', 'weedprices17052015.csv', 'weedprices02052014.csv', 'weedprices26112014.csv', 'weedprices15102014.csv', 'weedprices28052014.csv', 'weedprices29082014.csv', 'weedprices10052015.csv', 'weedprices23052014.csv', 'weedprices03082014.csv', 'weedprices19062014.csv', 'weedprices28012015.csv', 'weedprices04112014.csv', 'weedprices13052015.csv', 'weedprices12062015.csv', 'weedprices16022014.csv', 'weedprices11022015.csv', 'weedprices31122014.csv', 'weedprices12112014.csv', 'weedprices24082014.csv', 'weedprices11122014.csv', 'weedprices15062014.csv', 'weedprices16052014.csv', 'weedprices25052015.csv', 'weedprices01042014.csv', 'weedprices09062015.csv', 'weedprices30012015.csv', 'weedprices17062015.csv', 'weedprices03042014.csv', 'weedprices20072015.csv', 'weedprices08072015.csv', 'weedprices20112014.csv', 'weedprices15072015.csv', 'weedprices03022015.csv', 'weedprices30072014.csv', 'weedprices18012014.csv', 'weedprices22042014.csv', 'weedprices05032014.csv', 'weedprices24052014.csv', 'weedprices19062015.csv', 'weedprices05082014.csv', 'weedprices20092014.csv', 'weedprices18052015.csv', 'weedprices04102014.csv', 'weedprices04072015.csv', 'weedprices07072014.csv', 'weedprices03092014.csv', 'weedprices22052015.csv', 'weedprices02062015.csv', 'weedprices09102014.csv', 'weedprices11092014.csv', 'weedprices20012014.csv', 'weedprices18062015.csv', 'weedprices28122013.csv', 'weedprices01092014.csv', 'weedprices17072014.csv', 'weedprices09122014.csv', 'weedprices29122014.csv', 'weedprices10022015.csv', 'weedprices03062015.csv', 'weedprices10072015.csv', 'weedprices23012014.csv', 'weedprices24102014.csv', 'weedprices17012015.csv', 'weedprices26052014.csv', 'weedprices26082014.csv', 'weedprices17112014.csv', 'weedprices01112014.csv', 'weedprices23092014.csv', 'weedprices17052014.csv', 'weedprices31102014.csv', 'weedprices05102014.csv', 'weedprices15052015.csv', 'weedprices07092014.csv', 'weedprices11012014.csv', 'weedprices24052015.csv', 'weedprices25042014.csv', 'weedprices19082014.csv', 'weedprices16082014.csv', 'weedprices26052015.csv', 'weedprices04062015.csv', 'weedprices20122014.csv', 'weedprices01012015.csv', 'weedprices14092014.csv', 'weedprices19042014.csv', 'weedprices12052014.csv', 'weedprices02072014.csv', 'weedprices17012014.csv', 'weedprices27052014.csv', 'weedprices15052014.csv', 'weedprices14032014.csv', 'weedprices16102014.csv', 'weedprices14052014.csv', 'weedprices18012015.csv', 'weedprices20102014.csv', 'weedprices26012014.csv', 'weedprices23082014.csv', 'weedprices26072014.csv', 'weedprices02012014.csv', 'weedprices24122014.csv', 'weedprices15012014.csv', 'weedprices03102014.csv']
# Ouverture du premier fichier pour voir sa structure :
df = pd.read_csv(os.path.join('data', 'prices', files[0]))
df.head()
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | |
---|---|---|---|---|---|---|---|
0 | Alabama | 340.21 | 1391 | 203.97 | 1254 | 145.79 | 160 |
1 | Alaska | 289.81 | 327 | 260.97 | 404 | 403.33 | 33 |
2 | Arizona | 300.50 | 2407 | 209.48 | 2139 | 186.92 | 281 |
3 | Arkansas | 347.19 | 752 | 180.98 | 722 | 126.20 | 134 |
4 | California | 245.33 | 15081 | 191.63 | 16853 | 187.83 | 987 |
# Avant de concaténer les différents fichiers, on devra ajouter la date à chaque de ces fichiers :
date_file = files[0].replace('weedprices', '').replace('.csv', '') # 'weedprices13082014.csv' -> '13082014'
date_file = '-'.join([date_file[:2], date_file[2:4], date_file[4:]]) # '13082014' -> '13-08-2014'
date_file = pd.to_datetime(date_file, dayfirst=True)
df['date'] = date_file
df.head(3)
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
0 | Alabama | 340.21 | 1391 | 203.97 | 1254 | 145.79 | 160 | 2014-08-13 |
1 | Alaska | 289.81 | 327 | 260.97 | 404 | 403.33 | 33 | 2014-08-13 |
2 | Arizona | 300.50 | 2407 | 209.48 | 2139 | 186.92 | 281 | 2014-08-13 |
# On définit une function qui va s'occuper de convertir le nom de fichier en date
def datetime_from_filename(filename):
date_file = filename.replace('weedprices', '').replace('.csv', '')
return pd.to_datetime(
'-'.join([date_file[:2], date_file[2:4], date_file[4:]]),
dayfirst=True
)
# On va concaténer ces DataFrame de manière séquentielle :
dfs = []
for name in files:
df = pd.read_csv(os.path.join('data', 'prices', name))
df['date'] = datetime_from_filename(name)
dfs.append(df)
result = pd.concat(dfs, ignore_index=True)
result.head()
result.tail()
result.dtypes
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
0 | Alabama | 340.21 | 1391 | 203.97 | 1254 | 145.79 | 160 | 2014-08-13 |
1 | Alaska | 289.81 | 327 | 260.97 | 404 | 403.33 | 33 | 2014-08-13 |
2 | Arizona | 300.5 | 2407 | 209.48 | 2139 | 186.92 | 281 | 2014-08-13 |
3 | Arkansas | 347.19 | 752 | 180.98 | 722 | 126.2 | 134 | 2014-08-13 |
4 | California | 245.33 | 15081 | 191.63 | 16853 | 187.83 | 987 | 2014-08-13 |
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
24985 | Virginia | 366.49 | 3216 | 291.63 | 2785 | I feel bad for these guys --> | 262 | 2014-10-03 |
24986 | Washington | 233.19 | 3082 | 189.52 | 3238 | I feel bad for these guys --> | 145 | 2014-10-03 |
24987 | West Virginia | 354.97 | 506 | 216.72 | 494 | I feel bad for these guys --> | 57 | 2014-10-03 |
24988 | Wisconsin | 352.31 | 2073 | 272.68 | 1979 | I feel bad for these guys --> | 153 | 2014-10-03 |
24989 | Wyoming | 328.51 | 119 | 355.77 | 172 | I feel bad for these guys --> | 12 | 2014-10-03 |
State object HighQ object HighQN object MedQ object MedQN object LowQ object LowQN object date datetime64[ns] dtype: object
# Le type des éléments dans ces colones est hétérogène (float, str, d'où la notation 'object')
result['HighQ'] = result['HighQ'].apply(lambda x: float(x.replace('$', '')) if isinstance(x, str) else x)
result['MedQ'] = result['MedQ'].apply(lambda x: float(x.replace('$', '')) if isinstance(x, str) else x)
# Cette colonne contient des valeurs inutilisables, on va les convertir en une valeur
# numérique qui à ce sens : NaN
result['LowQ'] = result['LowQ'].apply(lambda x: x.replace('$', '') if isinstance(x, str) else x)
result['LowQ'] = pd.to_numeric(result['LowQ'], errors='coerce')
# Les autre colonnes contiennent des entiers et ne présentent pas de problèmes
result['HighQN'] = result['HighQN'].astype(int)
result['MedQN'] = result['MedQN'].astype(int)
result['LowQN'] = result['LowQN'].astype(int)
result.head()
result.tail()
result.dtypes
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
0 | Alabama | 340.21 | 1391 | 203.97 | 1254 | 145.79 | 160 | 2014-08-13 |
1 | Alaska | 289.81 | 327 | 260.97 | 404 | 403.33 | 33 | 2014-08-13 |
2 | Arizona | 300.50 | 2407 | 209.48 | 2139 | 186.92 | 281 | 2014-08-13 |
3 | Arkansas | 347.19 | 752 | 180.98 | 722 | 126.20 | 134 | 2014-08-13 |
4 | California | 245.33 | 15081 | 191.63 | 16853 | 187.83 | 987 | 2014-08-13 |
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
24985 | Virginia | 366.49 | 3216 | 291.63 | 2785 | NaN | 262 | 2014-10-03 |
24986 | Washington | 233.19 | 3082 | 189.52 | 3238 | NaN | 145 | 2014-10-03 |
24987 | West Virginia | 354.97 | 506 | 216.72 | 494 | NaN | 57 | 2014-10-03 |
24988 | Wisconsin | 352.31 | 2073 | 272.68 | 1979 | NaN | 153 | 2014-10-03 |
24989 | Wyoming | 328.51 | 119 | 355.77 | 172 | NaN | 12 | 2014-10-03 |
State object HighQ float64 HighQN int64 MedQ float64 MedQN int64 LowQ float64 LowQN int64 date datetime64[ns] dtype: object
# Obtenir des lignes spécifiques :
result[2:4]
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
2 | Arizona | 300.50 | 2407 | 209.48 | 2139 | 186.92 | 281 | 2014-08-13 |
3 | Arkansas | 347.19 | 752 | 180.98 | 722 | 126.20 | 134 | 2014-08-13 |
# Obtenir une colonne :
result['State']
0 Alabama 1 Alaska 2 Arizona 3 Arkansas 4 California 5 Colorado 6 Connecticut 7 Delaware 8 District of Columbia 9 Florida 10 Georgia 11 Hawaii 12 Idaho 13 Illinois 14 Indiana 15 Iowa 16 Kansas 17 Kentucky 18 Louisiana 19 Maine 20 Montana 21 Nebraska 22 Nevada 23 New Hampshire 24 New Jersey 25 New Mexico 26 New York 27 North Carolina 28 North Dakota 29 Ohio ... 24960 Nebraska 24961 Nevada 24962 New Hampshire 24963 New Jersey 24964 New Mexico 24965 New York 24966 North Carolina 24967 North Dakota 24968 Ohio 24969 Oklahoma 24970 Oregon 24971 Maryland 24972 Massachusetts 24973 Michigan 24974 Minnesota 24975 Mississippi 24976 Missouri 24977 Pennsylvania 24978 Rhode Island 24979 South Carolina 24980 South Dakota 24981 Tennessee 24982 Texas 24983 Utah 24984 Vermont 24985 Virginia 24986 Washington 24987 West Virginia 24988 Wisconsin 24989 Wyoming Name: State, Length: 24990, dtype: object
result.loc[0]
State Alabama HighQ 340.21 HighQN 1391 MedQ 203.97 MedQN 1254 LowQ 145.79 LowQN 160 date 2014-08-13 00:00:00 Name: 0, dtype: object
# Index et nom de colonne
result.loc[0, 'State']
'Alabama'
# Index et index de colonne
result.iloc[0, 0]
'Alabama'
# Sélection de lignes où le prix pour l'Alabama est inférieur à 340$ pour la plus haute qualité
# - en utilisant l'indexation booléenne et la combinaison des deux critères
result[(result.State == 'Alabama') & (result.HighQ < 340.0)]
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
51 | Alabama | 335.86 | 1584 | 209.19 | 1525 | NaN | 193 | 2015-02-02 |
153 | Alabama | 335.45 | 1592 | 209.87 | 1542 | NaN | 195 | 2015-02-08 |
204 | Alabama | 337.40 | 1890 | 206.12 | 1808 | NaN | 218 | 2015-06-20 |
306 | Alabama | 336.04 | 1573 | 209.45 | 1506 | NaN | 188 | 2015-01-22 |
561 | Alabama | 339.20 | 1043 | 198.64 | 933 | 148.48 | 124 | 2014-01-03 |
612 | Alabama | 337.29 | 1888 | 206.17 | 1805 | NaN | 218 | 2015-05-31 |
918 | Alabama | 339.36 | 1430 | 204.52 | 1318 | NaN | 164 | 2014-10-10 |
1020 | Alabama | 336.91 | 1553 | 209.09 | 1478 | NaN | 184 | 2015-01-11 |
1122 | Alabama | 339.16 | 1100 | 200.16 | 987 | 152.02 | 129 | 2014-02-03 |
1224 | Alabama | 338.62 | 1448 | 205.01 | 1342 | NaN | 171 | 2014-10-29 |
1275 | Alabama | 339.55 | 1497 | 205.81 | 1401 | NaN | 179 | 2014-12-03 |
1326 | Alabama | 338.87 | 1097 | 199.89 | 985 | 152.02 | 129 | 2014-02-02 |
1479 | Alabama | 339.87 | 1119 | 201.16 | 1005 | 146.19 | 131 | 2014-02-13 |
1530 | Alabama | 339.36 | 1430 | 204.39 | 1315 | NaN | 164 | 2014-10-07 |
1581 | Alabama | 339.31 | 1455 | 204.56 | 1350 | NaN | 172 | 2014-11-03 |
1632 | Alabama | 335.45 | 1602 | 209.86 | 1553 | NaN | 197 | 2015-02-14 |
1683 | Alabama | 335.79 | 1578 | 209.00 | 1519 | NaN | 193 | 2015-01-27 |
1938 | Alabama | 337.32 | 1889 | 206.09 | 1807 | NaN | 218 | 2015-06-08 |
2091 | Alabama | 339.21 | 1464 | 204.36 | 1360 | NaN | 174 | 2014-11-09 |
2142 | Alabama | 339.42 | 1467 | 204.52 | 1362 | NaN | 174 | 2014-11-10 |
2244 | Alabama | 339.20 | 1102 | 201.10 | 991 | 152.02 | 129 | 2014-02-04 |
2295 | Alabama | 339.23 | 1501 | 205.62 | 1407 | NaN | 180 | 2014-12-06 |
2346 | Alabama | 337.78 | 1895 | 206.29 | 1812 | NaN | 218 | 2015-07-09 |
2397 | Alabama | 338.62 | 1448 | 204.95 | 1340 | NaN | 171 | 2014-10-28 |
2652 | Alabama | 339.81 | 1106 | 200.68 | 995 | 152.02 | 129 | 2014-02-06 |
2754 | Alabama | 339.06 | 1526 | 207.77 | 1443 | NaN | 181 | 2014-12-23 |
2805 | Alabama | 335.27 | 1606 | 209.74 | 1554 | NaN | 197 | 2015-02-15 |
2958 | Alabama | 337.32 | 1889 | 206.12 | 1808 | NaN | 218 | 2015-06-16 |
3009 | Alabama | 337.40 | 1890 | 206.12 | 1808 | NaN | 218 | 2015-06-21 |
3111 | Alabama | 338.86 | 1436 | 204.34 | 1327 | NaN | 165 | 2014-10-18 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
22185 | Alabama | 337.63 | 1873 | 206.38 | 1800 | NaN | 216 | 2015-05-22 |
22236 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-02 |
22287 | Alabama | 339.36 | 1430 | 204.39 | 1315 | NaN | 164 | 2014-10-09 |
22440 | Alabama | 337.32 | 1889 | 206.12 | 1808 | NaN | 218 | 2015-06-18 |
22491 | Alabama | 339.65 | 1033 | 198.04 | 926 | 147.15 | 122 | 2013-12-28 |
22644 | Alabama | 339.28 | 1508 | 205.76 | 1415 | NaN | 180 | 2014-12-09 |
22695 | Alabama | 338.38 | 1534 | 207.75 | 1455 | NaN | 182 | 2014-12-29 |
22746 | Alabama | 335.48 | 1594 | 210.05 | 1546 | NaN | 196 | 2015-02-10 |
22797 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-03 |
22848 | Alabama | 337.90 | 1896 | 206.23 | 1813 | NaN | 218 | 2015-07-10 |
22899 | Alabama | 339.13 | 1076 | 199.38 | 971 | 152.02 | 129 | 2014-01-23 |
22950 | Alabama | 338.47 | 1444 | 204.63 | 1332 | NaN | 167 | 2014-10-24 |
23001 | Alabama | 336.41 | 1564 | 209.37 | 1495 | NaN | 186 | 2015-01-17 |
23154 | Alabama | 339.11 | 1472 | 205.37 | 1377 | NaN | 177 | 2014-11-17 |
23205 | Alabama | 339.13 | 1453 | 204.81 | 1348 | NaN | 172 | 2014-11-01 |
23358 | Alabama | 338.92 | 1451 | 204.95 | 1347 | NaN | 171 | 2014-10-31 |
23409 | Alabama | 339.52 | 1429 | 204.33 | 1314 | NaN | 163 | 2014-10-05 |
23460 | Alabama | 337.89 | 1836 | 207.01 | 1776 | NaN | 213 | 2015-05-15 |
23613 | Alabama | 337.49 | 1878 | 206.38 | 1800 | NaN | 216 | 2015-05-24 |
23817 | Alabama | 337.21 | 1882 | 206.26 | 1803 | NaN | 217 | 2015-05-26 |
23868 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-04 |
23919 | Alabama | 339.19 | 1520 | 207.10 | 1435 | NaN | 181 | 2014-12-20 |
23970 | Alabama | 337.54 | 1539 | 208.24 | 1463 | NaN | 182 | 2015-01-01 |
24429 | Alabama | 338.86 | 1436 | 204.34 | 1327 | NaN | 165 | 2014-10-16 |
24531 | Alabama | 336.50 | 1565 | 209.30 | 1496 | NaN | 187 | 2015-01-18 |
24582 | Alabama | 338.81 | 1439 | 204.29 | 1328 | NaN | 166 | 2014-10-20 |
24633 | Alabama | 338.95 | 1080 | 199.39 | 972 | 152.02 | 129 | 2014-01-26 |
24786 | Alabama | 339.20 | 1043 | 198.64 | 933 | 149.49 | 123 | 2014-01-02 |
24837 | Alabama | 339.03 | 1527 | 207.77 | 1444 | NaN | 182 | 2014-12-24 |
24939 | Alabama | 339.52 | 1429 | 204.33 | 1312 | NaN | 162 | 2014-10-03 |
256 rows × 8 columns
# Sélection de lignes où le prix pour l'Alabama est inférieur à 340$ pour la plus haute qualité
# - en utilisant l'indexation booléenne et la méthode .eval() pour
# combiner nos 2 critères
result[result.eval('State == "Alabama" and HighQ < 340.0')]
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
51 | Alabama | 335.86 | 1584 | 209.19 | 1525 | NaN | 193 | 2015-02-02 |
153 | Alabama | 335.45 | 1592 | 209.87 | 1542 | NaN | 195 | 2015-02-08 |
204 | Alabama | 337.40 | 1890 | 206.12 | 1808 | NaN | 218 | 2015-06-20 |
306 | Alabama | 336.04 | 1573 | 209.45 | 1506 | NaN | 188 | 2015-01-22 |
561 | Alabama | 339.20 | 1043 | 198.64 | 933 | 148.48 | 124 | 2014-01-03 |
612 | Alabama | 337.29 | 1888 | 206.17 | 1805 | NaN | 218 | 2015-05-31 |
918 | Alabama | 339.36 | 1430 | 204.52 | 1318 | NaN | 164 | 2014-10-10 |
1020 | Alabama | 336.91 | 1553 | 209.09 | 1478 | NaN | 184 | 2015-01-11 |
1122 | Alabama | 339.16 | 1100 | 200.16 | 987 | 152.02 | 129 | 2014-02-03 |
1224 | Alabama | 338.62 | 1448 | 205.01 | 1342 | NaN | 171 | 2014-10-29 |
1275 | Alabama | 339.55 | 1497 | 205.81 | 1401 | NaN | 179 | 2014-12-03 |
1326 | Alabama | 338.87 | 1097 | 199.89 | 985 | 152.02 | 129 | 2014-02-02 |
1479 | Alabama | 339.87 | 1119 | 201.16 | 1005 | 146.19 | 131 | 2014-02-13 |
1530 | Alabama | 339.36 | 1430 | 204.39 | 1315 | NaN | 164 | 2014-10-07 |
1581 | Alabama | 339.31 | 1455 | 204.56 | 1350 | NaN | 172 | 2014-11-03 |
1632 | Alabama | 335.45 | 1602 | 209.86 | 1553 | NaN | 197 | 2015-02-14 |
1683 | Alabama | 335.79 | 1578 | 209.00 | 1519 | NaN | 193 | 2015-01-27 |
1938 | Alabama | 337.32 | 1889 | 206.09 | 1807 | NaN | 218 | 2015-06-08 |
2091 | Alabama | 339.21 | 1464 | 204.36 | 1360 | NaN | 174 | 2014-11-09 |
2142 | Alabama | 339.42 | 1467 | 204.52 | 1362 | NaN | 174 | 2014-11-10 |
2244 | Alabama | 339.20 | 1102 | 201.10 | 991 | 152.02 | 129 | 2014-02-04 |
2295 | Alabama | 339.23 | 1501 | 205.62 | 1407 | NaN | 180 | 2014-12-06 |
2346 | Alabama | 337.78 | 1895 | 206.29 | 1812 | NaN | 218 | 2015-07-09 |
2397 | Alabama | 338.62 | 1448 | 204.95 | 1340 | NaN | 171 | 2014-10-28 |
2652 | Alabama | 339.81 | 1106 | 200.68 | 995 | 152.02 | 129 | 2014-02-06 |
2754 | Alabama | 339.06 | 1526 | 207.77 | 1443 | NaN | 181 | 2014-12-23 |
2805 | Alabama | 335.27 | 1606 | 209.74 | 1554 | NaN | 197 | 2015-02-15 |
2958 | Alabama | 337.32 | 1889 | 206.12 | 1808 | NaN | 218 | 2015-06-16 |
3009 | Alabama | 337.40 | 1890 | 206.12 | 1808 | NaN | 218 | 2015-06-21 |
3111 | Alabama | 338.86 | 1436 | 204.34 | 1327 | NaN | 165 | 2014-10-18 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
22185 | Alabama | 337.63 | 1873 | 206.38 | 1800 | NaN | 216 | 2015-05-22 |
22236 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-02 |
22287 | Alabama | 339.36 | 1430 | 204.39 | 1315 | NaN | 164 | 2014-10-09 |
22440 | Alabama | 337.32 | 1889 | 206.12 | 1808 | NaN | 218 | 2015-06-18 |
22491 | Alabama | 339.65 | 1033 | 198.04 | 926 | 147.15 | 122 | 2013-12-28 |
22644 | Alabama | 339.28 | 1508 | 205.76 | 1415 | NaN | 180 | 2014-12-09 |
22695 | Alabama | 338.38 | 1534 | 207.75 | 1455 | NaN | 182 | 2014-12-29 |
22746 | Alabama | 335.48 | 1594 | 210.05 | 1546 | NaN | 196 | 2015-02-10 |
22797 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-03 |
22848 | Alabama | 337.90 | 1896 | 206.23 | 1813 | NaN | 218 | 2015-07-10 |
22899 | Alabama | 339.13 | 1076 | 199.38 | 971 | 152.02 | 129 | 2014-01-23 |
22950 | Alabama | 338.47 | 1444 | 204.63 | 1332 | NaN | 167 | 2014-10-24 |
23001 | Alabama | 336.41 | 1564 | 209.37 | 1495 | NaN | 186 | 2015-01-17 |
23154 | Alabama | 339.11 | 1472 | 205.37 | 1377 | NaN | 177 | 2014-11-17 |
23205 | Alabama | 339.13 | 1453 | 204.81 | 1348 | NaN | 172 | 2014-11-01 |
23358 | Alabama | 338.92 | 1451 | 204.95 | 1347 | NaN | 171 | 2014-10-31 |
23409 | Alabama | 339.52 | 1429 | 204.33 | 1314 | NaN | 163 | 2014-10-05 |
23460 | Alabama | 337.89 | 1836 | 207.01 | 1776 | NaN | 213 | 2015-05-15 |
23613 | Alabama | 337.49 | 1878 | 206.38 | 1800 | NaN | 216 | 2015-05-24 |
23817 | Alabama | 337.21 | 1882 | 206.26 | 1803 | NaN | 217 | 2015-05-26 |
23868 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-04 |
23919 | Alabama | 339.19 | 1520 | 207.10 | 1435 | NaN | 181 | 2014-12-20 |
23970 | Alabama | 337.54 | 1539 | 208.24 | 1463 | NaN | 182 | 2015-01-01 |
24429 | Alabama | 338.86 | 1436 | 204.34 | 1327 | NaN | 165 | 2014-10-16 |
24531 | Alabama | 336.50 | 1565 | 209.30 | 1496 | NaN | 187 | 2015-01-18 |
24582 | Alabama | 338.81 | 1439 | 204.29 | 1328 | NaN | 166 | 2014-10-20 |
24633 | Alabama | 338.95 | 1080 | 199.39 | 972 | 152.02 | 129 | 2014-01-26 |
24786 | Alabama | 339.20 | 1043 | 198.64 | 933 | 149.49 | 123 | 2014-01-02 |
24837 | Alabama | 339.03 | 1527 | 207.77 | 1444 | NaN | 182 | 2014-12-24 |
24939 | Alabama | 339.52 | 1429 | 204.33 | 1312 | NaN | 162 | 2014-10-03 |
256 rows × 8 columns
# Sélection de lignes où le prix pour l'Alabama est inférieur à 340$ pour la plus haute qualité
# - en la méthode .query() qui permet de chainer les critères
result.query('State == "Alabama"').query('HighQ < 340.0')
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
51 | Alabama | 335.86 | 1584 | 209.19 | 1525 | NaN | 193 | 2015-02-02 |
153 | Alabama | 335.45 | 1592 | 209.87 | 1542 | NaN | 195 | 2015-02-08 |
204 | Alabama | 337.40 | 1890 | 206.12 | 1808 | NaN | 218 | 2015-06-20 |
306 | Alabama | 336.04 | 1573 | 209.45 | 1506 | NaN | 188 | 2015-01-22 |
561 | Alabama | 339.20 | 1043 | 198.64 | 933 | 148.48 | 124 | 2014-01-03 |
612 | Alabama | 337.29 | 1888 | 206.17 | 1805 | NaN | 218 | 2015-05-31 |
918 | Alabama | 339.36 | 1430 | 204.52 | 1318 | NaN | 164 | 2014-10-10 |
1020 | Alabama | 336.91 | 1553 | 209.09 | 1478 | NaN | 184 | 2015-01-11 |
1122 | Alabama | 339.16 | 1100 | 200.16 | 987 | 152.02 | 129 | 2014-02-03 |
1224 | Alabama | 338.62 | 1448 | 205.01 | 1342 | NaN | 171 | 2014-10-29 |
1275 | Alabama | 339.55 | 1497 | 205.81 | 1401 | NaN | 179 | 2014-12-03 |
1326 | Alabama | 338.87 | 1097 | 199.89 | 985 | 152.02 | 129 | 2014-02-02 |
1479 | Alabama | 339.87 | 1119 | 201.16 | 1005 | 146.19 | 131 | 2014-02-13 |
1530 | Alabama | 339.36 | 1430 | 204.39 | 1315 | NaN | 164 | 2014-10-07 |
1581 | Alabama | 339.31 | 1455 | 204.56 | 1350 | NaN | 172 | 2014-11-03 |
1632 | Alabama | 335.45 | 1602 | 209.86 | 1553 | NaN | 197 | 2015-02-14 |
1683 | Alabama | 335.79 | 1578 | 209.00 | 1519 | NaN | 193 | 2015-01-27 |
1938 | Alabama | 337.32 | 1889 | 206.09 | 1807 | NaN | 218 | 2015-06-08 |
2091 | Alabama | 339.21 | 1464 | 204.36 | 1360 | NaN | 174 | 2014-11-09 |
2142 | Alabama | 339.42 | 1467 | 204.52 | 1362 | NaN | 174 | 2014-11-10 |
2244 | Alabama | 339.20 | 1102 | 201.10 | 991 | 152.02 | 129 | 2014-02-04 |
2295 | Alabama | 339.23 | 1501 | 205.62 | 1407 | NaN | 180 | 2014-12-06 |
2346 | Alabama | 337.78 | 1895 | 206.29 | 1812 | NaN | 218 | 2015-07-09 |
2397 | Alabama | 338.62 | 1448 | 204.95 | 1340 | NaN | 171 | 2014-10-28 |
2652 | Alabama | 339.81 | 1106 | 200.68 | 995 | 152.02 | 129 | 2014-02-06 |
2754 | Alabama | 339.06 | 1526 | 207.77 | 1443 | NaN | 181 | 2014-12-23 |
2805 | Alabama | 335.27 | 1606 | 209.74 | 1554 | NaN | 197 | 2015-02-15 |
2958 | Alabama | 337.32 | 1889 | 206.12 | 1808 | NaN | 218 | 2015-06-16 |
3009 | Alabama | 337.40 | 1890 | 206.12 | 1808 | NaN | 218 | 2015-06-21 |
3111 | Alabama | 338.86 | 1436 | 204.34 | 1327 | NaN | 165 | 2014-10-18 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
22185 | Alabama | 337.63 | 1873 | 206.38 | 1800 | NaN | 216 | 2015-05-22 |
22236 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-02 |
22287 | Alabama | 339.36 | 1430 | 204.39 | 1315 | NaN | 164 | 2014-10-09 |
22440 | Alabama | 337.32 | 1889 | 206.12 | 1808 | NaN | 218 | 2015-06-18 |
22491 | Alabama | 339.65 | 1033 | 198.04 | 926 | 147.15 | 122 | 2013-12-28 |
22644 | Alabama | 339.28 | 1508 | 205.76 | 1415 | NaN | 180 | 2014-12-09 |
22695 | Alabama | 338.38 | 1534 | 207.75 | 1455 | NaN | 182 | 2014-12-29 |
22746 | Alabama | 335.48 | 1594 | 210.05 | 1546 | NaN | 196 | 2015-02-10 |
22797 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-03 |
22848 | Alabama | 337.90 | 1896 | 206.23 | 1813 | NaN | 218 | 2015-07-10 |
22899 | Alabama | 339.13 | 1076 | 199.38 | 971 | 152.02 | 129 | 2014-01-23 |
22950 | Alabama | 338.47 | 1444 | 204.63 | 1332 | NaN | 167 | 2014-10-24 |
23001 | Alabama | 336.41 | 1564 | 209.37 | 1495 | NaN | 186 | 2015-01-17 |
23154 | Alabama | 339.11 | 1472 | 205.37 | 1377 | NaN | 177 | 2014-11-17 |
23205 | Alabama | 339.13 | 1453 | 204.81 | 1348 | NaN | 172 | 2014-11-01 |
23358 | Alabama | 338.92 | 1451 | 204.95 | 1347 | NaN | 171 | 2014-10-31 |
23409 | Alabama | 339.52 | 1429 | 204.33 | 1314 | NaN | 163 | 2014-10-05 |
23460 | Alabama | 337.89 | 1836 | 207.01 | 1776 | NaN | 213 | 2015-05-15 |
23613 | Alabama | 337.49 | 1878 | 206.38 | 1800 | NaN | 216 | 2015-05-24 |
23817 | Alabama | 337.21 | 1882 | 206.26 | 1803 | NaN | 217 | 2015-05-26 |
23868 | Alabama | 337.32 | 1889 | 206.14 | 1806 | NaN | 218 | 2015-06-04 |
23919 | Alabama | 339.19 | 1520 | 207.10 | 1435 | NaN | 181 | 2014-12-20 |
23970 | Alabama | 337.54 | 1539 | 208.24 | 1463 | NaN | 182 | 2015-01-01 |
24429 | Alabama | 338.86 | 1436 | 204.34 | 1327 | NaN | 165 | 2014-10-16 |
24531 | Alabama | 336.50 | 1565 | 209.30 | 1496 | NaN | 187 | 2015-01-18 |
24582 | Alabama | 338.81 | 1439 | 204.29 | 1328 | NaN | 166 | 2014-10-20 |
24633 | Alabama | 338.95 | 1080 | 199.39 | 972 | 152.02 | 129 | 2014-01-26 |
24786 | Alabama | 339.20 | 1043 | 198.64 | 933 | 149.49 | 123 | 2014-01-02 |
24837 | Alabama | 339.03 | 1527 | 207.77 | 1444 | NaN | 182 | 2014-12-24 |
24939 | Alabama | 339.52 | 1429 | 204.33 | 1312 | NaN | 162 | 2014-10-03 |
256 rows × 8 columns
# Export au format CSV pour le réutiliser par la suite :
result.to_csv('data/weed_prices.csv', index=False)
Seaborn propose une API de haut-niveau (basée sur matplotlib en interne) permettant d'utiliser directement des DataFrame
de pandas.
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['figure.figsize'] = (12, 10)
# En continuant d'utiliser les données ouvertes précédemment..
# représentons l'évolution du prix en Californie
df_cal = result[result["State"] == "California"]
df_cal.head()
df_cal.plot(x = "date", y = "HighQ") # plot est ici une méthode de l'objet DataFrame
State | HighQ | HighQN | MedQ | MedQN | LowQ | LowQN | date | |
---|---|---|---|---|---|---|---|---|
4 | California | 245.33 | 15081 | 191.63 | 16853 | 187.83 | 987 | 2014-08-13 |
55 | California | 243.29 | 16916 | 188.94 | 19780 | NaN | 1123 | 2015-02-02 |
106 | California | 245.76 | 14084 | 192.30 | 15463 | 190.09 | 918 | 2014-05-25 |
157 | California | 243.13 | 16995 | 188.86 | 19889 | NaN | 1133 | 2015-02-08 |
208 | California | 241.93 | 18504 | 187.89 | 22036 | NaN | 1232 | 2015-06-20 |
<matplotlib.axes._subplots.AxesSubplot at 0x7f29af44a6a0>
# Pour les 3 catégories ?
df_cal[["HighQ", "MedQ", "LowQ", "date"]].plot(x='date')
<matplotlib.axes._subplots.AxesSubplot at 0x7f29af475978>
# Sous forme de boite à moustache
df_cal[["HighQ", "MedQ", "LowQ"]].plot(kind = "box", figsize=(6,6))
<matplotlib.axes._subplots.AxesSubplot at 0x7f29af912f28>
# En utilisant directement l'API de Seaborn
sns.boxplot(data=df_cal[["HighQ", "MedQ", "LowQ"]], palette='Set3')
<matplotlib.axes._subplots.AxesSubplot at 0x7f29af7c0f60>
# Seaborn propose de tracer assez facilement d'autres types de graphiques:
sns.jointplot(data=df_cal, x='HighQ', y='MedQ', kind="reg")
/usr/local/lib/python3.6/dist-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result. return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval
<seaborn.axisgrid.JointGrid at 0x7f29af5c4a58>
iris = sns.load_dataset("iris")
g = sns.jointplot("petal_length", "sepal_length", data=iris, color='g',
marginal_kws=dict(bins=15, rug=True),
s=40, edgecolor="w", linewidth=1, size=8)
/usr/local/lib/python3.6/dist-packages/seaborn/axisgrid.py:2262: UserWarning: The `size` paramter has been renamed to `height`; please update your code. warnings.warn(msg, UserWarning)
import numpy as np
import pandas as pd
import seaborn as sns
import xarray as xr
times = pd.date_range('2000-01-01', '2001-12-31', name='time')
annual_cycle = np.sin(2 * np.pi * (times.dayofyear.values / 365.25 - 0.28))
base = 10 + 15 * annual_cycle.reshape(-1, 1)
tmin_values = base + 3 * np.random.randn(annual_cycle.size, 3)
tmax_values = base + 10 + 3 * np.random.randn(annual_cycle.size, 3)
# Un `DataSet` de xarray :
ds = xr.Dataset({
'tmin': (('time', 'location'), tmin_values),
'tmax': (('time', 'location'), tmax_values)
}, {
'time': times, 'location': ['IA', 'IN', 'IL'],
})
# Conversion d'une dimension en DataFrame
# pour afficher avec Seaborn :
ds.mean(dim='location').to_dataframe().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f29af6e8780>
## Risque de gel selon le mois et la localité :
freeze = (ds['tmin'] <= 0).groupby('time.month').mean('time')
freeze.to_pandas().plot(title="Risque de gel selon le mois de l'année")
<matplotlib.axes._subplots.AxesSubplot at 0x7f29af2c0c50>