jeudi 26 août 2010

INSEE sources...

Déjà eu envie de se refaire les stats de l'INSEE à la pogne ?
Non ? moi non plus, mais on trouve quand même leurs fichiers en ligne pour exploitation éventuelle :-P


Fichier INDIVIDU, MENAGE et KISH


Il y aurait surement des utilisations intéressantes à en faire.


Pour ce qui est de leur analyse, c'est du dBase, je cite ci dessous l'article de Bodman publié ici (lien).


Base de donnée de l’INSEE
janvier 24, 2010

Un peu de Datamining aujourd’hui, quelque chose de très court, mais qui sera sans doute utile à certain.

Cela concerne la lecture de fichier dBase, car sachons le l’INSEE met à disposition un certain nombre de données au format dBase.

Le premier réflexe face à ce genre de fichier serait de l’ouvrir avec un tableur et d’en sortir directement les valeurs nécessaires. Malheureusement, deux problèmes se posent, la lenteur du programme face à des fichiers de très grande taille, et la limite des tableurs en nombre de lignes.

Pourtant, il existe une méthode bien plus rapide (et bien plus fun !), l’utilisation d’un script, pour lire ces fichiers volumineux comme on l’entend.

Pour cela j’ai choisi le langage PHP. Cela faisait longtemps que je n’avais pas joué avec et puis en plus il dispose déjà de fonctions adaptées à la lecture de fichier dbase.

Voici donc un petit script qui va extraire les catégories socioprofessionnelles (niveau 1) pour un échantillon de 130 000 valeurs :

$CODE[1] = "Agriculteurs exploitants";
$CODE[2] = "Artisans, commerçants et chefs d'entreprise";
$CODE[3] = "Cadres et professions intellectuelles supérieures";
$CODE[4] = "Professions Intermédiaires";
$CODE[5] = "Employés";
$CODE[6] = "Ouvriers";
$CODE[7] = "Retraités";
$CODE[8] = "Autres personnes sans activité professionnelle";

function percent($v,$t) {
return round((( $v / $t ) * 100),2);
}


$db = dbase_open('epcvhf10_in109604.dbf', 0);
if ($db) {
echo("lecture des données possible\n");
$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) {
$row = dbase_get_record_with_names($db, $i);
$cs = trim($row['CS']);
$occupation = trim($row['OCCUPA']);
$age = trim($row['AGE']);
if ( ($occupation == 5 ) or ( $occupation == 6 ) ) $cs = 7;
if ( $age > 14 )
if ($cs != 99 && $cs != '' )
{
$vn1 = substr($cs, 0 , 1 );
if (!isset($n1[$vn1])) $n1[$vn1] = 0;
$n1[$vn1[0]]++;
$population++;
}
}
dbase_close($db);
foreach ( $n1 as $clef => $nombre )
{
echo percent($nombre ,$population) . " : " . $CODE[$clef] . "\n";
}

Une autre fonction interessant dbase_get_header_info($db), permet de récupérer les champs disponibles dans la base.

Aucun commentaire:

Enregistrer un commentaire