Gestión de datos con csvkit#
Última modificación: Mayo 16, 2022 | YouTube
Preparación#
[1]:
!mkdir -p /tmp/csvkit_tutorial
%cd /tmp/csvkit_tutorial
!curl -L -O --silent https://raw.githubusercontent.com/wireservice/csvkit/master/examples/realdata/ne_1033_data.xlsx
!in2csv ne_1033_data.xlsx > data.csv
/tmp/csvkit_tutorial
[2]:
!curl -L -O --silent https://raw.githubusercontent.com/wireservice/csvkit/master/examples/realdata/acs2012_5yr_population.csv
[3]:
!csvstat acs2012_5yr_population.csv
1. "fips"
Type of data: Number
Contains null values: False
Unique values: 93
Smallest value: 31001
Largest value: 31185
Sum: 2891649
Mean: 31093
Median: 31093
StDev: 53.981
Most common values: 31001 (1x)
31003 (1x)
31005 (1x)
31007 (1x)
31009 (1x)
2. "name"
Type of data: Text
Contains null values: False
Unique values: 93
Longest value: 23 characters
Most common values: Adams County, NE (1x)
Antelope County, NE (1x)
Arthur County, NE (1x)
Banner County, NE (1x)
Blaine County, NE (1x)
3. "total_population"
Type of data: Number
Contains null values: False
Unique values: 93
Smallest value: 348
Largest value: 518271
Sum: 1827306
Mean: 19648.452
Median: 6294
StDev: 62501.005
Most common values: 31299 (1x)
6655 (1x)
490 (1x)
778 (1x)
584 (1x)
4. "margin_of_error"
Type of data: Number
Contains null values: False
Unique values: 15
Smallest value: 0
Largest value: 115
Sum: 1800
Mean: 19.355
Median: 0
StDev: 37.897
Most common values: 0 (73x)
73 (2x)
114 (2x)
97 (2x)
99 (2x)
Row count: 93
csvjoin#
[4]:
!csvjoin -c fips data.csv acs2012_5yr_population.csv > joined.csv
!head joined.csv
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name,name,total_population,margin_of_error
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299,0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299,0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299,0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299,0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299,0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299,0
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Buffalo County, NE",46330,0
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Buffalo County, NE",46330,0
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Buffalo County, NE",46330,0
[5]:
!csvcut -c county,item_name,total_population joined.csv | csvsort -c total_population | csvlook | head
| county | item_name | total_population |
| ---------- | -------------------------------------------------------------- | ---------------- |
| MCPHERSON | RIFLE,5.56 MILLIMETER | 348 |
| WHEELER | RIFLE,5.56 MILLIMETER | 725 |
| GREELEY | RIFLE,7.62 MILLIMETER | 2,515 |
| GREELEY | RIFLE,7.62 MILLIMETER | 2,515 |
| GREELEY | RIFLE,7.62 MILLIMETER | 2,515 |
| NANCE | RIFLE,5.56 MILLIMETER | 3,730 |
| NANCE | RIFLE,7.62 MILLIMETER | 3,730 |
| NANCE | RIFLE,7.62 MILLIMETER | 3,730 |
csvstack#
[6]:
!curl -L -O --silent https://raw.githubusercontent.com/wireservice/csvkit/master/examples/realdata/ks_1033_data.csv
[7]:
!head ks_1033_data.csv
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name
KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,4/16/2012 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
[8]:
!in2csv ne_1033_data.xlsx > ne_1033_data.csv
[9]:
!head ne_1033_data.csv
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
[10]:
!csvstack ne_1033_data.csv ks_1033_data.csv > region.csv
!head region.csv
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
[11]:
!csvstat -c state,acquisition_cost region.csv
1. "state"
Type of data: Text
Contains null values: False
Unique values: 2
Longest value: 2 characters
Most common values: KS (1575x)
NE (1036x)
8. "acquisition_cost"
Type of data: Number
Contains null values: False
Unique values: 127
Smallest value: 0
Largest value: 658000
Sum: 9440445.91
Mean: 3615.644
Median: 138
StDev: 23730.631
Most common values: 120 (649x)
499 (449x)
138 (311x)
6800 (304x)
58.71 (218x)
Row count: 2611
[12]:
!csvstack -g ne_1033_data.csv ks_1033_data.csv > region.csv
!head region.csv
group,state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name
ne_1033_data.csv,KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1,Each,499,499,4/16/2012 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
ne_1033_data.csv,KS,ALLEN,20001,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1,Each,138,138,5/19/2006 0:00:00,10,WEAPONS,1005,"Guns, through 30 mm"
csvsql y sql2csv#
[13]:
#
# Muestra el comando SQL para crear la tabla
#
!csvsql -i sqlite joined.csv
CREATE TABLE joined (
state VARCHAR NOT NULL,
county VARCHAR NOT NULL,
fips FLOAT NOT NULL,
nsn VARCHAR NOT NULL,
item_name VARCHAR,
quantity FLOAT NOT NULL,
ui VARCHAR NOT NULL,
acquisition_cost FLOAT NOT NULL,
total_cost FLOAT NOT NULL,
ship_date DATE NOT NULL,
federal_supply_category FLOAT NOT NULL,
federal_supply_category_name VARCHAR NOT NULL,
federal_supply_class FLOAT NOT NULL,
federal_supply_class_name VARCHAR NOT NULL,
name VARCHAR NOT NULL,
total_population FLOAT NOT NULL,
margin_of_error FLOAT NOT NULL
);
[14]:
#
# Inserta la tabla en la bd
#
!csvsql --db sqlite:///leso.db --insert joined.csv
OperationalError: (sqlite3.OperationalError) table joined already exists
[SQL:
CREATE TABLE joined (
state VARCHAR NOT NULL,
county VARCHAR NOT NULL,
fips FLOAT NOT NULL,
nsn VARCHAR NOT NULL,
item_name VARCHAR,
quantity FLOAT NOT NULL,
ui VARCHAR NOT NULL,
acquisition_cost FLOAT NOT NULL,
total_cost FLOAT NOT NULL,
ship_date DATE NOT NULL,
federal_supply_category FLOAT NOT NULL,
federal_supply_category_name VARCHAR NOT NULL,
federal_supply_class FLOAT NOT NULL,
federal_supply_class_name VARCHAR NOT NULL,
name VARCHAR NOT NULL,
total_population FLOAT NOT NULL,
margin_of_error FLOAT NOT NULL
)
]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
[15]:
#
# Consulta la bd
#
!sql2csv --db sqlite:///leso.db --query "select * from joined" | head
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name,name,total_population,margin_of_error
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299.0,0.0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299.0,0.0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299.0,0.0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299.0,0.0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299.0,0.0
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Adams County, NE",31299.0,0.0
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Buffalo County, NE",46330.0,0.0
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Buffalo County, NE",46330.0,0.0
NE,BUFFALO,31019.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-09-24,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Buffalo County, NE",46330.0,0.0
[16]:
!sql2csv --db sqlite:///leso.db --query "select * from joined where county='DOUGLAS';" > douglas.csv
!head douglas.csv
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name,name,total_population,margin_of_error
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
NE,DOUGLAS,31055.0,1005-00-073-9421,"RIFLE,5.56 MILLIMETER",1.0,Each,499.0,499.0,2008-05-20,10.0,WEAPONS,1005.0,"Guns, through 30 mm","Douglas County, NE",518271.0,0.0
[17]:
!csvsql --query "select county,item_name from joined where quantity > 5;" joined.csv | csvlook
| county | item_name |
| ------- | -------------------------------------- |
| DAKOTA | SPECTACLES SET,BALL |
| DAKOTA | SPECTACLES SET,BALL |
| DOUGLAS | CAMOUFLAGE NET SYSTEM,RADAR SCATTERING |
| DOUGLAS | SPECTACLE KIT,INTER |
| DOUGLAS | SAFETY GLASSES,REVI |
| DOUGLAS | GOGGLES,INDUSTRIAL |
| DOUGLAS | |
| DOUGLAS | CASE SHIPPING |
| DOUGLAS | GAITER,NECK |
| DOUGLAS | INSECT NET PROTECTO |
| DOUGLAS | SHELTER HALF,TENT |
| DOUGLAS | LINER,WET WEATHER P |
| DOUGLAS | BAG,FLYER'S HELMET |
| DOUGLAS | GLOVES,FLYERS' |
| DOUGLAS | COVERALLS,COMBAT VE |
| DOUGLAS | VEST,TACTICAL LOAD |
| DOUGLAS | UNDERSHIRT,COLD WEA |
| DOUGLAS | UNDERSHIRT,COLD WEA |
| DOUGLAS | SHIRT,COLD WEATHER |
| DOUGLAS | SHIRT,COLD WEATHER |
| DOUGLAS | SHIRT,COLD WEATHER |
| DOUGLAS | OVERALLS,COLD WEATH |
| DOUGLAS | SHIRT,COLD WEATHER |
| DOUGLAS | SHIRT,COLD WEATHER |
| DOUGLAS | ELBOW,PAD |
| DOUGLAS | ELBOW,PADS |
| DOUGLAS | GLOVES,MEN'S AND WO |
| DOUGLAS | PULLOVER FLEECE POLARTEC CO |
| DOUGLAS | |
| DOUGLAS | CASE,SMALL ARMS AMM |
| DOUGLAS | BAG DUFFEL |
| DOUGLAS | BAG,CLOTHING |
| DOUGLAS | FIELD PACK |
| DOUGLAS | CANTEEN,WATER |
| DOUGLAS | MAT,SLEEPING,SELF-I |
| DOUGLAS | SLEEPING BAG |
| DOUGLAS | SLEEPING BAG |
| DOUGLAS | SLEEPING BAG |
| DOUGLAS | SLEEPING BAG |
| DOUGLAS | BIVY COVER |
| DOUGLAS | FIELD PACK |
| DOUGLAS | FIELD PACK |
| DOUGLAS | FIELD PACK |
| DOUGLAS | FIELD PACK |
| DOUGLAS | POUCH,RADIO |
| DOUGLAS | LID |
| DOUGLAS | MEDIC BAG |
| DOUGLAS | EXTERNAL MEDICAL MO |
| DOUGLAS | RIFLEMAN SET |
| HALL | MAGAZINE,CARTRIDGE |
| HALL | LINER,COLD WEATHER |
| HALL | LINER,COLD WEATHER |
| HALL | HOOD,COLD WEATHER |
| HALL | SHIRT,COLD WEATHER |
| HALL | GOGGLES,SUN,WIND AN |
| HALL | MAT,SLEEPING,SELF-I |