Tengo un archivo csv con datos como este
PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 111,1,"Ken, Mr. James",male,34.5,0,0,330911,7.8292,,A 112,2,"Will, Mrs. James",female,47,1,0,363272,7,,B and so onQuiero contar cuántos de estos nombres en el archivo csv incluyen Sr. y Sra. y otros
y usando la columna 'sexo' quiero imprimir el número de pasajeros masculinos y femeninos.
He intentado esto, pero solo imprime cada línea con 0 para la Sra. y 1 para el Sr. en lugar de darme el conteo de Nombres con el Sr.
No sé cómo recorrer los datos csv, alguien puede agregar la parte del código para eso. Gracias.
<script src='https://d3js.org/d3.v7.min.js'></script> <script> let mycsv = ' some file name'; d3.csv(mycsv, function(data) { let count = 0; var theWord = "Mr"; if (data.Name.includes(theWord)) { count++; } console.log(count); }); </script>Necesitas then desde la versión 5+
let mycsv = 'example.csv'; d3.csv(mycsv) .then(function(data) { /* process data */ })Necesitas hacer un bucle.
Eso se puede hacer con un reduce :
https://plungjan.name/SO/d3csv/
const process = data => { const counts = data.reduce((acc, { Name, Sex, Age }) => { acc.mr += Name.toLowerCase().includes("mr."); acc.mrs += Name.toLowerCase().includes("mrs."); acc.male += Sex.toLowerCase() === "male"; acc.female += Sex.toLowerCase() === "female"; acc.age += +Age return acc; }, { mr: 0, mrs: 0, male: 0, female: 0, age: 0 }); console.log("Total age",counts.age) Object.entries(counts).forEach(([key,val]) => document.getElementById(key).textContent = val) } // uncomment when you want to read a file // let mycsv = 'example.csv'; // d3.csv(mycsv) //.then(function(data) { process(data) //}) <script src='https://d3js.org/d3.v7.min.js'></script> <script> const data = d3.csvParse(`PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 111,1,"Ken, Mr. James",male,34.5,0,0,330911,7.8292,,A 112,2,"Will, Mrs. James",female,47,1,0,363272,7,,B`); </script> Mr: <span id="mr"></span><br/> Mrs: <span id="mrs"></span><br/> Male: <span id="male"></span><br/> Female: <span id="female"></span><br/> Sum of Ages <span id="age"></span><br/>Si SOLO desea contar personas con una edad superior a 30:
const process = data => { const ages = data.map(({Age}) => +Age) // make sure it is a number .filter(num => num > 30).length console.log("Total of ppl with age above 30:",ages) } // uncomment when you want to read a file // let mycsv = 'example.csv'; // d3.csv(mycsv) //.then(function(data) { process(data) //}) <script src='https://d3js.org/d3.v7.min.js'></script> <script> const data = d3.csvParse(`PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 111,1,"Ken, Mr. James",male,34.5,0,0,330911,7.8292,,A 112,2,"Will, Mrs. James",female,47,1,0,363272,7,,B`); </script>