From 1c0db49931655b5b9cd987cc20ebd5ed351ce25d Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sun, 3 Oct 2021 21:44:13 -0500 Subject: [PATCH 001/254] feat: section1 - Translate main readme file to spanish [ES] --- .../translations/README.es.md | 165 ++++++++++++++++++ 1-Introduction/translations/README.es.md | 19 ++ 2 files changed, 184 insertions(+) diff --git a/1-Introduction/01-defining-data-science/translations/README.es.md b/1-Introduction/01-defining-data-science/translations/README.es.md index e69de29b..873ad74f 100644 --- a/1-Introduction/01-defining-data-science/translations/README.es.md +++ b/1-Introduction/01-defining-data-science/translations/README.es.md @@ -0,0 +1,165 @@ +# Defining Data Science + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png)| +|:---:| +|Defining Data Science - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +--- + +[![Defining Data Science Video](images/video-def-ds.png)](https://youtu.be/pqqsm5reGvs) + +## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) + +## What is Data? +In our everyday life, we are constantly surrounded by data. The text you are reading now is data, the list of phone numbers of your friends in your smartphone is data, as well as the current time displayed on your watch. As human beings, we naturally operate with data by counting the money we have or writing letters to our friends. + +However, data became much more critical with the creation of computers. The primary role of computers is to perform computations, but they need data to operate on. Thus, we need to understand how computers store and process data. + +With the emergence of the Internet, the role of computers as data handling devices increased. If you think of it, we now use computers more and more for data processing and communication, rather than actual computations. When we write an e-mail to a friend or search for some information on the Internet - we are essentially creating, storing, transmitting, and manipulating data. +> Can you remember the last time you have used computers to actually compute something? + +## What is Data Science? + +In [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Data Science** is defined as *a scientific field that uses scientific methods to extract knowledge and insights from structured and unstructured data, and apply knowledge and actionable insights from data across a broad range of application domains*. + +This definition highlights the following important aspects of data science: + +* The main goal of data science is to **extract knowledge** from data, in order words - to **understand** data, find some hidden relationships and build a **model**. +* Data science uses **scientific methods**, such as probability and statistics. In fact, when the term *data science* was first introduced, some people argued that data science is just a new fancy name for statistics. Nowadays it has become evident that the field is much broader. +* Obtained knowledge should be applied to produce some **actionable insights**. +* We should be able to operate on both **structured** and **unstructured** data. We will come back to discuss different types of data later in the course. +* **Application domain** is an important concept, and data scientist often needs at least some degree of expertise in the problem domain. + +> Another important aspect of Data Science is that it studies how data can be gathered, stored and operated upon using computers. While statistics gives us mathematical foundations, data science applies mathematical concepts to actually draw insights from data. + +One of the ways (attributed to [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) to look at the data science is to consider it to be a separate paradigm of science: +* **Empyrical**, in which we rely mostly on observations and results of experiments +* **Theoretical**, where new concepts emerge from existing scientific knowledge +* **Computational**, where we discover new principles based on some computational experiments +* **Data-Driven**, based on discovering relationships and patterns in the data + +## Other Related Fields + +Since data is a pervasive concept, data science itself is also a broad field, touching many other related disciplines. + +
+
Databases
+
+The most obvious thing to consider is **how to store** the data, i.e. how to structure them in a way that allows faster processing. There are different types of databases that store structured and unstructured data, which [we will consider in our course](../../2-Working-With-Data/README.md). +
+
Big Data
+
+Often we need to store and process really large quantities of data with relatively simple structure. There are special approaches and tools to store that data in a distributed manner on a computer cluster, and process them efficiently. +
+
Machine Learning
+
+One of the ways to understand the data is to **build a model** that will be able to predict desired outcome. Being able to learn such models from data is the area studied in **machine learning**. You may want to have a look at our [Machine Learning for Beginners](https://github.com/microsoft/ML-For-Beginners/) Curriculum to get deeper into that field. +
+
Artificial Intelligence
+
+As machine learning, artificial intelligence also relies on data, and it involves building high complexity models that will exhibit the behavior similar to a human being. Also, AI methods often allow us to turn unstructured data (eg. natural language) into structured by extracting some insights. +
+
Visualization
+
+Vast amounts of data are incomprehensible for a human being, but once we create useful visualizations - we can start making much more sense of data, and drawing some conclusions. Thus, it is important to know many ways to visualize information - something that we will cover in [Section 3](../../3-Data-Visualization/README.md) of our course. Related fields also include **Infographics**, and **Human-Computer Interaction** in general. +
+
+ +## Types of Data + +As we have already mentioned - data is everywhere, we just need to capture it in the right way! It is useful to distinguish between **structured** and **unstructured** data. The former are typically represented in some well-structured form, often as a table or number of tables, while latter is just a collection of files. Sometimes we can also talk about **semistructured** data, that have some sort of a structure that may vary greatly. + +| Structured | Semi-structured | Unstructured | +|----------- |-----------------|--------------| +| List of people with their phone numbers | Wikipedia pages with links | Text of Encyclopaedia Britannica | +| Temperature in all rooms of a building at every minute for the last 20 years | Collection of scientific papers in JSON format with authors, data of publication, and abstract | File share with corporate documents | +| Data for age and gender of all people entering the building | Internet pages | Raw video feed from surveillance camera | + +## Where to get Data + +There are many possible sources of data, and it will be impossible to list all of them! However, let's mention some of the typical places where you can get data: + +* **Structured** + - **Internet of Things**, including data from different sensors, such as temperature or pressure sensors, provides a lot of useful data. For example, if an office building is equipped with IoT sensors, we can automatically control heating and lighting in order to minimize costs. + - **Surveys** that we ask users after purchase of a good, or after visiting a web site. + - **Analysis of behavior** can, for example, help us understand how deeply a user goes into a site, and what is the typical reason for leaving the site. +* **Unstructured** + - **Texts** can be a rich source of insights, starting from overall **sentiment score**, up to extracting keywords and even some semantic meaning. + - **Images** or **Video**. A video from surveillance camera can be used to estimate traffic on the road, and inform people about potential traffic jams. + - Web server **Logs** can be used to understand which pages of our site are most visited, and for how long. +* Semi-structured + - **Social Network** graph can be a great source of data about user personality and potential effectiveness in spreading information around. + - When we have a bunch of photographs from a party, we can try to extract **Group Dynamics** data by building a graph of people taking pictures with each other. + +By knowing different possible sources of data, you can try to think about different scenarios where data science techniques can be applied to know the situation better, and to improve business processes. + +## What you can do with Data + +In Data Science, we focus on the following steps of data journey: + +
+
1) Data Acquisition
+
+First step is to collect the data. While in many cases it can be a straightforward process, like data coming to a database from web application, sometimes we need to use special techniques. For example, data from IoT sensors can be overwhelming, and it is a good practice to use buffering endpoints such as IoT Hub to collect all the data before further processing. +
+
2) Data Storage
+
+Storing the data can be challenging, especially if we are talking about big data. When deciding how to store data, it makes sense to anticipate the way you would want later on to query them. There are several ways data can be stored: +
    +
  • Relational database stores a collection of tables, and uses a special language called SQL to query them. Typically, tables would be connected to each other using some schema. In many cases we need to convert the data from original form to fit the schema.
  • +
  • NoSQL database, such as CosmosDB, does not enforce schema on data, and allows storing more complex data, for example, hierarchical JSON documents or graphs. However, NoSQL database does not have rich querying capabilities of SQL, and cannot enforce referential integrity between data.
  • +
  • Data Lake storage is used for large collections of data in raw form. Data lakes are often used with big data, where all data cannot fit into one machine, and has to be stored and processed by a cluster. Parquet is the data format that is often used in conjunction with big data.
  • +
+
+
3) Data Processing
+
+This is the most exciting part of data journey, which involved processing the data from its original form to the form that can be used for visualization/model training. When dealing with unstructured data such as text or images, we may need to use some AI techniques to extract **features** from the data, thus converting it to structured form. +
+
4) Visualization / Human Insights
+
+Often to understand the data we need to visualize them. Having many different visualization techniques in our toolbox we can find the right view to make an insight. Often, data scientist needs to "play with data", visualizing it many times and looking for some relationships. Also, we may use techniques from statistics to test some hypotheses or prove correlation between different pieces of data. +
+
5) Training predictive model
+
+Because the ultimate goal of data science is to be able to take decisions based on data, we may want to use the techniques of Machine Learning to build predictive model that will be able to solve our problem. +
+
+ +Of course, depending on the actual data some steps might be missing (eg., when we already have the data in the database, or when we do not need model training), or some steps might be repeated several times (such as data processing). + +## Digitalization and Digital Transformation + +In the last decade, many businesses started to understand the importance of data when making business decisions. To apply data science principles to running a business one first needs to collect some data, i.e. somehow turn business processes into digital form. This is known as **digitalization**, and followed by using data science techniques to guide decisions it often leads to significant increase of productivity (or even business pivot), called **digital transformation**. + +Let's consider an example. Suppose, we have a data science course (like this one), which we deliver online to students, and we want to use data science to improve it. How can we do it? + +We can start with thinking "what can be digitized?". The simplest way would be to measure time it takes each student to complete each module, and the obtained knowledge (eg. by giving multiple-choice test at the end of each module). By averaging time-to-complete across all students, we can find out which modules cause the most problems to students, and work on simplifying them. + +> You may argue that this approach is not ideal, because modules can be of different length. It is probably more fair to divide the time by the length of the module (in number of characters), and compare those values instead. + +When we start analyzing results of multiple-choice tests, we can try to find out specific concepts that students understand poorly, and improve the content. To do that, we need to design tests in such a way that each question maps to a certain concept or chunk of knowledge. + +If we want to get even more complicated, we can plot the time taken for each module against the age category of students. We might find out that for some age categories it takes inappropriately long time to complete the module, or students drop out at certain point. This can help us provide age recommendation for the module, and minimize people's dissatisfaction from wrong expectations. + +## 🚀 Challenge + +In this challenge, we will try to find concepts relevant to the field of Data Science by looking at texts. We will take Wikipedia article on Data Science, download and process the text, and then build a word cloud like this one: + +![Word Cloud for Data Science](images/ds_wordcloud.png) + +Visit [`notebook.ipynb`](notebook.ipynb) to read through the code. You can also run the code, and see how it performs all data transformations in real time. + +> If you do not know how to run code in Jupyter Notebook, have a look at [this article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + + + +## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/1) + +## Assignments + +* **Task 1**: Modify the code above to find out related concepts for the fields of **Big Data** and **Machine Learning** +* **Task 2**: [Think About Data Science Scenarios](assignment.md) + +## Credits + +This lesson has been authored with ♥️ by [Dmitry Soshnikov](http://soshnikov.com) diff --git a/1-Introduction/translations/README.es.md b/1-Introduction/translations/README.es.md index e69de29b..e905bf11 100644 --- a/1-Introduction/translations/README.es.md +++ b/1-Introduction/translations/README.es.md @@ -0,0 +1,19 @@ +# Introduction to Data Science + +![Datos en acción](images/data.jpg) +> Fotografía de Stephen Dawson en Unsplash + +En estas lecciones descubrirás cómo se define la Ciencia de Datos y aprenderás acerca de +las cosideraciones éticas que deben ser tomadas por un científico de datos. También aprenderás +cómo se definen los datos y un poco de probabilidad y estadística, el núcleo académico de la Ciencia de Datos. + +### Temas + +1. [Definiendo la Ciencia de Datos](01-defining-data-science/README.md) +2. [Ética de la Ciencia de Datos](02-ethics/README.md) +3. [Definición de Datos](03-defining-data/README.md) +4. [introducción a la probabilidad y estadística](04-stats-and-probability/README.md) + +### Créditos + +Éstas lecciones fueron escritas con ❤️ por [Nitya Narasimhan](https://twitter.com/nitya) y [Dmitry Soshnikov](https://twitter.com/shwars). From 40706007057840bca37292598e90a12aea7c6133 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 4 Oct 2021 19:50:05 -0500 Subject: [PATCH 002/254] feat: Translation for module 1 section 1wq --- .../translations/README.es.md | 190 +++++++++--------- 1 file changed, 100 insertions(+), 90 deletions(-) diff --git a/1-Introduction/01-defining-data-science/translations/README.es.md b/1-Introduction/01-defining-data-science/translations/README.es.md index 873ad74f..20011f7c 100644 --- a/1-Introduction/01-defining-data-science/translations/README.es.md +++ b/1-Introduction/01-defining-data-science/translations/README.es.md @@ -1,165 +1,175 @@ -# Defining Data Science +# Definiendo la Ciencia de Datos -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png)| +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png)| |:---:| -|Defining Data Science - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +|Definiendo la Ciencia de Datos - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | --- -[![Defining Data Science Video](images/video-def-ds.png)](https://youtu.be/pqqsm5reGvs) +[![Video definiendo la Ciencia de Datos](images/video-def-ds.png)](https://youtu.be/pqqsm5reGvs) -## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) +## [Examen previo a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) -## What is Data? -In our everyday life, we are constantly surrounded by data. The text you are reading now is data, the list of phone numbers of your friends in your smartphone is data, as well as the current time displayed on your watch. As human beings, we naturally operate with data by counting the money we have or writing letters to our friends. +## ¿Qué son los Datos? +En nuestra vida diaria, estamos constantemente rodeados por datos. El texto que estás leyendo ahora son datos, +la lista de números telefónicos de tus amigos en tu móvil son datos, también como la hora actual que se muestra en tu reloj. +Como seres humanos, operamos naturalmente con datos, contando el dinero que tenemos o escribiendo cartas a nuestros amigos. -However, data became much more critical with the creation of computers. The primary role of computers is to perform computations, but they need data to operate on. Thus, we need to understand how computers store and process data. +Sin embargo, los datos se vuelven más críticos con la creación de las computadoras. El rol principal de las computadoras +es realizar cálculos, pero éstas necesitan datos para operar. Por lo cual, necesitamos entender cómo las computadoras +almacenan y procesan los datos. -With the emergence of the Internet, the role of computers as data handling devices increased. If you think of it, we now use computers more and more for data processing and communication, rather than actual computations. When we write an e-mail to a friend or search for some information on the Internet - we are essentially creating, storing, transmitting, and manipulating data. -> Can you remember the last time you have used computers to actually compute something? +Con el surgimiento de internet, el rol de las computadoras como dispositivos para la manipulación de datos incrementó. +Si lo piensas, ahora usamos computadoras mucho más para la comunicación y el procesamiento de datos, en lugar de para hacer cálculos. Cuando escribimos un correo electrónico a un amigo o buscamos alguna información en internet - estamos +creando, almacenando, transmitiendo y manipulando datos. -## What is Data Science? +> ¿Recuerdas la última vez que usaste una computadora para realmente calcular algo? -In [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Data Science** is defined as *a scientific field that uses scientific methods to extract knowledge and insights from structured and unstructured data, and apply knowledge and actionable insights from data across a broad range of application domains*. +## ¿Qué es Ciencia de Datos? -This definition highlights the following important aspects of data science: +En [Wikipedia](https://en.wikipedia.org/wiki/Data_science), se define la **Ciencia de Datos** como *un campo de las ciencias que usa métodos científicos para extraer conocimiento y perspectivas de datos estructurados y no estructurados, y +aplicar el conocimiento y conocimiento práctico de los datos a través de un amplio rango de dominios de aplicación*. -* The main goal of data science is to **extract knowledge** from data, in order words - to **understand** data, find some hidden relationships and build a **model**. -* Data science uses **scientific methods**, such as probability and statistics. In fact, when the term *data science* was first introduced, some people argued that data science is just a new fancy name for statistics. Nowadays it has become evident that the field is much broader. -* Obtained knowledge should be applied to produce some **actionable insights**. -* We should be able to operate on both **structured** and **unstructured** data. We will come back to discuss different types of data later in the course. -* **Application domain** is an important concept, and data scientist often needs at least some degree of expertise in the problem domain. +Ésta definición destaca los siguientes aspectos importantes para la ciencia de datos: -> Another important aspect of Data Science is that it studies how data can be gathered, stored and operated upon using computers. While statistics gives us mathematical foundations, data science applies mathematical concepts to actually draw insights from data. +* El objetivo principal para la ciencia de datos es **extraer conocimiento** de los datos, en otras palabras - **entender** los datos, encontrar relaciones ocultas y construir un **modelo**. +* La ciencia de datos usa **métodos científicos**, como la probabilidad y estadística. De hecho, cuando el término **ciencia de datos** fue usado por primera vez, algunas personas argumentaron que la ciencia de datos era solo un nuevo nombre elegante para estadística. En estos días se ha vuelto evidente que es un campo mucho más amplio. +* El conocimiento obtenido puede ser aplicado para producir **conocimiento práctico**. +* Seremos capace de operar tanto datos **estructurados** y **no estructurados**. Más adelante en el curso discutiremos los diferentes tupos de datos. +* El **dominio de la aplicación** es un concepto importante, y un científico de datos necesita al menos cierta experiencia en el dominio del problema. -One of the ways (attributed to [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) to look at the data science is to consider it to be a separate paradigm of science: -* **Empyrical**, in which we rely mostly on observations and results of experiments -* **Theoretical**, where new concepts emerge from existing scientific knowledge -* **Computational**, where we discover new principles based on some computational experiments -* **Data-Driven**, based on discovering relationships and patterns in the data +> Otro aspecto importante de la Ciencia de Datos es que esta estudia como los datos son obtenidos, almacenados y operados usando computadoras. Mientras la estadística nos da los fundamentos matemáticos, la ciencia de datos aplica los conceptos matemáticos para realmente extraer conocimiento de los datos. -## Other Related Fields +Una de las formas (atribuidas a [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) de ver a la ciencia de datos es considerarla como un paradigma separado de la ciencia: +* **Empírica**, en la que confíamos mayormente en observaciones y resultados de experimientos +* **Teórica**, donde surgen nuevos conceptos desde el conocimiento científico existente +* **Computacional**, donde descubrimos nuevos principios basados en algunos experimentos computacionales +* **Dirigidos por datos**, basados en el descubrimiento de relaciones y patrones en los datos -Since data is a pervasive concept, data science itself is also a broad field, touching many other related disciplines. +## Otros campos relacionados + +Ya que los datos son un concepto predominante, la ciencia de datos en sí misma también es un amplio campo, abarcando muchas otras disciplinas relacionadas.
-
Databases
+
Bases de datos
-The most obvious thing to consider is **how to store** the data, i.e. how to structure them in a way that allows faster processing. There are different types of databases that store structured and unstructured data, which [we will consider in our course](../../2-Working-With-Data/README.md). +La cosa más obvia a considerar es **cómo almacenar** los datos, por ejemplo como estructurarlos de tal formar que se procesen más rápido. Existen distintos tipos de bases de datos que almacenan datos estructurados y no estructurados, los +cuales [consideraremos en este curso] (../../2-Working-With-Data/README.md).
Big Data
-Often we need to store and process really large quantities of data with relatively simple structure. There are special approaches and tools to store that data in a distributed manner on a computer cluster, and process them efficiently. +Usualmente necesitamos almacenar y procesar enormes cantidades de datos con estructuras relativamente simples. Existen +formas especiales y herramientas para almacenar los datos en una forma distribuida on un clúster de computadoras, y procesarlas eficientemente.
-
Machine Learning
+
Aprendizaje automático
-One of the ways to understand the data is to **build a model** that will be able to predict desired outcome. Being able to learn such models from data is the area studied in **machine learning**. You may want to have a look at our [Machine Learning for Beginners](https://github.com/microsoft/ML-For-Beginners/) Curriculum to get deeper into that field. +Una de las formas de entender los datos es **construir un modelo** que será capaz de predecir el resultado deseado. Ser capaz de aprender esos modelos de los datos es el área de estudio del **aprendizaje automático**. Querrás dar un vistazo a nuestro currículum de [Aprendizaje automático para principiantes](https://github.com/microsoft/ML-For-Beginners/) para profundizar en ese campo.
-
Artificial Intelligence
+
Inteligencia aritifcial
-As machine learning, artificial intelligence also relies on data, and it involves building high complexity models that will exhibit the behavior similar to a human being. Also, AI methods often allow us to turn unstructured data (eg. natural language) into structured by extracting some insights. +Así como el aprendizaje automático, la inteligencia artificial también depende de los datos, e involucra la construcción de modelos altamente complejos que expondrán un comportamiento similar a un ser humano. Además, los métodos de AI usualmente nos permiten convertir datos no estructurados (por ejemplo, lenguaje natural) en datos estructurados extrayendo conocimiento útil.
-
Visualization
+
Visualización
-Vast amounts of data are incomprehensible for a human being, but once we create useful visualizations - we can start making much more sense of data, and drawing some conclusions. Thus, it is important to know many ways to visualize information - something that we will cover in [Section 3](../../3-Data-Visualization/README.md) of our course. Related fields also include **Infographics**, and **Human-Computer Interaction** in general. +Cantidades descomunales de datos son incomprensibles para un ser humano, pero una vez que creamos visualizaciones útiles - podemos iniciar haciendo más sentido de los datos, y extrayendo algunas conclusiones. Por lo tanto, es importante conocer diversas formas de visualizar la información - lo cual cubriremos en la [Sección 3](../../3-Data-Visualization/README.md) de nuestro curso. Campos relacionados incluyen **infografías**, e **interacción humano-computadora** en general.
-## Types of Data +## Tipos de datos -As we have already mentioned - data is everywhere, we just need to capture it in the right way! It is useful to distinguish between **structured** and **unstructured** data. The former are typically represented in some well-structured form, often as a table or number of tables, while latter is just a collection of files. Sometimes we can also talk about **semistructured** data, that have some sort of a structure that may vary greatly. +Como ya se ha mencionado - los datos están en todas partes, ¡sólo necesitamos capturarlos en la forma correcta! Es útil distinguir entre datos **estructurados** y **no estructurados**. Los primeros típicamente son representados en una forma bien estructurada, usualmente como una tabla o conunto de tablas, mientras que los últimos es sólo una colección de archivos. Algunas veces podemos hablar de datos **semi-estructurados**, que tienen cierta estructura la cual podría variar mucho. -| Structured | Semi-structured | Unstructured | -|----------- |-----------------|--------------| -| List of people with their phone numbers | Wikipedia pages with links | Text of Encyclopaedia Britannica | -| Temperature in all rooms of a building at every minute for the last 20 years | Collection of scientific papers in JSON format with authors, data of publication, and abstract | File share with corporate documents | -| Data for age and gender of all people entering the building | Internet pages | Raw video feed from surveillance camera | +| Estructurado | Semi-estructurado | No estructurado | +|------------- |-------------------|-----------------| +| Lista de personas con sus números telefónicos | Páginas de wikipedia con enlaces | Texto de la enciclopedia Británica | +| Temperatura en todas las habitaciones de un edificio a cada minuto por los últimos 20 años | Colección de documentos científicos en formato JSON con autores, fecha de publicación, y resumen | Recurso compartido de archivos con documentos corporativos | +| Datos por edad y género de todas las personas que entrar al edificio | Páginas de internet | Vídeo sin procesar de cámara de vigilancia | -## Where to get Data +## Dónde obtener datos -There are many possible sources of data, and it will be impossible to list all of them! However, let's mention some of the typical places where you can get data: +Hay múltiples fuentes de datos, y ¡sería imposible listarlas todas! Sin embargo, mencionemos algunos de los lugares típicos en dónde obtener datos: -* **Structured** - - **Internet of Things**, including data from different sensors, such as temperature or pressure sensors, provides a lot of useful data. For example, if an office building is equipped with IoT sensors, we can automatically control heating and lighting in order to minimize costs. - - **Surveys** that we ask users after purchase of a good, or after visiting a web site. - - **Analysis of behavior** can, for example, help us understand how deeply a user goes into a site, and what is the typical reason for leaving the site. -* **Unstructured** - - **Texts** can be a rich source of insights, starting from overall **sentiment score**, up to extracting keywords and even some semantic meaning. - - **Images** or **Video**. A video from surveillance camera can be used to estimate traffic on the road, and inform people about potential traffic jams. - - Web server **Logs** can be used to understand which pages of our site are most visited, and for how long. -* Semi-structured - - **Social Network** graph can be a great source of data about user personality and potential effectiveness in spreading information around. - - When we have a bunch of photographs from a party, we can try to extract **Group Dynamics** data by building a graph of people taking pictures with each other. +* **Estructurados** + - **Internet de las cosas**, incluyendo datos de distintos sensore, como sensores de temperatura o presión, proveen muchos datos útiles. Por ejemplo, si una oficina es equipada con sensores IoT, podemos controlar automáticamente la calefacción e iluminación para minimizar costos. + - **Encuestas** que realizamos a los usuarios después de pagar un producto o después de visitar un sitio web. + - **Análisis de comportamiento** podemos, por ejemplo, ayudarnos a entender que tanto profundiza un usuario en un sitio, y cuál es la razón típica por la cual lo deja. +* **No estructurados** + - Los **Textos** pueden ser una fuente rica en conocimiento práctico, empezando por el **sentimiento principal** generalizado, hasta la extracción de palabras clave e incluso algún significado semántico. + - **Imágenes** o **Video**. Un video de una cámara de vigilancia puede ser usado para estimar el tráfico en carretera, e informar a las personas acerca de posibles embotellamientos. + - **Bitácoras** de servidores web pueden ser usadas para entender qué páginas de nuestro sitio son las más visitadas y por cuánto tiempo. +* **Semi-estructurados** + - Grafos de **redes sociales** pueden ser una gran fuente de datos acerca de la la personalidad del usuario y efectividad potencial de difusión de la información. + - Cuando tenemos un conjunto de fotografías de una fiesta, podemos intentar extraer datos de la **dinámica de grupos** construyendo un grafo de personas tomándose fotos unas a otras. -By knowing different possible sources of data, you can try to think about different scenarios where data science techniques can be applied to know the situation better, and to improve business processes. +Conociendo posibles fuentes de datos diversas, puedes intentar pensar en distintos escenarios donde se pueden aplicar técnicas de ciencia de datos para conocer mejor la situación, y mejroar los procesos de negocio. -## What you can do with Data +## Qué puedes hacer con los datos -In Data Science, we focus on the following steps of data journey: +En la ciencia de datos, nos enfocamos en los siguientes pasos del viaje de los datos:
-
1) Data Acquisition
+
1) Adquisición de datos
-First step is to collect the data. While in many cases it can be a straightforward process, like data coming to a database from web application, sometimes we need to use special techniques. For example, data from IoT sensors can be overwhelming, and it is a good practice to use buffering endpoints such as IoT Hub to collect all the data before further processing. +El primer paso es reunir los datos. Mientras que en muchos casos esto puede ser un proceso simple, como datos obtenidos des una base de datos de una aplicación web. algunas veces necesitamos usar técnicas especiales. Por ejemplo, los datos obtenidos desde sensorres IoT pueden ser inmensos, y es una buena práctica el uso de endpoints búfer como IoT Hub para para reunir todos los datos antes de procesarlos.
-
2) Data Storage
+
2) Almacenamiento de datos
-Storing the data can be challenging, especially if we are talking about big data. When deciding how to store data, it makes sense to anticipate the way you would want later on to query them. There are several ways data can be stored: +Almacenar los datos puede ser desafiante, especialmente si hablamos de big data. Al decidir cómo almacer datos, hace sentido anticiparse a la forma en la cual serán consultados. Existen varias formas de almacenar los datos:
    -
  • Relational database stores a collection of tables, and uses a special language called SQL to query them. Typically, tables would be connected to each other using some schema. In many cases we need to convert the data from original form to fit the schema.
  • -
  • NoSQL database, such as CosmosDB, does not enforce schema on data, and allows storing more complex data, for example, hierarchical JSON documents or graphs. However, NoSQL database does not have rich querying capabilities of SQL, and cannot enforce referential integrity between data.
  • -
  • Data Lake storage is used for large collections of data in raw form. Data lakes are often used with big data, where all data cannot fit into one machine, and has to be stored and processed by a cluster. Parquet is the data format that is often used in conjunction with big data.
  • +
  • Las bases de datos relacionales almacenan una colección de tabla, y usan un lenguaje especial llamado SQL para consultalos. Típicamente, las tablas estarían conectadas unas a otras mediante un esquema. En muchas ocasiones necesitamos convertir los datos desde la fuente original para que se ajusten al esquema.
  • +
  • Bases de datos NoSQL, como CosmosDB, no exigen un esquema de datos, y permiten almacenar datos más complejos, por ejemplo, documentos JSON jerárquicos o grafos. Sin embargo, Las bases de datos NoSQL no tienen capacidades de consulta SQL sofisticadas, y no requieren integridad referencial entre los datos.
  • +
  • El almacenamiento en lago de datos se usa para grandes colecciones de datos sin procesamiento. Los lagos de datos suelen ser usados con big data, donde todos los datos no pueden ser reunidos en un único equipo, y tienen que ser almacenados y procesados por un clúster. Parquet es un formato de datos que se utiliza comúnmente en conjunto con big data.
-
3) Data Processing
+
3) Procesamiento de datos
-This is the most exciting part of data journey, which involved processing the data from its original form to the form that can be used for visualization/model training. When dealing with unstructured data such as text or images, we may need to use some AI techniques to extract **features** from the data, thus converting it to structured form. +Esta es la parte más emocionante del viaje de los datos, el cual involucra el procesamiento de los datos desde su forma original hasta la forma en que puede ser usada por visualizaciones/modelo de entrenamiento. Cuando tratamos con datos no estructurados como texto o imágenes, debemos usar algunas técnias de IA para extraer las **características** de los datos, y así convertirlos a su forma estructurada.
-
4) Visualization / Human Insights
+
4) Visualización / entendimiento humano
-Often to understand the data we need to visualize them. Having many different visualization techniques in our toolbox we can find the right view to make an insight. Often, data scientist needs to "play with data", visualizing it many times and looking for some relationships. Also, we may use techniques from statistics to test some hypotheses or prove correlation between different pieces of data. +Usualmente para entender los datos necesitamos visualizarlos. Teniendo diversas ténicas de visualización en nuestro arsenal podemos encontrar la visualización adecuada para comprenderla. Comúnmente, un científico de datos necesita "jugar con los datos", visualizádolos varias veces y buscando alguna relación. Además, debemos usar técnicas de estadística para probar algunas hipótesis o probar la correlación entre distintas porciones de datos.
-
5) Training predictive model
+
5) Entrenando modelos predictivos
-Because the ultimate goal of data science is to be able to take decisions based on data, we may want to use the techniques of Machine Learning to build predictive model that will be able to solve our problem. +Ya que el principal objetivo de la ciencia de datos es ser capaz de tomar decisiones basándonos en los datos, debemos usar técnicas de aprendizaje automático para construir modelos predictivos que serán capces de resolver nuestros problemas.
-Of course, depending on the actual data some steps might be missing (eg., when we already have the data in the database, or when we do not need model training), or some steps might be repeated several times (such as data processing). +Por supuesto, dependiendo de los datos reales algunos pasos serán omitidos (por ejemplo, cuando ya tenemos los datos en la base de datos, o cuando no necesitamos modelo de entrenamiento), o algunos pasos deben ser repetidos varias veces (como el procesamiento de datos). -## Digitalization and Digital Transformation +## Digitalización y transformación digital -In the last decade, many businesses started to understand the importance of data when making business decisions. To apply data science principles to running a business one first needs to collect some data, i.e. somehow turn business processes into digital form. This is known as **digitalization**, and followed by using data science techniques to guide decisions it often leads to significant increase of productivity (or even business pivot), called **digital transformation**. +En la última década, muchos negocios comenzaron a entender la importancia de los datos al tomar decisiones de negocio. Para aplicar los principios de ciencia de datos para dirigir un negocio primero necesitas reunir algunos datos, por ejemplo, de alguna forma digitalizar los procesos de negocio. Esto es conocido como **digitalización**, y seguido usar técnicas de ciencia de datos para guiar decisiones esto usualmente conlleva a un incremento significativo de la productividad (o incluso negocios pivote), llamado **transformación digital**. -Let's consider an example. Suppose, we have a data science course (like this one), which we deliver online to students, and we want to use data science to improve it. How can we do it? +Consideremos el siguiente ejemplo. Supongaos, tenemos un curso de ciencia de datos (como éste), el cual ofrecemos en línea a los estudiante, y queremos usar ciencia de datos para mejorarl. ¿Cómo podemos hacerlo? -We can start with thinking "what can be digitized?". The simplest way would be to measure time it takes each student to complete each module, and the obtained knowledge (eg. by giving multiple-choice test at the end of each module). By averaging time-to-complete across all students, we can find out which modules cause the most problems to students, and work on simplifying them. +Podemos comenzar pensando "¿qué puede ser digitalizado?". La forma más simple sería medir el tiempo que le toma a cada estuddiante completar cada módulo, y el conocimiento obtenido (por ejemplo, realizando exámenes de opción múltiple al final de cada módulo). Promediando el tiempo en concluir de todos los estudiantes, y trabajar en simplificarlos. -> You may argue that this approach is not ideal, because modules can be of different length. It is probably more fair to divide the time by the length of the module (in number of characters), and compare those values instead. +> Argumentarás que este enfoque no es idóneo, porque los módulos pueden tener distinta duración. Problablemente es más justo dividir el tiempo por la longitud del módulo (en número de caracteres), y comparar esos valores en su lugar. -When we start analyzing results of multiple-choice tests, we can try to find out specific concepts that students understand poorly, and improve the content. To do that, we need to design tests in such a way that each question maps to a certain concept or chunk of knowledge. +Cuando comenzamos analizando los resultados de los exámenes de opción múltiple, intentamos encontrar conceptos específicos que los estudiantes entendieron vagamente,y mejorar el contenido. Para hacerlo, necesitamos diseñar exámenes de tal forma que cada pregunta se relacione a un concepto concreto o porción de conocimiento. -If we want to get even more complicated, we can plot the time taken for each module against the age category of students. We might find out that for some age categories it takes inappropriately long time to complete the module, or students drop out at certain point. This can help us provide age recommendation for the module, and minimize people's dissatisfaction from wrong expectations. +Si queremos hacerlo aún más complejo, podemos trazar el tiempo invertido en cada módulo contra la categoría de edad de los estudiantes. Encontraremos que para algunas categorías de edad les toma ciertamente más tiempo el completar el módulo, o algunos estudiantes abandonan el curso en cierto punto. Esot nos puede ayudar a sugerir recomendaciones de módulos por edad, y así minimizar el descontengo de la gente por falsas expectativas. -## 🚀 Challenge +## 🚀 Desafío -In this challenge, we will try to find concepts relevant to the field of Data Science by looking at texts. We will take Wikipedia article on Data Science, download and process the text, and then build a word cloud like this one: +En este desafío, intentaremos encontrar los conceptos relevante para el campo de la Ciencia de Datos consultando algunos textos. Tomarermos un artículo de Wikipedia de Ciecnia de Datos, descargaremos y procesaremos el texto, y luego construiremos una nube de palabras como esta: -![Word Cloud for Data Science](images/ds_wordcloud.png) +![Nube de palabras para Ciencia de Datos](images/ds_wordcloud.png) -Visit [`notebook.ipynb`](notebook.ipynb) to read through the code. You can also run the code, and see how it performs all data transformations in real time. +Visita [`notebook.ipynb`](notebook.ipynb) para leer el código.También pueder ejecutarlo y ver como realiza todas las transformaciones de los datos en tiempo real. -> If you do not know how to run code in Jupyter Notebook, have a look at [this article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +> Si no sabes como ejecutar el código en Jupyter Notebook, da un vistazo a [este artículo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/1) +## [Cuestionario porterior a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/1) -## Assignments +## Ejercicios -* **Task 1**: Modify the code above to find out related concepts for the fields of **Big Data** and **Machine Learning** -* **Task 2**: [Think About Data Science Scenarios](assignment.md) +* **Tarea 1**: Modifica el código anterior para encontrar conceptos relacionados para los campos de **Big Data** y **Machine Learning** +* **Tarea 2**: [Piensa en los escenarios para la Ciencia de Datos](assignment.md) -## Credits +## Créditos -This lesson has been authored with ♥️ by [Dmitry Soshnikov](http://soshnikov.com) +Esta lección ha sido escrita con ♥️ por [Dmitry Soshnikov](http://soshnikov.com) From 1f95d73ca3d7c1a5f55b98893cd6edf7e029a575 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 4 Oct 2021 19:50:53 -0500 Subject: [PATCH 003/254] feat: Module 1 section 2 - Add file to be translated --- .../02-ethics/translations/README.es.md | 263 ++++++++++++++++++ 1 file changed, 263 insertions(+) diff --git a/1-Introduction/02-ethics/translations/README.es.md b/1-Introduction/02-ethics/translations/README.es.md index e69de29b..d7442aaa 100644 --- a/1-Introduction/02-ethics/translations/README.es.md +++ b/1-Introduction/02-ethics/translations/README.es.md @@ -0,0 +1,263 @@ +# Introduction to Data Ethics + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/02-Ethics.png)| +|:---:| +| Data Science Ethics - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +--- + +We are all data citizens living in a datafied world. + +Market trends tell us that by 2022, 1-in-3 large organizations will buy and sell their data through online [Marketplaces and Exchanges](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/). As **App Developers**, we'll find it easier and cheaper to integrate data-driven insights and algorithm-driven automation into daily user experiences. But as AI becomes pervasive, we'll also need to understand the potential harms caused by the [weaponization](https://www.youtube.com/watch?v=TQHs8SA1qpk) of such algorithms at scale. + +Trends also indicate that we will create and consume over [180 zettabytes](https://www.statista.com/statistics/871513/worldwide-data-created/) of data by 2025. As **Data Scientists**, this gives us unprecedented levels of access to personal data. This means we can build behavioral profiles of users and influence decision-making in ways that create an [illusion of free choice](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) while potentially nudging users towards outcomes we prefer. It also raises broader questions on data privacy and user protections. + +Data ethics are now _necessary guardrails_ for data science and engineering, helping us minimize potential harms and unintended consequences from our data-driven actions. The [Gartner Hype Cycle for AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) identifies relevant trends in digital ethics, responsible AI ,and AI governances as key drivers for larger megatrends around _democratization_ and _industrialization_ of AI. + +![Gartner's Hype Cycle for AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +In this lesson, we'll explore the fascinating area of data ethics - from core concepts and challenges, to case studies and applied AI concepts like governance - that help establish an ethics culture in teams and organizations that work with data and AI. + + + + +## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/2) 🎯 + +## Basic Definitions + +Let's start by understanding the basic terminology. + +The word "ethics" comes from the [Greek word "ethikos"](https://en.wikipedia.org/wiki/Ethics) (and its root "ethos") meaning _character or moral nature_. + +**Ethics** is about the shared values and moral principles that govern our behavior in society. Ethics is based not on laws but on +widely accepted norms of what is "right vs. wrong". However, ethical considerations can influence corporate governance initiatives and government regulations that create more incentives for compliance. + +**Data Ethics** is a [new branch of ethics](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) that "studies and evaluates moral problems related to _data, algorithms and corresponding practices_". Here, **"data"** focuses on actions related to generation, recording, curation, processing dissemination, sharing ,and usage, **"algorithms"** focuses on AI, agents, machine learning ,and robots, and **"practices"** focuses on topics like responsible innovation, programming, hacking and ethics codes. + +**Applied Ethics** is the [practical application of moral considerations](https://en.wikipedia.org/wiki/Applied_ethics). It's the process of actively investigating ethical issues in the context of _real-world actions, products and processes_, and taking corrective measures to make that these remain aligned with our defined ethical values. + +**Ethics Culture** is about [_operationalizing_ applied ethics](https://hbr.org/2019/05/how-to-design-an-ethical-organization) to make sure that our ethical principles and practices are adopted in a consistent and scalable manner across the entire organization. Successful ethics cultures define organization-wide ethical principles, provide meaningful incentives for compliance, and reinforce ethics norms by encouraging and amplifying desired behaviors at every level of the organization. + + +## Ethics Concepts + +In this section, we'll discuss concepts like **shared values** (principles) and **ethical challenges** (problems) for data ethics - and explore **case studies** that help you understand these concepts in real-world contexts. + +### 1. Ethics Principles + +Every data ethics strategy begins by defining _ethical principles_ - the "shared values" that describe acceptable behaviors, and guide compliant actions, in our data & AI projects. You can define these at an individual or team level. However, most large organizations outline these in an _ethical AI_ mission statement or framework that is defined at corporate levels and enforced consistently across all teams. + +**Example:** Microsoft's [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai) mission statement reads: _"We are committed to the advancement of AI-driven by ethical principles that put people first"_ - identifying 6 ethical principles in the framework below: + +![Responsible AI at Microsoft](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +Let's briefly explore these principles. _Transparency_ and _accountability_ are foundational values that other principles built upon - so let's begin there: + +* [**Accountability**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) makes practitioners _responsible_ for their data & AI operations, and compliance with these ethical principles. +* [**Transparency**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) ensures that data and AI actions are _understandable_ (interpretable) to users, explaining the what and why behind decisions. +* [**Fairness**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - focuses on ensuring AI treats _all people_ fairly, addressing any systemic or implicit socio-technical biases in data and systems. +* [**Reliability & Safety**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - ensures that AI behaves _consistently_ with defined values, minimizing potential harms or unintended consequences. +* [**Privacy & Security**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - is about understanding data lineage, and providing _data privacy and related protections_ to users. +* [**Inclusiveness**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - is about designing AI solutions with intention, adapting them to meet a _broad range of human needs_ & capabilities. + +> 🚨 Think about what your data ethics mission statement could be. Explore ethical AI frameworks from other organizations - here are examples from [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles) ,and [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). What shared values do they have in common? How do these principles relate to the AI product or industry they operate in? + +### 2. Ethics Challenges + +Once we have ethical principles defined, the next step is to evaluate our data and AI actions to see if they align with those shared values. Think about your actions in two categories: _data collection_ and _algorithm design_. + +With data collection, actions will likely involve **personal data** or personally identifiable information (PII) for identifiable living individuals. This includes [diverse items of non-personal data](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) that _collectively_ identify an individual. Ethical challenges can relate to _data privacy_, _data ownership_, and related topics like _informed consent_ and _intellectual property rights_ for users. + +With algorithm design, actions will involve collecting & curating **datasets**, then using them to train & deploy **data models** that predict outcomes or automate decisions in real-world contexts. Ethical challenges can arise from _dataset bias_, _data quality_ issues, _unfairness_ ,and _misrepresentation_ in algorithms - including some issues that are systemic in nature. + +In both cases, ethics challenges highlight areas where our actions may encounter conflict with our shared values. To detect, mitigate, minimize, or eliminate, these concerns - we need to ask moral "yes/no" questions related to our actions, then take corrective actions as needed. Let's take a look at some ethical challenges and the moral questions they raise: + + +#### 2.1 Data Ownership + +Data collection often involves personal data that can identify the data subjects. [Data ownership](https://permission.io/blog/data-ownership) is about _control_ and [_user rights_](https://permission.io/blog/data-ownership) related to the creation, processing ,and dissemination of data. + +The moral questions we need to ask are: + * Who owns the data? (user or organization) + * What rights do data subjects have? (ex: access, erasure, portability) + * What rights do organizations have? (ex: rectify malicious user reviews) + +#### 2.2 Informed Consent + +[Informed consent](https://legaldictionary.net/informed-consent/) defines the act of users agreeing to an action (like data collection) with a _full understanding_ of relevant facts including the purpose, potential risks ,and alternatives. + +Questions to explore here are: + * Did the user (data subject) give permission for data capture and usage? + * Did the user understand the purpose for which that data was captured? + * Did the user understand the potential risks from their participation? + +#### 2.3 Intellectual Property + +[Intellectual property](https://en.wikipedia.org/wiki/Intellectual_property) refers to intangible creations resulting from the human initiative, that may _have economic value_ to individuals or businesses. + +Questions to explore here are: + * Did the collected data have economic value to a user or business? + * Does the **user** have intellectual property here? + * Does the **organization** have intellectual property here? + * If these rights exist, how are we protecting them? + +#### 2.4 Data Privacy + +[Data privacy](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) or information privacy refers to the preservation of user privacy and protection of user identity with respect to personally identifiable information. + +Questions to explore here are: + * Is users' (personal) data secured against hacks and leaks? + * Is users' data accessible only to authorized users and contexts? + * Is users' anonymity preserved when data is shared or disseminated? + * Can a user be de-identified from anonymized datasets? + + +#### 2.5 Right To Be Forgotten + +The [Right To Be Forgotten](https://en.wikipedia.org/wiki/Right_to_be_forgotten) or [Right to Erasure](https://www.gdpreu.org/right-to-be-forgotten/) provides additional personal data protection to users. Specifically, it gives users the right to request deletion or removal of personal data from Internet searches and other locations, _under specific circumstances_ - allowing them a fresh start online without past actions being held against them. + +Questions to explore here are: + * Does the system allow data subjects to request erasure? + * Should the withdrawal of user consent trigger automated erasure? + * Was data collected without consent or by unlawful means? + * Are we compliant with government regulations for data privacy? + + +#### 2.6 Dataset Bias + +Dataset or [Collection Bias](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) is about selecting a _non-representative_ subset of data for algorithm development, creating potential unfairness in result outcomes for diverse groups. Types of bias include selection or sampling bias, volunteer bias, and instrument bias. + +Questions to explore here are: + * Did we recruit a representative set of data subjects? + * Did we test our collected or curated dataset for various biases? + * Can we mitigate or remove any discovered biases? + +#### 2.7 Data Quality + +[Data Quality](https://lakefs.io/data-quality-testing/) looks at the validity of the curated dataset used to develop our algorithms, checking to see if features and records meet requirements for the level of accuracy and consistency needed for our AI purpose. + +Questions to explore here are: + * Did we capture valid _features_ for our use case? + * Was data captured _consistently_ across diverse data sources? + * Is the dataset _complete_ for diverse conditions or scenarios? + * Is information captured _accurately_ in reflecting reality? + +#### 2.8 Algorithm Fairness + +[Algorithm Fairness](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) checks to see if the algorithm design systematically discriminates against specific subgroups of data subjects leading to [potential harms](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) in _allocation_ (where resources are denied or withheld from that group) and _quality of service_ (where AI is not as accurate for some subgroups as it is for others). + +Questions to explore here are: + * Did we evaluate model accuracy for diverse subgroups and conditions? + * Did we scrutinize the system for potential harms (e.g., stereotyping)? + * Can we revise data or retrain models to mitigate identified harms? + +Explore resources like [AI Fairness checklists](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) to learn more. + +#### 2.9 Misrepresentation + +[Data Misrepresentation](https://www.sciencedirect.com/topics/computer-science/misrepresentation) is about asking whether we are communicating insights from honestly reported data in a deceptive manner to support a desired narrative. + +Questions to explore here are: + * Are we reporting incomplete or inaccurate data? + * Are we visualizing data in a manner that drives misleading conclusions? + * Are we using selective statistical techniques to manipulate outcomes? + * Are there alternative explanations that may offer a different conclusion? + +#### 2.10 Free Choice +The [Illusion of Free Choice](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) occurs when system "choice architectures" use decision-making algorithms to nudge people towards taking a preferred outcome while seeming to give them options and control. These [dark patterns](https://www.darkpatterns.org/) can cause social and economic harm to users. Because user decisions impact behavior profiles, these actions potentially drive future choices that can amplify or extend the impact of these harms. + +Questions to explore here are: + * Did the user understand the implications of making that choice? + * Was the user aware of (alternative) choices and the pros & cons of each? + * Can the user reverse an automated or influenced choice later? + +### 3. Case Studies + +To put these ethical challenges in real-world contexts, it helps to look at case studies that highlight the potential harms and consequences to individuals and society, when such ethics violations are overlooked. + +Here are a few examples: + +| Ethics Challenge | Case Study | +|--- |--- | +| **Informed Consent** | 1972 - [Tuskegee Syphillis Study](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - African American men who participated in the study were promised free medical care _but deceived_ by researchers who failed to inform subjects of their diagnosis or about availability of treatment. Many subjects died & partners or children were affected; the study lasted 40 years. | +| **Data Privacy** | 2007 - The [Netflix data prize](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) provided researchers with _10M anonymized movie rankings from 50K customers_ to help improve recommendation algorithms. However, researchers were able to correlate anonymized data with personally-identifiable data in _external datasets_ (e.g., IMDb comments) - effectively "de-anonymizing" some Netflix subscribers.| +| **Collection Bias** | 2013 - The City of Boston [developed Street Bump](https://www.boston.gov/transportation/street-bump), an app that let citizens report potholes, giving the city better roadway data to find and fix issues. However, [people in lower income groups had less access to cars and phones](https://hbr.org/2013/04/the-hidden-biases-in-big-data), making their roadway issues invisible in this app. Developers worked with academics to _equitable access and digital divides_ issues for fairness. | +| **Algorithmic Fairness** | 2018 - The MIT [Gender Shades Study](http://gendershades.org/overview.html) evaluated the accuracy of gender classification AI products, exposing gaps in accuracy for women and persons of color. A [2019 Apple Card](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) seemed to offer less credit to women than men. Both illustrated issues in algorithmic bias leading to socio-economic harms.| +| **Data Misrepresentation** | 2020 - The [Georgia Department of Public Health released COVID-19 charts](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) that appeared to mislead citizens about trends in confirmed cases with non-chronological ordering on the x-axis. This illustrates misrepresentation through visualization tricks. | +| **Illusion of free choice** | 2020 - Learning app [ABCmouse paid $10M to settle an FTC complaint](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) where parents were trapped into paying for subscriptions they couldn't cancel. This illustrates dark patterns in choice architectures, where users were nudged towards potentially harmful choices. | +| **Data Privacy & User Rights** | 2021 - Facebook [Data Breach](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) exposed data from 530M users, resulting in a $5B settlement to the FTC. It however refused to notify users of the breach violating user rights around data transparency and access. | + +Want to explore more case studies? Check out these resources: +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - ethics dilemmas across diverse industries. +* [Data Science Ethics course](https://www.coursera.org/learn/data-science-ethics#syllabus) - landmark case studies explored. +* [Where things have gone wrong](https://deon.drivendata.org/examples/) - deon checklist with examples + +> 🚨 Think about the case studies you've seen - have you experienced, or been affected by, a similar ethical challenge in your life? Can you think of at least one other case study that illustrates one of the ethical challenges we've discussed in this section? + +## Applied Ethics + +We've talked about ethics concepts, challenges ,and case studies in real-world contexts. But how do we get started _applying_ ethical principles and practices in our projects? And how do we _operationalize_ these practices for better governance? Let's explore some real-world solutions: + +### 1. Professional Codes + +Professional Codes offer one option for organizations to "incentivize" members to support their ethical principles and mission statement. Codes are _moral guidelines_ for professional behavior, helping employees or members make decisions that align with their organization's principles. They are only as good as the voluntary compliance from members; however, many organizations offer additional rewards and penalties to motivate compliance from members. + +Examples include: + + * [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) Code of Ethics + * [Data Science Association](http://datascienceassn.org/code-of-conduct.html) Code of Conduct (created 2013) + * [ACM Code of Ethics and Professional Conduct](https://www.acm.org/code-of-ethics) (since 1993) + +> 🚨 Do you belong to a professional engineering or data science organization? Explore their site to see if they define a professional code of ethics. What does this say about their ethical principles? How are they "incentivizing" members to follow the code? + +### 2. Ethics Checklists + +While professional codes define required _ethical behavior_ from practitioners, they [have known limitations](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) in enforcement, particularly in large-scale projects. Instead, many data Science experts [advocate for checklists](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), that can **connect principles to practices** in more deterministic and actionable ways. + +Checklists convert questions into "yes/no" tasks that can be operationalized, allowing them to be tracked as part of standard product release workflows. + +Examples include: + * [Deon](https://deon.drivendata.org/) - a general-purpose data ethics checklist created from [industry recommendations](https://deon.drivendata.org/#checklist-citations) with a command-line tool for easy integration. + * [Privacy Audit Checklist](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - provides general guidance for information handling practices from legal and social exposure perspectives. + * [AI Fairness Checklist](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - created by AI practitioners to support the adoption and integration of fairness checks into AI development cycles. + * [22 questions for ethics in data and AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - more open-ended framework, structured for initial exploration of ethical issues in design, implementation, and organizational, contexts. + +### 3. Ethics Regulations + +Ethics is about defining shared values and doing the right thing _voluntarily_. **Compliance** is about _following the law_ if and where defined. **Governance** broadly covers all the ways in which organizations operate to enforce ethical principles and comply with established laws. + +Today, governance takes two forms within organizations. First, it's about defining **ethical AI** principles and establishing practices to operationalize adoption across all AI-related projects in the organization. Second, it's about complying with all government-mandated **data protection regulations** for regions it operates in. + +Examples of data protection and privacy regulations: + + * `1974`, [US Privacy Act](https://www.justice.gov/opcl/privacy-act-1974) - regulates _federal govt._ collection, use ,and disclosure of personal information. + * `1996`, [US Health Insurance Portability & Accountability Act (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - protects personal health data. + * `1998`, [US Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - protects data privacy of children under 13. + * `2018`, [General Data Protection Regulation (GDPR)](https://gdpr-info.eu/) - provides user rights, data protection ,and privacy. + * `2018`, [California Consumer Privacy Act (CCPA)](https://www.oag.ca.gov/privacy/ccpa) gives consumers more _rights_ over their (personal) data. + * `2021`, China's [Personal Information Protection Law](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) just passed, creating one of the strongest online data privacy regulations worldwide. + +> 🚨 The European Union defined GDPR (General Data Protection Regulation) remains one of the most influential data privacy regulations today. Did you know it also defines [8 user rights](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) to protect citizens' digital privacy and personal data? Learn about what these are, and why they matter. + + +### 4. Ethics Culture + +Note that there remains an intangible gap between _compliance_ (doing enough to meet "the letter of the law") and addressing [systemic issues](https://www.coursera.org/learn/data-science-ethics/home/week/4) (like ossification, information asymmetry ,and distributional unfairness) that can speed up the weaponization of AI. + +The latter requires [collaborative approaches to defining ethics cultures](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) that build emotional connections and consistent shared values _across organizations_ in the industry. This calls for more [formalized data ethics cultures](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) in organizations - allowing _anyone_ to [pull the Andon cord](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (to raise ethics concerns early in the process) and making _ethical assessments_ (e.g., in hiring) a core criteria team formation in AI projects. + +--- +## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/3) 🎯 +## Review & Self Study + +Courses and books help with understanding core ethics concepts and challenges, while case studies and tools help with applied ethics practices in real-world contexts. Here are a few resources to start with. + +* [Machine Learning For Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - lesson on Fairness, from Microsoft. +* [Principles of Responsible AI](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - free learning path from Microsoft Learn. +* [Ethics and Data Science](https://resources.oreilly.com/examples/0636920203964) - O'Reilly EBook (M. Loukides, H. Mason et. al) +* [Data Science Ethics](https://www.coursera.org/learn/data-science-ethics#syllabus) - online course from the University of Michigan. +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - case studies from the University of Texas. + +# Assignment + +[Write A Data Ethics Case Study](assignment.md) From 4067f2fd5f9a05dbfe6d45808dc43a05cd6b642f Mon Sep 17 00:00:00 2001 From: alirezaAsadi2018 <44492608+alirezaAsadi2018@users.noreply.github.com> Date: Wed, 6 Oct 2021 15:53:17 +0330 Subject: [PATCH 004/254] Create README.fa.md Add persian translation for base Readme file --- translations/README.fa.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 translations/README.fa.md diff --git a/translations/README.fa.md b/translations/README.fa.md new file mode 100644 index 00000000..8d1c8b69 --- /dev/null +++ b/translations/README.fa.md @@ -0,0 +1 @@ + From 6bb120c116b93e3740e23d398c8bfbe47892b605 Mon Sep 17 00:00:00 2001 From: alirezaAsadi2018 <44492608+alirezaAsadi2018@users.noreply.github.com> Date: Wed, 6 Oct 2021 16:44:24 +0330 Subject: [PATCH 005/254] Make README.fa.md rtl and translate header --- translations/README.fa.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/translations/README.fa.md b/translations/README.fa.md index 8d1c8b69..d6ad626a 100644 --- a/translations/README.fa.md +++ b/translations/README.fa.md @@ -1 +1,16 @@ +
+# علم داده برای مبتدیان - برنامه درسی + + +[![GitHub license](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/) + +
From 13262cc93bdde3b9f14f3873bd172e0661c42e3d Mon Sep 17 00:00:00 2001 From: alirezaAsadi2018 <44492608+alirezaAsadi2018@users.noreply.github.com> Date: Wed, 6 Oct 2021 18:39:05 +0330 Subject: [PATCH 006/254] Translate "Getting Started" and "Introduction" --- translations/README.fa.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/translations/README.fa.md b/translations/README.fa.md index d6ad626a..b582b8f4 100644 --- a/translations/README.fa.md +++ b/translations/README.fa.md @@ -13,4 +13,25 @@ [![GitHub forks](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/) [![GitHub stars](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/) - +طرفداران Azure Cloud در مایکروسافت مفتخر هستند که یک برنامه درسی 10 هفته ای و 20 درسی درباره علم داده ارائه دهند. هر درس شامل کوییزهای پیش از درس و پس از درس، دستورالعمل های کتبی برای تکمیل درس، راه حل و تکلیف است. آموزش پروژه محور ما به شما این امکان را می دهد در حین ساختن یاد بگیرید، راهی ثابت شده جهت "ماندگاری" مهارت های جدید. + +**تشکر از صمیم قلب از نویسندگانمان:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 تشکر ویژه 🙏 از نویسندگان سفیر دانشجویی مایکروسافت، بازبینی کنندگان، و مشارکت کنندگان در محتوا،** به ویژه [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey + + |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| +|:---:| +| علم داده برای مبتدیان - طرح از [@nitya](https://twitter.com/nitya)_ | + + +# شروع به کار + +> **معلمان**، ما در مورد نحوه استفاده از این برنامه درسی [برخی از پیشنهادات را درج کرده ایم](../for-teachers.md). بسیار خوشحال می شویم که بازخوردهای شما را در [انجمن بحث و گفت و گوی](https://github.com/microsoft/Data-Science-For-Beginners/discussions) خود داشته باشیم! + +> **دانش آموزان**، اگر قصد دارید به تنهایی از این برنامه درسی استفاده کنید، کل ریپو را فورک کنید و تمرینات را خودتان به تنهایی انجام دهید. ابتدا با آزمون قبل از درس آغاز کنید، سپس درسنامه را خوانده و باقی فعالیت ها را تکمیل کنید. سعی کنید به جای کپی کردن کد راه حل، خودتان پروژه ها را با درک مفاهیم درسنامه ایجاد کنید. با این حال،کد راه حل در پوشه های /solutions داخل هر درس پروژه محور موجود می باشد. ایده دیگر تشکیل گروه مطالعه با دوستان است تا بتوانید مطالب را با هم مرور کنید، پیشنهاد ما [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa) می باشد. + + + + From 4884470175a2b2156c76065389943d3489050e09 Mon Sep 17 00:00:00 2001 From: alirezaAsadi2018 <44492608+alirezaAsadi2018@users.noreply.github.com> Date: Wed, 6 Oct 2021 21:46:48 +0330 Subject: [PATCH 007/254] Complete Pedagogy, Each lesson includes, and Lessons part --- translations/README.fa.md | 57 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/translations/README.fa.md b/translations/README.fa.md index b582b8f4..d3da65e2 100644 --- a/translations/README.fa.md +++ b/translations/README.fa.md @@ -21,7 +21,7 @@ |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| |:---:| -| علم داده برای مبتدیان - طرح از [@nitya](https://twitter.com/nitya)_ | +| علم داده برای مبتدیان - یادداشت بصری (sketchnote) از [@nitya](https://twitter.com/nitya)_ | # شروع به کار @@ -34,4 +34,59 @@ > 🎥 برای مشاهده ویدیویی در مورد این پروژه و افرادی که آن را ایجاد کرده اند، روی تصویر بالا کلیک کنید!--> + +## آموزش + +ما هنگام تدوین این برنامه درسی دو اصل آموزشی را انتخاب کرده ایم: اطمینان حاصل کنیم که پروژه محور است و شامل آزمونهای مکرر می باشد. دانش آموزان به محض تکمیل این سری آموزشی، اصول اولیه علم داده، شامل اصول اخلاقی، آماده سازی داده ها، روش های مختلف کار با داده ها، تصویرسازی داده ها، تجزیه و تحلیل داده ها، موارد استفاده از علم داده در دنیای واقعی و بسیاری مورد دیگر را فرا می گیرند. + +علاوه بر این، یک کوییز با امتیاز کم قبل از کلاس، مقصود دانش آموز درجهت یادگیری یک موضوع را مشخص می کند، در حالی که کوییز دوم بعد از کلاس ماندگاری بیشتر مطالب را تضمین می کند. این برنامه درسی طوری طراحی شده است که انعطاف پذیر و سرگرم کننده باشد و می تواند به طور کامل یا جزئی مورد استفاده قرار گیرد. پروژه از کوچک شروع می شوند و تا پایان چرخه ۱۰ هفته ای همینطور پیچیده تر می شوند. + +> دستورالعمل های ما را درباره [کد رفتار](../CODE_OF_CONDUCT.md), [مشارکت](../CONTRIBUTING.md), [ترجمه](../TRANSLATIONS.md) ببینید. ما از بازخورد سازنده شما استقبال می کنیم! + + ## هر درس شامل: + +- یادداشت های بصری (sketchnote) اختیاری +- فیلم های مکمل اختیاری +- کوییز های دست گرمی قبل از درس +- درسنامه مکتوب +- راهنمای گام به گام نحوه ساخت پروژه برای درس های مبتنی بر پروژه +- بررسی دانش +- یک چالش +- منابع خواندنی مکمل +- تمرین +- کوییز پس از درس + +> **نکته ای در مورد آزمونها**: همه آزمون ها در [این برنامه](https://red-water-0103e7a0f.azurestaticapps.net/) موجود هستند، برای در مجموع ۴۰ کوییز که هرکدام شامل سه سوال می باشد. کوییزها از داخل درسنامه لینک داده شده اند اما برنامه کوییز را می توان به صورت لوکال اجرا کرد. برای اینکار، دستورالعمل موجود در پوشه `quiz-app` را دنبال کنید. سوالات به تدریج در حال لوکال سازی هستند. + +## Lessons + + +|![ یادداشت بصری (Sketchnote) از [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Roadmap.png)| +|:---:| +| علم داده برای مبتدیان: نقشه راه - یادداشت بصری از [@nitya](https://twitter.com/nitya)_ | + + +| شماره درس | موضوع | گروه بندی درس | اهداف یادگیری | درس پیوند شده | نویسنده | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| ۱ | تعریف علم داده | [معرفی](../1-Introduction/README.md) | مفاهیم اساسی علم داده و نحوه ارتباط آن با هوش مصنوعی، یادگیری ماشین و کلان داده را بیاموزید. | [درسنامه](../1-Introduction/01-defining-data-science/README.md) [ویدیو](https://youtu.be/pqqsm5reGvs) | [Dmitry](http://soshnikov.com) | +| ۲ | اصول اخلاقی علم داده | [معرفی](../1-Introduction/README.md) | مفاهیم اخلاق داده ها، چالش ها و چارچوب ها. | [درسنامه](../1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| ۳ | تعریف داده | [معرفی](../1-Introduction/README.md) | نحوه دسته بندی داده ها و منابع رایج آن. | [درسنامه](../1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| ۴ | مقدمه ای بر آمار و احتمال | [معرفی](../1-Introduction/README.md) | تکنیک های ریاضی آمار و احتمال برای درک داده ها. | [درسنامه](../1-Introduction/04-stats-and-probability/README.md) [ویدیو](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| ۵ | کار با داده های رابطه ای | [کار با داده ها](../2-Working-With-Data/README.md) | مقدمه ای بر داده های رابطه ای و مبانی اکتشاف و تجزیه و تحلیل داده های رابطه ای با زبان پرس و جوی ساختار یافته ، که به SQL نیز معروف است (تلفظ کنید “see-quell”). | [درسنامه](../2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| ۶ | کار با داده های NoSQL | [کار با داده ها](../2-Working-With-Data/README.md) | مقدمه ای بر داده های غیر رابطه ای، انواع مختلف آن و مبانی کاوش و تجزیه و تحلیل پایگاه داده های اسناد(document databases). | [درسنامه](../2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| ۷ | کار با پایتون | [کار با داده ها](../2-Working-With-Data/README.md) | اصول استفاده از پایتون برای کاوش داده با کتابخانه هایی مانند Pandas. توصیه می شود مبانی برنامه نویسی پایتون را بلد باشید. | [درسنامه](../2-Working-With-Data/07-python/README.md) [ویدیو](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| ۸ | آماده سازی داده ها | [کار با داده ها](../2-Working-With-Data/README.md) | مباحث مربوط به تکنیک های داده ای برای پاکسازی و تبدیل داده ها به منظور رسیدگی به چالش های داده های مفقود شده، نادرست یا ناقص. | [درسنامه](../2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| ۹ | تصویرسازی مقادیر | [تصویرسازی داده ها](../3-Data-Visualization/README.md) | نحوه استفاده از Matplotlib برای تصویرسازی داده های پرندگان را می آموزید. 🦆 | [درسنامه](../3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| ۱۰ | تصویرسازی توزیع داده ها | [تصویرسازی داده ها](../3-Data-Visualization/README.md) | تصویرسازی مشاهدات و روندها در یک بازه زمانی. | [درسنامه](../3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| ۱۱ | تصویرسازی نسبت ها | [تصویرسازی داده ها](../3-Data-Visualization/README.md) | تصویرسازی درصدهای مجزا و گروهی. | [درسنامه](../3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| ۱۲ | تصویرسازی روابط | [تصویرسازی داده ها](../3-Data-Visualization/README.md) | تصویرسازی ارتباطات و همبستگی بین مجموعه داده ها و متغیرهای آنها. | [درسنامه](../3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| ۱۳ | تصویرسازی های معنی دار | [تصویرسازی داده ها](../3-Data-Visualization/README.md) | تکنیک ها و راهنمایی هایی برای تبدیل تصویرسازی های شما به خروجی های ارزشمندی جهت حل موثرتر مشکلات و بینش ها. | [درسنامه](../3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| ۱۴ | مقدمه ای بر چرخه حیات علم داده | [چرخه حیات](../4-Data-Science-Lifecycle/README.md) | مقدمه ای بر چرخه حیات علم داده و اولین گام آن برای دستیابی به داده ها و استخراج آن ها. | [درسنامه](../4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| ۱۵ | تجزیه و تحلیل | [چرخه حیات](../4-Data-Science-Lifecycle/README.md) | این مرحله از چرخه حیات علم داده بر تکنیک های تجزیه و تحلیل داده ها متمرکز است. | [درسنامه](../4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| ۱۶ | ارتباطات | [چرخه حیات](../4-Data-Science-Lifecycle/README.md) | این مرحله از چرخه حیات علم داده بر روی ارائه بینش از داده ها به نحوی که درک آنها را برای تصمیم گیرندگان آسان تر بکند، متمرکز است. | [درسنامه](../4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| ۱۷ | علم داده در فضای ابری | [داده های ابری](../5-Data-Science-In-Cloud/README.md) | این سری از درسنامه ها علم داده در فضای ابری و مزایای آن را معرفی می کند. | [درسنامه](../5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) و [Maud](https://twitter.com/maudstweets) | +| ۱۸ | علم داده در فضای ابری | [داده های ابری](../5-Data-Science-In-Cloud/README.md) | آموزش مدل ها با استفاده از ابزارهای کد کمتر(low code). |[درسنامه](../5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) و [Maud](https://twitter.com/maudstweets) | +| ۱۹ | علم داده در فضای | [داده های ابری](../5-Data-Science-In-Cloud/README.md) | استقرار(Deploy) مدل ها با استفاده از استودیوی یادگیری ماشین آژور(Azure Machine Learning Studio). | [درسنامه](../5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) و [Maud](https://twitter.com/maudstweets) | +| ۲۰ | علم داده در طبیعت | [در طبیعت](../6-Data-Science-In-Wild/README.md) | پروژه های علم داده در دنیای واقعی. | [درسنامه](../6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + From a74f0d5aa74d504cda4dc3d3a64dffc9fffa0528 Mon Sep 17 00:00:00 2001 From: alirezaAsadi2018 <44492608+alirezaAsadi2018@users.noreply.github.com> Date: Wed, 6 Oct 2021 21:48:10 +0330 Subject: [PATCH 008/254] translate header "lessons" that was forgotten --- translations/README.fa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README.fa.md b/translations/README.fa.md index d3da65e2..f986ade0 100644 --- a/translations/README.fa.md +++ b/translations/README.fa.md @@ -58,7 +58,7 @@ > **نکته ای در مورد آزمونها**: همه آزمون ها در [این برنامه](https://red-water-0103e7a0f.azurestaticapps.net/) موجود هستند، برای در مجموع ۴۰ کوییز که هرکدام شامل سه سوال می باشد. کوییزها از داخل درسنامه لینک داده شده اند اما برنامه کوییز را می توان به صورت لوکال اجرا کرد. برای اینکار، دستورالعمل موجود در پوشه `quiz-app` را دنبال کنید. سوالات به تدریج در حال لوکال سازی هستند. -## Lessons +## درسنامه |![ یادداشت بصری (Sketchnote) از [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Roadmap.png)| From 0ffd49b93fa3dc58a0ce3b8c7be5d36972589523 Mon Sep 17 00:00:00 2001 From: alirezaAsadi2018 <44492608+alirezaAsadi2018@users.noreply.github.com> Date: Wed, 6 Oct 2021 22:12:26 +0330 Subject: [PATCH 009/254] Finish translating Offline access, PDF, Help Wanted, and Other Curricula --- translations/README.fa.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/translations/README.fa.md b/translations/README.fa.md index f986ade0..d8de4c52 100644 --- a/translations/README.fa.md +++ b/translations/README.fa.md @@ -28,7 +28,7 @@ > **معلمان**، ما در مورد نحوه استفاده از این برنامه درسی [برخی از پیشنهادات را درج کرده ایم](../for-teachers.md). بسیار خوشحال می شویم که بازخوردهای شما را در [انجمن بحث و گفت و گوی](https://github.com/microsoft/Data-Science-For-Beginners/discussions) خود داشته باشیم! -> **دانش آموزان**، اگر قصد دارید به تنهایی از این برنامه درسی استفاده کنید، کل ریپو را فورک کنید و تمرینات را خودتان به تنهایی انجام دهید. ابتدا با آزمون قبل از درس آغاز کنید، سپس درسنامه را خوانده و باقی فعالیت ها را تکمیل کنید. سعی کنید به جای کپی کردن کد راه حل، خودتان پروژه ها را با درک مفاهیم درسنامه ایجاد کنید. با این حال،کد راه حل در پوشه های /solutions داخل هر درس پروژه محور موجود می باشد. ایده دیگر تشکیل گروه مطالعه با دوستان است تا بتوانید مطالب را با هم مرور کنید، پیشنهاد ما [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa) می باشد. +> **دانش آموزان**، اگر قصد دارید به تنهایی از این برنامه درسی استفاده کنید، کل مخزن را فورک کنید و تمرینات را خودتان به تنهایی انجام دهید. ابتدا با آزمون قبل از درس آغاز کنید، سپس درسنامه را خوانده و باقی فعالیت ها را تکمیل کنید. سعی کنید به جای کپی کردن کد راه حل، خودتان پروژه ها را با درک مفاهیم درسنامه ایجاد کنید. با این حال،کد راه حل در پوشه های /solutions داخل هر درس پروژه محور موجود می باشد. ایده دیگر تشکیل گروه مطالعه با دوستان است تا بتوانید مطالب را با هم مرور کنید، پیشنهاد ما [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa) می باشد. + +## Pédagogie + +Nous avons choisi deux principes pédagogiques lors de la création de ce programme d'études : veiller à ce qu'il soit basé sur des projets et à ce qu'il comprenne des quiz fréquents. À la fin de cette série, les élèves auront appris les principes de base de la data science, notamment les concepts éthiques, la préparation des données, les différentes façons de travailler avec les données, la visualisation des données, l'analyse des données, des cas d'utilisation réels de data science, etc. + +De plus, un quiz à faible enjeu à réaliser avant chaque cours permet de préparer l'étudiant à l'apprentissage du sujet, et un second quiz après le cours permet de fixer encore davantage le contenu dans l'esprit des apprenants. Ce curriculum se veut flexible et ammusant et il peut être suivi dans son intégralité ou en partie. Les premiers projets sont modestes et deviennent de plus en plus ardus. + +> Qeulques liens utiles : [Code de conduite](CODE_OF_CONDUCT.md), [Comment contribuer](CONTRIBUTING.md), [Traductions](TRANSLATIONS.md). Tout feedback constructif sera le bienvenu ! + +## Chaque cours comprend : + +- Un sketchnote optionnel +- Une vidéo complémentaire optionnelle +- Un quiz préalable +- Un cours écrit +- Pour les cours basés sur des projets à réaliser : un guide de création du projet +- Des vérifications de connaissances +- Un challenge +- De la lecture complémentaire +- Un exercice +- Un quiz de fin + +> **Concernant les quiz** : Vous pourrez retrouver tous les quiz [dans cette application](https://red-water-0103e7a0f.azurestaticapps.net/). Il y a 40 quiz, avec trois questions chacun. Vous les retrouverez dans chaque cours correspondant, mais vous pouvez aussi utiliser l'application de quiz en local en suivant les instruction disponibles dans le dossier `quiz-app`. Les quiz sont en cours de localisation. + +## Cours + + +|![ Sketchnote réalisé par [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|:---:| +| Data Science For Beginners: Roadmap - _Sketchnote réalisé par [@nitya](https://twitter.com/nitya)_ | + + +| Numéro du cours | Topic | Chapitre | Objectifs d'apprentissage | Liens vers les cours | Auteurs | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Qu'est-ce que la Data Science ? | [Introduction](1-Introduction/README.md) | Apprenez les concepts de base de la data science et le lien entre la data science, l'intelligence artificielle, le machine learning et la big data. | [cours](1-Introduction/01-defining-data-science/README.md) [vidéo](https://youtu.be/pqqsm5reGvs) | [Dmitry](http://soshnikov.com) | +| 02 | Data Science et éthique | [Introduction](1-Introduction/README.md) | Les concepts d'éthique dans le domaine des données, les challenges et les principes d'encadrement. | [cours](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Définition de la data | [Introduction](1-Introduction/README.md) | Comment classifier les données et d'où viennent-elles principalement ? | [cours](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Introduction aux statistiques et aux probabilités | [Introduction](1-Introduction/README.md) | Techniques mathématiques de probabilités et de statistiques au service de la data. | [cours](1-Introduction/04-stats-and-probability/README.md) [vidéo](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Utilisation de données relationnelles | [Exploiter des données](2-Working-With-Data/README.md) | Introduction aux données relationnelles et aux bases d'exploration et d'analyse des données relationnelles avec le Structured Query Language, alias SQL (pronouncé “sicouel”). | [cours](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Utilisation de données NoSQL | [Exploiter des données](2-Working-With-Data/README.md) | Présentation des données non relationelles, les types de données et les fondamentaux de l'exploration et de l'analyse de bases de données documentaires. | [cours](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Utilisation de Python | [Exploiter des données](2-Working-With-Data/README.md) | Les principes de base de Python pour l'exploration de données, et les librairies courantes telles que Pandas. Des connaissances de base de la programmation Python sont recommandées pour ce cours.| [cours](2-Working-With-Data/07-python/README.md) [vidéo](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Préparation des données | [Working With Data](2-Working-With-Data/README.md) | Techniques de nettoyage et de transformation des données pour gérer des données manquantes, inexactesou incomplètes. | [cours](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Visualisation des quantités | [Data Visualization](3-Data-Visualization/README.md) | Apprendre à utiliser Matplotlib pour visualiser des données sur les oiseaux 🦆 | [cours](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Visualisation de la distribution des données | [Data Visualization](3-Data-Visualization/README.md) | Visualisation d'observations et de tendances dans un intervalle. | [cours](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Visualiser des proportions | [Data Visualization](3-Data-Visualization/README.md) | Visualisation de pourcentages discrets et groupés. | [cours](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Visualisation de relations | [Data Visualization](3-Data-Visualization/README.md) | Visualisation de connections et de corrélations entre différents sets de données et leurs variables. | [cours](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Visualisations significatives | [Data Visualization](3-Data-Visualization/README.md) | Techniques et conseils pour donner de la valeur à vos visualisations, les rendre utiles à la compréhension et à la résolution de problèmes. | [cours](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Introduction au cycle de vie de la Data Science | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Présentation du cycle de la data science et des premières étapes d'acquisition et d'extraction des données. | [cours](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Analyse | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Cette étape du cycle de vie de la data science se concentre sur les techniques d'analysation des données. | [cours](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Communication | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Cette étape du cycle de vie de la data science se concentre sur la présentation des informations tirées des données de manière à faciliter la compréhension d'une situation par des décisionnaires. | [cours](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | La Data Science dans le Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Ce cours présente le Cloud et l'intérêt du Cloud pour la Data Science. | [cours](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | +| 18 | La Data Science dans le Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Entraîner un modèle avec des outils de low code. |[cours](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | +| 19 | La Data Science dans le Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Déployer des modèles avec Azure Machine Learning Studio. | [cours](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | +| 20 | La Data Science dans la nature | [In the Wild](6-Data-Science-In-Wild/README.md) | Des projets concrets de data science sur le terrain. | [cours](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | +## Accès hors ligne + +Vous pouvez retrouver cette documentation hors ligne à l'aide de [Docsify](https://docsify.js.org/#/). Forkez ce repository, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, et tapez `docsify serve` dans le dossier racine de ce repository. Vous retrouverez le site web sur le port 3000 de votre localhost : `localhost:3000`. + +> Remarque : vous ne pourrez pas utiliser de notebook avec Docsify. Si vous vouhaitez utilisr un notebook, vous pouvez le faire séparémmnt à l'aide d'un kernel Python dans VS Code. +## PDF + +Vous trouverez un PDF contenant tous les cours du curriculum [ici](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf). + +## Appel à contribution + +Si vous souhaitez traduire le curriculum entier ou en partie, veuillez suivre notre guide de [traduction](TRANSLATIONS.md). + +## Autres Curricula + +Notre équipe a créé d'autres cours ! Ne manquez pas : + +- [Le Machine Learning pour les débutants](https://aka.ms/ml-beginners) +- [L'IoT pour les débutants](https://aka.ms/iot-beginners) +- [Le développement Web pour les débutants](https://aka.ms/webdev-beginners) From 633fbe6576ba18e309863724c07c076147446a7f Mon Sep 17 00:00:00 2001 From: Maud Date: Thu, 7 Oct 2021 10:47:45 +0200 Subject: [PATCH 015/254] Edit image path --- translations/README.fr.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README.fr.md b/translations/README.fr.md index c6ec2c0b..59116f49 100644 --- a/translations/README.fr.md +++ b/translations/README.fr.md @@ -16,7 +16,7 @@ L'équipe Azure Cloud Advocates de Microsoft a le plaisir de vous offrir un curr **🙏 Nous remercions également particulièrement 🙏 les auteurs, correcteurs et contributeurs membres du programme Microsoft Learn Student Ambassadors**, notamment [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| |:---:| | Data Science For Beginners - _Sketchnote réalisé par [@nitya](https://twitter.com/nitya)_ | @@ -57,7 +57,7 @@ De plus, un quiz à faible enjeu à réaliser avant chaque cours permet de prép ## Cours -|![ Sketchnote réalisé par [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|![ Sketchnote réalisé par [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Roadmap.png)| |:---:| | Data Science For Beginners: Roadmap - _Sketchnote réalisé par [@nitya](https://twitter.com/nitya)_ | From 20727d12c2389a45dda3c3e0e7687672620c3070 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 14:36:09 +0300 Subject: [PATCH 016/254] main readme translated --- translations/README.ru.md | 110 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 translations/README.ru.md diff --git a/translations/README.ru.md b/translations/README.ru.md new file mode 100644 index 00000000..ddaf5af8 --- /dev/null +++ b/translations/README.ru.md @@ -0,0 +1,110 @@ +# Наука о данных для начинающих - Учебный план + +[![GitHub license](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/) + +Команда Azure Cloud Advocates от компании Microsoft рада представить вам десятинедельный учебный курс по науке о данным, разбитый на 20 уроков. Каждый урок содержит вступительный и проверочный тесты, инструкции для прохождения, решение и домашнее задание. Мы выбрали методику проектно-ориентированного обучения как проверенный способ освоения новых навыков. Она помогает Вам учиться в процессе работы над проектом. + +**Выражаем благодарность нашим авторам:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Отдельная благодарность 🙏 нашей команде авторов Microsoft Student Ambassador и редакторам,** в особенности [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|:---:| +| Data Science For Beginners - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + + +# Начало работы + +> **Дорогие учителя**, мы [добавили наши рекомендации](for-teachers.md) по работе с курсом. Мы будем рады получить ваши отзывы [на нашем форуме](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! + +> **Дорогие студенты**, для самостоятельного прохождения курса сделайте форк всего репозитория, выполните задания самостоятельно, начиная со вступительных тестов, а после прочтения лекции, выполните оставшуюся часть урока. Постарайтесь достигнуть понимания при выполнении заданий и избегайте копирования решения, несмотря на то, что решение доступно в папке `/solutions` для каждого мини-проекта. Отличной идеей также является организовать учебную группу со своими друзьями и пройти этот курс вместе. Для дальнейшего обучения мы рекомендуем портал [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). + + + + +## О методике обучения + +Мы выбрали два ключевых пункта при разработке данного учебного курса: проектоориентированность и частая проверка знаний. К концу занятий учащиеся изучат основные принципы науки о данных, среди которых этические аспекты работы с данными, подготовку данных, различные способы обработки данных, визуализация данных, анализ данных, примеры практического использования науки о данных и многое другое. + +В дополнение к этому, незначительные тесты перед началом урока поможет мотивировать учеников к изучению темы, а заключительный тест проверит усвоение материала. Мы постарались сделать данный курс гибким и нескучным, поэтому вы можете пройти его полностью или только некоторые разделы. По мере прохождения десятинедельного курса, проекты будут становиться всё сложнее. + +> Ознакомьтесь с нашими [правилами поведения](CODE_OF_CONDUCT.md), [сотрудничества](CONTRIBUTING.md), [перевода](TRANSLATIONS.md). Мы приветствуем конструктивную критику. + +## Каждый урок включает в себя: + +- Небольшой скетч (необязательно) +- Вспомогательное видео (необязательно) +- Вступительный тест +- Учебный материал +- Пошаговую инструкцию для выполнения проекта (для проектно-ориентированных уроков) +- Проверку знаний +- Задачу для выполнения +- Дополнительные материалы +- Домашнее задание +- Проверочный тест + +> **О тестах**: Все тесты Вы можете найти [в этом приложении](https://red-water-0103e7a0f.azurestaticapps.net/), их всего 40 по три вопроса в каждом. Ссылки на них находятся внутри уроков, однако приложение не может быть запущено локально. Следуйте инструкциям в папке `quiz-app`. Постепенно тесты будут локализованы. + +## Содержание уроков + + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|:---:| +| Data Science For Beginners: Roadmap - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + + +| Номер урока | Тема | Раздел | Цели | Ссылка | Автор | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Что такое наука о данных | [Введение](1-Introduction/README.md) | Изучить основные понятия науки о данных и её связь с искусственным интеллектом, машинным обучением и большими данными. | [урок](1-Introduction/01-defining-data-science/README.md) [видео](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Этика и наука о данных | [Введение](1-Introduction/README.md) | Этические аспекты в области науки о данных. | [урок](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Что такое данные | [Введение](1-Introduction/README.md) | Классификация данных и их источники. | [урок](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Введение в статистику и теорию вероятности | [Введение](1-Introduction/README.md) | Вероятностные и статистические приёмы для изучения данных.| [урок](1-Introduction/04-stats-and-probability/README.md) [видео](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Работа с реляционными данными | [Работа с данными](2-Working-With-Data/README.md) | Введение в реляционные данные, основы изучения и анализа реляционных данных при помощи структурированного языка запросов, также известного как SQL (произносится “си-квел”). | [урок](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Работа с NoSQL данными | [Работа с данными](2-Working-With-Data/README.md) | Введение в нереляционные данные, их разнообразие и основы работы с документоориентированными базами данных. | [урок](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Работа с языком программирования Python | [Работа с данными](2-Working-With-Data/README.md) | Основы использования языка Python при исследовании данных на примере библиотеки Pandas. Рекомендуется предварительно познакомиться с Python. | [урок](2-Working-With-Data/07-python/README.md) [видео](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Подготовка данных | [Работа с данными](2-Working-With-Data/README.md) | Методы очистки и трансформации данных для работы с пропусками, ошибками и неполными данными. | [урок](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Визуализация количественных данных | [Визуализация данных](3-Data-Visualization/README.md) | Использование библиотеки Matplotlib для визуализации данных о разнообразии птиц 🦆 | [урок](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Визуализация распределения данных | [Визуализация данных](3-Data-Visualization/README.md) | Визуализация наблюдений и трендов на временнóм интервале | [урок](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Визуализация пропорций | [Визуализация данных](3-Data-Visualization/README.md) | Визуализация дискретных и сгруппированных процентных соотношений. | [урок](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Визуализация связей | [Визуализация данных](3-Data-Visualization/README.md) | Визуализация связей и корреляций между наборами данных и их переменными. | [урок](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Выразительная визуализация | [Визуализация данных](3-Data-Visualization/README.md) | Методы и инструкция для построения визуализации для эффективного решения проблем и получения инсайтов. | [урок](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Введение в жизненный цикл проекта в области науки о данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Введение в жизненный цикл проекта в области науки о данных и его первый этап получения и извлечения данных. | [урок](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Анализ данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сосредоточен на методах анализа данных. | [урок](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Взаимодействие | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сфокусирован на презентацию инсайтов в данных в виде, легком для понимания лицам, принимающим решения. | [урок](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Данная серия уроков знакомит с применением облачных технологии в науке о данных и его преимуществах. | [урок](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 18 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Обучение моделей с минимальным использованием программирования. |[урок](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 19 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Развёртывание моделей с использованием Azure Machine Learning Studio. | [урок](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 20 | Наука о данных на практике | [На практике](6-Data-Science-In-Wild/README.md) | Проекты в области науки о данных на практике. | [урок](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## Оффлайн доступ + +Вы можете запустить данную документацию используя [Docsify](https://docsify.js.org/#/). Сделайте форк данного репозитория, [установите Docsify](https://docsify.js.org/#/quickstart) на Вашем компьютере, и затем введите команду `docsify serve` в корневом разделе репозитория. Веб-сайт будет доступен на порте 3000 Вашей локальной машины: `localhost:3000`. + + +> Отмечаем, что Docsify не поддерживает Jupyter-ноутбуки. Для работы с ними используйте VS Code с запуском ядра Python. + +## PDF файлы + +PDF файлы всех уроков Вы можете найти [здесь](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf). + +## Ищем помощников! + +Если вы хотите поучаствовать в перевода курса, прочтите нашу [инструкцию по переводу](TRANSLATIONS.md). + +## Другие учебные курсы + +Наша команда разрабатывает и другие курсы. Познакомьтесь с ними: + +- [Машинное обучение для начинающих](https://aka.ms/ml-beginners) +- [Интернет вещей для начинающих](https://aka.ms/iot-beginners) +- [Веб-разработка для начинающих](https://aka.ms/webdev-beginners) From 9cfcd091539a60f70810511c628d00fe67051520 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 14:56:22 +0300 Subject: [PATCH 017/254] picture bug fixed --- translations/README.ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README.ru.md b/translations/README.ru.md index ddaf5af8..a8e91f34 100644 --- a/translations/README.ru.md +++ b/translations/README.ru.md @@ -16,7 +16,7 @@ **🙏 Отдельная благодарность 🙏 нашей команде авторов Microsoft Student Ambassador и редакторам,** в особенности [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| |:---:| | Data Science For Beginners - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | @@ -58,7 +58,7 @@ ## Содержание уроков -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Roadmap.png)| |:---:| | Data Science For Beginners: Roadmap - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | From 89f7d6ef1c88444465f13998d91c197473c62149 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 7 Oct 2021 09:15:59 -0300 Subject: [PATCH 018/254] Translated the Base README.md to pt-br --- translations/README.pt-br.md | 106 +++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 translations/README.pt-br.md diff --git a/translations/README.pt-br.md b/translations/README.pt-br.md new file mode 100644 index 00000000..06100182 --- /dev/null +++ b/translations/README.pt-br.md @@ -0,0 +1,106 @@ +# Ciência de Dados para Iniciantes - Um Currículo + +[![GitHub license](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/) + +Consultores da Azure Cloud na Microsoft estão felizes em oferecer um currículo de 10 semanas com 20 aulas sobre Ciência de Dados. Cada aula inclui quizzes pré e pós aula, instruções sobre como completar cada aula, uma solução, e uma tarefa. Nossa pedagogia baseada em projetos permite que você aprenda enquanto constrói, uma maneira comprovada para novas habilidades "grudarem". + +**Muito obrigado aos nossos autores:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Agradecimentos especiais 🙏 para nossos autores, revisores e contribuidores de conteúdo Estudantes Embaixadores da Microsoft,** notavelmente [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|:---:| +| Ciência de Dados para Iniciantes - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + + +# Primeiros Passos + +> **Professores**, nós [incluímos algumas sugestões](for-teachers.md) em como usar esse currículo. Nós adoraríamos ouvir o seu feedback [no nosso fórum de discussão](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! + +> **Estudantes**, para usar esse currículo por conta própria, dê fork nesse repositório, complete os exercícios por sua conta, começando com um quiz pré aula, então leia a aula completando o resto das atividades. Tente criar os projetos compreendendo as aulas ao invés de copiar o código da solução; no entanto o código está disponível na pasta /solutions em cada aula baseada em projeto. Outra ideia seria formar um grupo de estudo com seus amigos e ler o conteúdo juntos. Para mais estudos, nós recomendamos [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). + + + +## Pedagogia + +Nós escolhemos dois princípios pedagógicos enquanto construíamos esse currículo: garantir que seja baseado em projeto e que possua quizzes frequentes. Ao final dessa séries, estudandes terão aprendido o básico dos princípios de ciência de dados, incluindo conceitos éticos, preparação dos dados, maneiras diferentes de trabalhar com os dados, visualização de dados, análise de dados, casos de uso de ciência de dados no mundo real, e mais. + +Além do mais, um quiz com valor baixo antes da aula define a intenção do estudante em relação a aprendizagem de um tópico, enquanto um segundo quiz depois da aula garante uma retenção maior. Esse currículo foi desenhado para ser flexível e divertido e pode ser pego inteiro ou em partes. Os projetos começam pequeno e começam a ficar mais complexos no final do ciclo de 10 semanas. + +> Encontre nossos guias de [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuindo](CONTRIBUTING.md), [Tradução](TRANSLATIONS.md). Nós agradecemos seu feedback construtivo! + +## Cada aula inclui: + +- Nota de esboço opcional +- Vídeo suplementar opcional +- Quiz de aquecimento pré-aula +- Aula escrita +- Para aulas baseadas em projetos, guias passo-a-passo sobre como construir o projeto +- Verificação de conhecimento +- Um desafio +- Leituras suplementares +- Tarefa +- Quiz pós-aula + +> **Nota sobre os quizzes**: Todos os quizzes estão [aqui](https://red-water-0103e7a0f.azurestaticapps.net/), para 40 quizzes de três questões cada. Os links deles estão dentro de cada aula mas o "quiz-app" pode ser executado localmente; siga as intruções na pasta `quiz-app`. Eles estão gradualmente localizados. + +## Tarefas + + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|:---:| +| Ciência de Dados para Iniciantes: Roadmap - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + + +| Número da Aula | Tópico | Agrupamento de Aulas | Objetivos de Apredizados | Link da Aula | Autor | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Definindo Ciência de Dados | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás de ciência de dados e como se relaciona com inteligência artificial, aprendizado de máquina, e big data. | [aula](1-Introduction/01-defining-data-science/README.md) [vídeo](https://youtu.be/pqqsm5reGvs) | [Dmitry](http://soshnikov.com) | +| 02 | Ética de Ciência de Dados | [Introdução](1-Introduction/README.md) | Conceitos da Ética de Ciência de Dados, Desafios e Frameworks. | [aula](1-introdução/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Definindo Dados | [Introdução](1-Introduction/README.md) | Como dados são classificados e sua fontes de origem comuns. | [aula](1-introdução/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Introdução à Probabilidade e Estatística | [Introdução](1-introdução/README.md) | As técnicas matemáticas de probabilidade e estatísca para enteder dados. | [aula](1-introdução/04-stats-and-probability/README.md) [vídeo](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Trabalhando com Dados Relacionais | [Trabalhando com Dados](2-Working-With-Data/README.md) | Introdução à dados relacionais e o básico de exploração e análise de dados relacionais com Linguagem de Consulta Estruturada (Structured Query Language), também conhecida como SQL (pronunciada “see-quell”). | [aula](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Trabalhando com Dados NoSQL | [Trabalhando com Dados](2-Working-With-Data/README.md) | Introdução à dados não relacionais, seus variados tipos e o básico de exploração e análise de bancos de dados de documentos. | [aula](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Trabalhando com Python | [Trabalhando com Dados](2-Working-With-Data/README.md) | Básico de Python para exploração de dados com bibliotecas como o Pandas. Compreensão fundamental de Python é recomendado. | [aula](2-Working-With-Data/07-python/README.md) [vídeo](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Preparação dos Dados | [Trabalhando com Dados](2-Working-With-Data/README.md) | Tópicos sobre técnicas de dados para limpar e transformas os dados para lidar com desafios de dados ausentes, inacurados, ou incompletos. | [aula](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Visualizando Quantidades | [Visualização de Dados](3-Data-Visualization/README.md) | Aprenda a como usar o Matplotlib para visualizar dados sobre pássaros 🦆 | [aula](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Visualizando Distribuições de Dados | [Visualização de Dados](3-Data-Visualization/README.md) | Visualizando observações e tendências dentro de um itnervalo. | [aula](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Visualizando Proporções | [Visualização de Dados](3-Data-Visualization/README.md) | Visualizando porcentagens discretas e agrupadas. | [aula](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Visualizandos Relações | [Visualização de Dados](3-Data-Visualization/README.md) | Visualizando conexões e correlações entre sets de dados e suas variáveis. | [aula](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Visualizações Significativas | [Visualização de Dados](3-Data-Visualization/README.md) | Técnicas e orientação para fazer suas visualizações valiosas para resolver problemas efetivamente e intuições. | [aula](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Introdução ao ciclo de Ciência de Dados | [Ciclo de Vida](4-Data-Science-Lifecycle/README.md) | Introdução ao ciclo de vida de ciência de dados e seu primeiro passo de adquirir e extrair dados. | [aula](4-Data-Science-Lifecycle/14-introdução/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Análise | [Ciclo de Vida](4-Data-Science-Lifecycle/README.md) | Essa fase do ciclo de vida de ciência de dados foca nas técnicas de análise dados. | [aula](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Comunicação | [Ciclo de Vida](4-Data-Science-Lifecycle/README.md) | Essa fase do ciclo de vida de ciência de dados foca em apresentar as intuições dos dados de uma forma que fique fácil para tomadores de decisão entenderem. | [aula](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Ciẽncia de Dados na Nuvem | [Dados na Nuvem](5-Data-Science-In-Cloud/README.md) | Esse compilado de aula introdiz ciência de dados na nuvem e seus benefícios. | [aula](5-Data-Science-In-Cloud/17-introdução/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) e [Maud](https://twitter.com/maudstweets) | +| 18 | Ciẽncia de Dados na Nuvem | [Dados na Nuvem](5-Data-Science-In-Cloud/README.md) | Treinando modelos usando ferramentas de Low Code. |[aula](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) e [Maud](https://twitter.com/maudstweets) | +| 19 | Ciẽncia de Dados na Nuvem | [Dados na Nuvem](5-Data-Science-In-Cloud/README.md) | Implantando modelos com Azure Machine Learning Studio. | [aula](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) e [Maud](https://twitter.com/maudstweets) | +| 20 | Ciência de Dados na Selva | [Na Selva](6-Data-Science-In-Wild/README.md) | Projetos de Ciência de Dados no mundo real. | [aula](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | +## Acesso offline + +Você pode executar essa documentação offline usando [Docsify](https://docsify.js.org/#/). Dê fork nesse repositório, [instale Docsify](https://docsify.js.org/#/quickstart) na sua máquina local e depois, na pasta raíz desse repositório, digite `docsify serve`. O website vai usar a porta 3000 no seu localhost: `localhost:3000`. + +> Note, notebooks não serão renderizados via Docsify, então quando precisar rodas um notebook, faça isso separadamente no VS Code rodando um kernel Python. +## PDF + +Um PDF com todas as aulas podem ser encontrados [aqui](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf) + +## Procura-se Ajuda! + +Se você quer traduzir tudo ou parte do currículo, por favor siga o nosso guia de [Tradução](TRANSLATIONS.md) guia. + +## Outros Currículos + +Nosso time produz outros currículos! Confira: + +- [Aprendizado de Máquina para Iniciantes](https://aka.ms/ml-beginners) +- [IoT para Iniciantes](https://aka.ms/iot-beginners) +- [Desenvolvimento Web para Iniciantes](https://aka.ms/webdev-beginners) From 6d0b978baeb9f582e84c19ce514645de6c254019 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 7 Oct 2021 09:26:44 -0300 Subject: [PATCH 019/254] Translated Introduction Base README and path fixes --- 1-Introduction/translations/README.pt-br.md | 17 +++++++++++++++++ translations/README.pt-br.md | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 1-Introduction/translations/README.pt-br.md diff --git a/1-Introduction/translations/README.pt-br.md b/1-Introduction/translations/README.pt-br.md new file mode 100644 index 00000000..ecba7b04 --- /dev/null +++ b/1-Introduction/translations/README.pt-br.md @@ -0,0 +1,17 @@ +# Introdução a Ciência de Dados + +![dados em ação](../images/data.jpg) +> Foto por Stephen Dawson em Unsplash + +Nessas aulas, você irá descobrir como Ciência de Dados é definida e aprender sobre considerações éticas que devem ser consideradas por um cientista de dado. Você também irá aprender como dados são definidos e um pouco sobre estatística e probabilidade, os principais domínios acadêmicos da Ciência de Dados. + +### Tópicos + +1. [Definindo Ciência de Dados](01-defining-data-science/README.md) +2. [Ética da Ciência de Dados](02-ethics/README.md) +3. [Definindo Dados](03-defining-data/README.md) +4. [Introdução a Estatística e Probabilidade](04-stats-and-probability/README.md) + +### Cŕeditos + +Essas aulas foram escritas com ❤️ por [Nitya Narasimhan](https://twitter.com/nitya) e [Dmitry Soshnikov](https://twitter.com/shwars). diff --git a/translations/README.pt-br.md b/translations/README.pt-br.md index 06100182..aa5b1ad4 100644 --- a/translations/README.pt-br.md +++ b/translations/README.pt-br.md @@ -16,7 +16,7 @@ Consultores da Azure Cloud na Microsoft estão felizes em oferecer um currículo **🙏 Agradecimentos especiais 🙏 para nossos autores, revisores e contribuidores de conteúdo Estudantes Embaixadores da Microsoft,** notavelmente [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| |:---:| | Ciência de Dados para Iniciantes - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | @@ -57,7 +57,7 @@ Além do mais, um quiz com valor baixo antes da aula define a intenção do estu ## Tarefas -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Roadmap.png)| |:---:| | Ciência de Dados para Iniciantes: Roadmap - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | From d802b3066fe0653ce931d8891e0eff2bbe195615 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 16:07:06 +0300 Subject: [PATCH 020/254] 1-base readme translated --- 1-Introduction/translations/README.ru.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 1-Introduction/translations/README.ru.md diff --git a/1-Introduction/translations/README.ru.md b/1-Introduction/translations/README.ru.md new file mode 100644 index 00000000..abff417a --- /dev/null +++ b/1-Introduction/translations/README.ru.md @@ -0,0 +1,17 @@ +# Введение в науку о данных + +![data in action](../images/data.jpg) +> Photo by Stephen Dawson on Unsplash + +Пройдя данные уроки Вы узнаете, что такое наука о данных и изучите этические аспекты, которые должен учитывать каждый дата сайентист. Вы также узнаете, что такое данные и немного познакомитесь со статистикой и теорией вероятности, центральной областью науки о данных. + +### Разделы + +1. [Что такое наука о данных](01-defining-data-science/README.md) +2. [Этика и наука о данных](02-ethics/README.md) +3. [Что такое данные](03-defining-data/README.md) +4. [Введение в статистику и теорию вероятности](04-stats-and-probability/README.md) + +### Благодарности + +Данные уроки были написаны с ❤️ [Nitya Narasimhan](https://twitter.com/nitya) и [Dmitry Soshnikov](https://twitter.com/shwars). From 791bd227c15aa3441bf5822bb48fd23b26bb6906 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 16:36:02 +0300 Subject: [PATCH 021/254] 2-base readme translated --- 2-Working-With-Data/translations/README.ru.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 2-Working-With-Data/translations/README.ru.md diff --git a/2-Working-With-Data/translations/README.ru.md b/2-Working-With-Data/translations/README.ru.md new file mode 100644 index 00000000..0d0e865f --- /dev/null +++ b/2-Working-With-Data/translations/README.ru.md @@ -0,0 +1,17 @@ +# Работа с данными + +![data love](../images/data-love.jpg) +> Photo by Alexander Sinn on Unsplash + +На этих уроках Вы изучите способы управления данными, методы работы с ними и как данные могут быть использованы в приложениях. Вы познакомитесь с реляционными и нереляционными базами данных и с тем, как они хранят данные. Вы овладеете основами обработки данных при помощи языка программирования Python. + +### Разделы + +1. [Реляционные базы данных](05-relational-databases/README.md) +2. [Нереляционные базы данных](06-non-relational/README.md) +3. [Работа с языком программирования Python](07-python/README.md) +4. [Подготовка данных](08-data-preparation/README.md) + +### Благодарности + +Данные уроки были написаны с ❤️ [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) и [Jasmine Greenaway](https://twitter.com/paladique) From ce9f44685c477ab0aaca90a98b5b627583c158fd Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 17:50:48 +0300 Subject: [PATCH 022/254] 3-base readme translated --- 3-Data-Visualization/translations/README.md | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 3-Data-Visualization/translations/README.md diff --git a/3-Data-Visualization/translations/README.md b/3-Data-Visualization/translations/README.md new file mode 100644 index 00000000..f2ae42be --- /dev/null +++ b/3-Data-Visualization/translations/README.md @@ -0,0 +1,29 @@ +# Визуализация данных + +![a bee on a lavender flower](../images/bee.jpg) +> Photo by Jenna Lee on Unsplash + + +Визуализация данных - это одна из важнейших задач дата сайентиста. Одним графиком можно заменить тысячу слов. Именно визуализация может помочь Вам распознать все особенности Ваших данных, такие как всплески, выбросы, группы, тренды и др., и понять, какую историю хранят в себе Ваши данные. + +В этих пяти уроках Вам предлагается исследовать природные данные и создать красивую визуализацию с использованием различных инструментов. + +### Разделы + +1. [Визуализация количественных данных](09-visualization-quantities/README.md) +1. [Визуализация распределения данных](10-visualization-distributions/README.md) +1. [Визуализация пропорций](11-visualization-proportions/README.md) +1. [Визуализация связей](12-visualization-relationships/README.md) +1. [Выразительная визуализация](13-meaningful-visualizations/README.md) + +### Благодарности + +Данные уроки были написаны с 🌸 [Джен Лупер](https://twitter.com/jenlooper). + +🍯 Данные о производстве мёда в США хранятся в проекте Джессики Ли на портале [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). [Данные](https://usda.library.cornell.edu/concern/publications/rn301137d) были получены от [министерства сельского хозяйства США](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 Данные о разнообразии грибов выложены при содействии Хаттерас Дантон и также хранятся на портале [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset). Данный датасет содержит экземпляры 23 видов Агариковых (Пластинчатых) грибов семейства Шампиньоновые. Грибы были нарисованы в книге "The Audubon Society Field Guide to North American Mushrooms" в 1981 году. Данный датасет был передан репозиторию UCI ML в 1987 году. + +🦆 Данные о разнообразии птиц Миннесоты расположены на портале [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) и были собраны с сайта [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) Ханной Коллинс. + +Все датасеты распространяются по лицензии [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). \ No newline at end of file From 69fbc7cd2ee95c23634acb36eff5fed7005fab55 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 18:02:23 +0300 Subject: [PATCH 023/254] naming bug fixed --- 3-Data-Visualization/translations/{README.md => README.ru.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 3-Data-Visualization/translations/{README.md => README.ru.md} (100%) diff --git a/3-Data-Visualization/translations/README.md b/3-Data-Visualization/translations/README.ru.md similarity index 100% rename from 3-Data-Visualization/translations/README.md rename to 3-Data-Visualization/translations/README.ru.md From f8256d292c8cafaa714b4fa94b1b29b1c3855d3d Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 18:17:11 +0300 Subject: [PATCH 024/254] 4-base readme translated, base readme improved --- .../translations/README.ru.md | 16 ++++++++++++++++ translations/README.ru.md | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 4-Data-Science-Lifecycle/translations/README.ru.md diff --git a/4-Data-Science-Lifecycle/translations/README.ru.md b/4-Data-Science-Lifecycle/translations/README.ru.md new file mode 100644 index 00000000..cf05568e --- /dev/null +++ b/4-Data-Science-Lifecycle/translations/README.ru.md @@ -0,0 +1,16 @@ +# Введение в жизненный цикл проекта в области науки о данных + +![communication](../images/communication.jpg) +> Photo by Headway on Unsplash + +В данных уроках вы познакомитесь с этапами жизненного циклы проекта в области науки о данных, включая анализ данных и взаимодействие на их основе. + +### Разделы + +1. [Введение в жизненный цикл проекта в области науки о данных](14-Introduction/README.md) +2. [Анализ данных](15-Analyzing/README.md) +3. [Взаимодействие на основе данных](16-communication/README.md) + +### Благодарности + +Данные уроки были написаны с ❤️ [Jalen McGee](https://twitter.com/JalenMCG) и [Jasmine Greenaway](https://twitter.com/paladique) diff --git a/translations/README.ru.md b/translations/README.ru.md index a8e91f34..04991d13 100644 --- a/translations/README.ru.md +++ b/translations/README.ru.md @@ -80,7 +80,7 @@ | 13 | Выразительная визуализация | [Визуализация данных](3-Data-Visualization/README.md) | Методы и инструкция для построения визуализации для эффективного решения проблем и получения инсайтов. | [урок](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | | 14 | Введение в жизненный цикл проекта в области науки о данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Введение в жизненный цикл проекта в области науки о данных и его первый этап получения и извлечения данных. | [урок](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | | 15 | Анализ данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сосредоточен на методах анализа данных. | [урок](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | -| 16 | Взаимодействие | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сфокусирован на презентацию инсайтов в данных в виде, легком для понимания лицам, принимающим решения. | [урок](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 16 | Взаимодействие на основе данных| [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сфокусирован на презентацию инсайтов в данных в виде, легком для понимания лицам, принимающим решения. | [урок](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | | 17 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Данная серия уроков знакомит с применением облачных технологии в науке о данных и его преимуществах. | [урок](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | | 18 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Обучение моделей с минимальным использованием программирования. |[урок](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | | 19 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Развёртывание моделей с использованием Azure Machine Learning Studio. | [урок](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | From 7e3c9eb01744fc0db76bbf1bde3fd5f50a721d7e Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 19:26:48 +0300 Subject: [PATCH 025/254] 5-base readme translated --- .../translations/README.ru.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 5-Data-Science-In-Cloud/translations/README.ru.md diff --git a/5-Data-Science-In-Cloud/translations/README.ru.md b/5-Data-Science-In-Cloud/translations/README.ru.md new file mode 100644 index 00000000..cade9559 --- /dev/null +++ b/5-Data-Science-In-Cloud/translations/README.ru.md @@ -0,0 +1,22 @@ +# Наука о данных в облачной инфраструктуре + +![cloud-picture](../images/cloud-picture.jpg) + +> Photo by [Jelleke Vanooteghem](https://unsplash.com/@ilumire) from [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape) + +Когда приходит время анализировать по-настоящему большие данные, использование облачных технологий может обеспечить неоспоримое преимущество. В следующих трёх уроках вы узнаете, что такое облачная инфраструктура и чем она может быть полезна. Для этого мы исследуем набор данных о сердечной недостаточности и построим модель оценки вероятности появления данной болезни. Мы применим все преимущества облачных технологий для тренировки, развёртывания и использования модели в двумя способами. Первый спосои - это использование только пользовательского интерфейса с минимальным применением программирования, второй - использование инструмента под названием Azure Machine Learning Software Developer Kit (Azure ML SDK). + +![project-schema](../19-Azure/images/project-schema.PNG) + +### Разделы + +1. [Преимущества облачной инфраструктуры для науки о данных.](17-Introduction/README.md) +2. [Наука о данных в облачной инфраструктуре: подходы с минимальным использованием программирования и без него.](18-Low-Code/README.md) +3. [Наука о данных в облачной инфраструктуре: применение Azure ML SDK](19-Azure/README.md) + +### Благодарности +Данные уроки были написаны с ☁️ и 💕 [Maud Levy](https://twitter.com/maudstweets) and [Tiffany Souterre](https://twitter.com/TiffanySouterre) + + +Данные для прогнозирования сердечной недостаточности были собраны [ +Larxel](https://www.kaggle.com/andrewmvd) и хранятся на портале [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data). Датасет распространятеся по лицензии [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) From 2c198fac816fe75f652b41d8ff9ec72caba87917 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 19:27:21 +0300 Subject: [PATCH 026/254] naming bug fixed, translation updated --- README.md | 6 +++--- translations/README.ru.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4843d1f8..b2b03ed8 100644 --- a/README.md +++ b/README.md @@ -80,9 +80,9 @@ In addition, a low-stakes quiz before a class sets the intention of the student | 14 | Introduction to the Data Science lifecycle | [Lifecycle](4-Data-Science-Lifecycle/README.md) | Introduction to the data science lifecycle and its first step of acquiring and extracting data. | [lesson](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | | 15 | Analyzing | [Lifecycle](4-Data-Science-Lifecycle/README.md) | This phase of the data science lifecycle focuses on techniques to analyze data. | [lesson](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | | 16 | Communication | [Lifecycle](4-Data-Science-Lifecycle/README.md) | This phase of the data science lifecycle focuses on presenting the insights from the data in a way that makes it easier for decision makers to understand. | [lesson](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | -| 17 | Data Science in the Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | This series of lessons introduces data science in the cloud and its benefits. | [lesson](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 18 | Data Science in the Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Training models using Low Code tools. |[lesson](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 19 | Data Science in the Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Deploying models with Azure Machine Learning Studio. | [lesson](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 17 | Why use Cloud for Data Science? | [Cloud Data](5-Data-Science-In-Cloud/README.md) | This series of lessons introduces data science in the cloud and its benefits. | [lesson](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 18 | Data Science in the Cloud: The "Low code/No code" way | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Training models using Low Code tools. |[lesson](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 19 | Data Science in the Cloud: The "Azure ML SDK" way | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Deploying models with Azure Machine Learning Studio. | [lesson](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | | 20 | Data Science in the Wild | [In the Wild](6-Data-Science-In-Wild/README.md) | Data science driven projects in the real world. | [lesson](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | ## Offline access diff --git a/translations/README.ru.md b/translations/README.ru.md index 04991d13..56aeb7cc 100644 --- a/translations/README.ru.md +++ b/translations/README.ru.md @@ -81,9 +81,9 @@ | 14 | Введение в жизненный цикл проекта в области науки о данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Введение в жизненный цикл проекта в области науки о данных и его первый этап получения и извлечения данных. | [урок](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | | 15 | Анализ данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сосредоточен на методах анализа данных. | [урок](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | | 16 | Взаимодействие на основе данных| [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сфокусирован на презентацию инсайтов в данных в виде, легком для понимания лицам, принимающим решения. | [урок](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | -| 17 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Данная серия уроков знакомит с применением облачных технологии в науке о данных и его преимуществах. | [урок](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 18 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Обучение моделей с минимальным использованием программирования. |[урок](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 19 | Наука о данных в облачной инфраструктуре | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Развёртывание моделей с использованием Azure Machine Learning Studio. | [урок](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 17 | Преимущества облачной инфраструктуры для науки о данных. | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Данная серия уроков знакомит с применением облачных технологии в науке о данных и его преимуществах. | [урок](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 18 | Наука о данных в облачной инфраструктуре: подходы с минимальным использованием программирования и без него. | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Обучение моделей с минимальным использованием программирования. |[урок](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 19 | Наука о данных в облачной инфраструктуре: применение Azure ML SDK | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Развёртывание моделей с использованием Azure Machine Learning Studio. | [урок](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | | 20 | Наука о данных на практике | [На практике](6-Data-Science-In-Wild/README.md) | Проекты в области науки о данных на практике. | [урок](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | ## Оффлайн доступ From ad0fc0ab250117e47c2fddfc737c66b3f081ed84 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 7 Oct 2021 19:30:47 +0300 Subject: [PATCH 027/254] 6-base readme translated --- 6-Data-Science-In-Wild/translations/README.ru.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 6-Data-Science-In-Wild/translations/README.ru.md diff --git a/6-Data-Science-In-Wild/translations/README.ru.md b/6-Data-Science-In-Wild/translations/README.ru.md new file mode 100644 index 00000000..235ab191 --- /dev/null +++ b/6-Data-Science-In-Wild/translations/README.ru.md @@ -0,0 +1,11 @@ +# Наука о данных на практике + +Примеры реального использования науки о данных в приложениях во многих отраслях. + +### Разделы + +1. [Наука о данных на практике](20-Real-World-Examples/README.md) + +### Благодарности + +Написано с ❤️ [Nitya Narasimhan](https://twitter.com/nitya) From 53f9296d65e2dcb1ebacf8e05565585de2e97dd2 Mon Sep 17 00:00:00 2001 From: Izael Date: Fri, 8 Oct 2021 09:08:05 -0300 Subject: [PATCH 028/254] Translated 1-01 Defining Data Science --- .../translations/README.pt-br.md | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 1-Introduction/01-defining-data-science/translations/README.pt-br.md diff --git a/1-Introduction/01-defining-data-science/translations/README.pt-br.md b/1-Introduction/01-defining-data-science/translations/README.pt-br.md new file mode 100644 index 00000000..b0c065a9 --- /dev/null +++ b/1-Introduction/01-defining-data-science/translations/README.pt-br.md @@ -0,0 +1,165 @@ +# Definindo Ciências de Dados + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/01-Definitions.png)| +|:---:| +|Definindo Ciências de Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +--- + +[![Definindo Ciências de Dados](../images/video-def-ds.png)](https://youtu.be/pqqsm5reGvs) + +## [Quiz pré-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) + +## O que são Dados? +Na nossa vida cotidiana, nós estamos constantemente cercados por dados. O texto que você está lendo agora é um dado, a lista de telefones dos seus amigos no seu celular é um dado, assim como o horário atual mostrado no seu relógio. Como seres humanos, nós operamos naturalmente com dados. contando o dinheiro que temos ou escrevendo cartas para os nossos amigos. + +No entanto, os dados se tornaram muito mais críticos com a criação de computadores. O papel principal dos computadores é realizar computações, mas eles precisam de dados para operar sobre. Portanto, nós precisamos entender como os computadores armazenam e processam dados. + +Com o surgimento da Internet, o papel dos computadores como dispositivos de manipulação de dados aumentou. Se você parar para pensar, agora nós usamos computadores cada vez mais para processamento de dados e comunicação, ao invés de cálculos reais. Quando escrevemos um e-mail para um amigo ou procuramos por alguma informação na Internet - nós estamos essencialmente criando, armazenando, transmitindo, e manipulando dados. +> Você consegue se lembrar da última vez que usou computadores para de fato computar algo? + +## O que é Ciência de Dados? + +Na [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Ciência de Dados** é definido como *um campo científico que utiliza métodos científicos para extrair conhecimento e insights de dados estruturados e não estruturados, e aplicar esse conhecimento e insights acionáveis de dados em uma ampla gama de domínios de aplicativos*. + +Essa definição destaca os seguintes aspectos importantes da ciência de dados: + +* O principal objetivo da ciência de dados é **extrair conhecimento** dos dados, em outras palavras - **entender** os dados, encontrar alguma relação escondida e construir um **modelo**. +* Ciência de dados utiliza **métodos científicos**, como probabilidade e estatística. Na verdade, quando o termo *ciência de dados* foi introduzido pela primeira vez, algumas pessoas argumentaram que ciência de dados é apenas um nome chique para estatística. Hoje em dia ficou mais evidente que esse campo é muito mais amplo. +* Conhecimento adquirido deve ser aplicado para produzir algum **insights acionável**. +* Nós devemos ser capazes de operar tanto nos dados **estruturados** quanto nos **não estruturados**. Nós voltaremos a discutir diferentes tipos de dados mais para a frente no curso. +* **Domínio de aplicação** é um conceito importante, e cientistas de dados frequentemente precisam de pelo menos algum grau de perícia no domínio do problema. + +> Outro importante aspecto da Ciência de Dados é que ela estuda como os dados podem ser coletados, armazenados e operados por meio de computadores. Enquanto estatística nos fornece fundações matemáticas, ciência de dados aplica conceitos matemáticos para de fato desenhar percepções a partir dos dados. + +Uma das formas (atribuída a [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) para olhar para ciência de dados é considerar que ela é um paradigma separado da ciência: +* **Empírico**, onde nos baseamos majoritariamente nas observações e resultados dos experimentos +* **Teórico**, onde novos conceitos surgem a partir de conhecimentos cientificos já existentes +* **Computacional**, onde nós descobrimos novos princípios baseado em algum experimento computacional +* **Orientado por Dados**, baseado na descoberta de relações e padrões nos dados + +## Outros Campos Relacionados + +Já que dados são um conceito difundido, a ciência de dados em si também é um campo amplo, abrangendo muitas outras disciplinas relacionadas. + +
+
Banco de Dados
+
+A coisa mais óbvia a considerar é **como armazenar** os dados, ex. como estruturá-los de uma forma que permite um processamento rápido. Existem diferentes tipos de banco de dados que armazenam dados estruturados e não estruturados, que nós vamos considerar nesse curso. +
+
Big Data
+
+Frequentemente precisamos armazenar e processar quantidades muito grandes de dados com estruturas relativamente simples. Existem algumas abordagens e ferramentas especiais para armazenar esses dados de uma forma distribuída em um cluster de computer, e processá-los de forma eficiente. +
+
Aprendizado de Máquina
+
+Uma das maneiras de entender dados é **construir um modelo** que será capaz de predizer o resultado esperado. Ser capaz de aprender esses modelos a partir de dados é a área estudada em **aprendizado de máquina**. Você talvez queira olhar o nosso Currículo de Aprendizado de Máquina para Iniciantes para ir mais a fundo nessa área. +
+
Inteligência Artificial
+
+Como aprendizado de máquina, inteligência artificial também se baseia em dados, e envolve construir modelos de alta complexidade que irão exibir um comportamento similar ao dos seres humanos. Além disso, métodos de IA frequentemente nos permite transformar dados não estruturados (ex. linguagem natural) em dados estruturados extraindo algumas percepções. +
+
Visualização
+
+Vastas quantidades de dados são incompreensíveis para o ser humano, mas uma vez que criamos visualizações úteis - nós podemos começar a dar muito mais sentido aos dados, e desenhar algumas conclusões. Portanto, é importante conhecer várias formas de visualizar informação - algo que vamos cobrir na Seção 3 do nosso curso. Áreas relacionadas também incluem **Infográficos**, e **Interação Humano-Computador** no geral. +
+
+ +## Tipos de Dados + +Como nós já mencionamos - dados estão em todos os lugares, nós só precisamos coletá-los da maneira certa! É útil distinguir entre dados **estruturados** e **não estruturados**. Os primeiros são tipicamente representados em alguma forma bem estruturado, frequentemente como uma ou várias tabelas, enquanto o segundo é apenas uma coleção de arquivos. Algumas vezes nós também podemos falar de dados **semi estruturados**, que possuem alguma estrutura que pode variar muito. + +| Estruturado | Semi-estruturado | Não estruturado | +|----------- |-----------------|--------------| +| Lista de pessoas com seus números de telefones | Páginas da Wikipédia com links | Texto da Encyclopædia Britannica | +| Temperatura de todos os quartos de um prédio a cada minuto nos últimos 20 anos | Coleções de artigos cientificos em formato JSON com autores, datas de publicação, e abstract | Compartilhamento de arquivos com documentos corporativos | +| Dados para idades e gêneros de todas as pessoas entrando em um prédio | Páginas da Internet | Feed de vídeo bruto da câmera de vigilância | + +## Onde conseguir Dados + +Existem muitas fontes possíveis de dados, e será impossível listar todas elas. No entanto, vamos mencionar alguns dos lugares típicos onde você pode obter dados: + +* **Estruturado** + - **Internet das Coisas**, incluindo dados de diferentes sensores, como sensores de temperatura ou de pressão, fornece muitos dados úteis. Por exemplo, se um escritório de um prédio é equipado com sensores IoT, nós podemos automaticamente controlar o aquecimento e a iluminação com o objetivo de minimizar custos. + - **Pesquisas** que podemos fazer para os usuários depois de uma compra, ou visitar um web site. + - **Análise de comportamento** pode, por exemplo, nos ajudar a entender o quão longe um usuário vai dentro de um site, e qual tipicamente é a razão para deixar um site. +* **Não estruturado** + - **Textos** podem ser uma fonte rica de insights, começando da **pontuação geral de sentimento** (sentiment score), até a extração de palavras chaves e até algum significado semântico. + - **Imagens** ou **Vídeo**. Um vídeo de uma câmera de vigilância pode ser usado para estimar o tráfico na rua, e informar as pessoas sobre possíveis engarrafamentos. + - **Logs** de servidores web pode ser usado para entender quais páginas do nosso site são mais visitadas, e por quanto tempo. +* Semi-estruturado + - Grafos das **Redes Sociais** podem ser uma boa fonte de dados sobre a personalidade do usuário e a eficácia potencial em espalhar informações. + - Quando nós temos um monte de fotos de uma festa, nós podemos tentar extrair dados sobre **Dinâmicas de Grupo** construindo um grafo de pessoas tirando fotos umas das outras. + +Conhecendo as diferentes fontes possíveis de dados, você pode tentar pensar sobre diferentes cenários onde técnicas de ciência de dados podem ser aplicadas para conhecer a situação melhor, e melhorar o processo de negócio. + +## O que você pode fazer com Dados + +Em Ciência de Dados, nós focamos em seguir os passos da jornada dos dados: + +
+
1) Aquisição de Dados
+
+Primeiro passo é coletar os dados. Enquanto em muitos casos isso pode ser um processo direto, como dados vindo para um banco de dados a partir de uma aplicação web, algumas vezes nós precisamos usar técnicas especiais. Por exemplo, dados de sensores de IoT podem ser muito pesados, e é uma boa prática usar buffering endpoints como Hub de IoT para coletar todos os dados antes de processá-los. +
+
2) Armazenamento de Dados
+
+Armazenar os dados pode ser desafiador, especialmente se estamos falando de big data. Enquanto decide como armazenar os dados, faz sentido antecipar a forma como você gostaria de consultá-los mais tarde. Existem diversas formas de como os dados podem ser armazenados: +
    +
  • Bancos de dados relacionais armazenam uma coleção de tabelas, e utilizam uma linguagem especial chamada SQL para consultá-los. Tipicamente, tabelas seriam conectadas umas às outras usando algum schema. Em vários casas nós precisamos converter os dados da forma original para ajustar al schema.
  • +
  • Bancos de dados NoSQL, como CosmosDB, não impõe schema nos dados, e permite o armazenamento de dados mais complexos, como por exemplo, documentos hierárquicos JSON ou grafos. No entanto, bancos de dados NoSQL não possuem a capacidade rica de consulta do SQL, e não podem impor integridade referencial entre os dados.
  • +
  • Armazenamento em Data Lake é usado para grandes coleções de dados na forma bruta. Data lakes são frequentemente usados para big data, onde todos não podem se encaixar em uma máquina, e precisam ser armazenados e processados por um cluster. Parquet é o formato de dado que é frequentemente usado em conjunção com big data.
  • +
+
+
3) Processamento de Dados
+
+Esse é a parte mais emocionante da jornada dos dados, que envolve processar os dados de sua forma original para a forma que pode ser usada para visualização/treinamento do modelo. Quando lidando com dados não estruturados como textos ou imagens, nós podemos precisar de algumas técnicas de IA para extrair **features** dos dados, convertendo-os então para a forma estruturada. +
+
4) Visualização / Percepções Humanas
+
+Frequentemente para entender os dados precisamos visualizar eles. Tendo várias técnicas de visualização diferentes na nossa caixa de ferramentas, nós podemos encontrar a visualização certa para termos um insight. Frequentemente, cientistas de dados precisam "brincar com dos dados", visualizando-os várias vezes e procurando alguma relação. Também, nós podemos usar algumas técnicas de estatísticas para testar alguma hipótese ou provar uma correlação entre pedaços diferentes de dados. +
+
5) Treinando modelos preditivos
+
+Já que o maior objetivo da ciência de dados é ser capaz de tomar decisões baseadas em dados, nós podemos querer usar técnicas de Aprendizando de Máquina para construir modelos preditivos que serão capazes de resolver nosso problema. +
+
+ +Claro, dependendo dos dados em si alguns passos podem ser ignorados (ex., quando já temos os dados em nosso banco de dados, ou quando não precisamos treinar o modelo), ou repetidos várias vezes (como processamento de dados). + +## Digitalização e Transformação Digital + +Na última década, muitos negócios começaram a entender a importância dos dados para fazer uma decisão de negócio. Para aplicar os princípios da ciência de dados para gerenciar um negócio é necessário coletar alguns dados, ex. transformar de alguma forma processos de negócio em formato digital. Isso é conhecido como **digitalização**, seguido pelo uso técnicas de ciência de dados para guiar as decisões frequentemente leva a um aumento significante da produtividade (ou mesmo pivô de negócios), chamado de **transformação digital**. + +Vamos considerar um exemplo. Suponha que temos um curso de ciência de dados (como esse), que é feito online pelos estudantes, e que queremos usar ciência de dados para melhorá-lo. Como podemos fazer isso? + +Nós podemos começar pensando "o que pode ser digitalizado?". A maneira mais simples seria medir o tempo que cada estudante leva para completar cada módulo, e o conhecimento obtido (ex. dando questões de múltipla escolha no final de cada módulo). Tendo a média que todos os estudantes levam para completar, nós podemos descobrir quais módulos causam mais problemas para os estudantes, e trabalhar para simplificá-los. + +> Você pode argumentar que essa abordagem não é ideal, pois os módulos podem ter tamanhos diferentes. Provavelmente seria mais justo dividir o tempo pelo tamanho do módulo (em número de caracteres), e comparar esses valores. + +Quando começamos a analisar os resultados das questões de múltipla escolha, nós podemos tentar descobrir conceitos específicos que os estudantes não entendem muito bem, e melhorar o conteúdo. Para fazer isso nós precisamos fazer questões de uma forma que cada questão mapeia para um certo conteúdo ou conhecimento. + +Se nós quiséssemos complicar ainda mais, nós podemos "plotar" o tempo levado para cada módulo em relação à categoria de idade de cada estudante. Nós podemos descobrir que alguma categoria de idade leva um tempo inapropriadamente longo para completar o módulo, ou os estudantes que abandonam em um certo ponto. Isso pode nos ajudar a fornecer recomendações de idade para o módulo, e minimizar a insatisfação das pessoas para expectativas erradas. + +## 🚀 Desafio + +Nesse desafio, nós vamos tentar encontrar conceitos relevantes para a área de Ciência de Dados olhando textos. Nós vamos pegar um artigo da Wikipedia sobre Ciência de Dados, baixar e processar o texto, e então construir uma nuvem de palavras como essa: + +![Nuvem de Palavras para Ciência de Dados](../images/ds_wordcloud.png) + +Visite [`notebook.ipynb`](notebook.ipynb) para ler o código. Você também pode rodar esse código, e ver como ele performa toda a transformação de dados em tempo real. + +> Se você não sabe como rodar códigos no Jupyter Notebook, dê uma olhada [nesse artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + + + +## [Quiz pós-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/1) + +## Tarefas + +* **Tarefa 1**: Modifique o código acima para descobrir conceitos relacionados para as áreas de **Big Data** e **Aprendizado de Máquina** +* **Tarefa 2**: [Pense Sobre Cenários de Ciência de Dados](assignment.md) + +## Créditos + +Essa aula foi autorado com ♥️ por [Dmitry Soshnikov](http://soshnikov.com) From 00ccaade72b5d232c0d6bfbad1d9ccb739c8cb6b Mon Sep 17 00:00:00 2001 From: Anupam Mishra <66557767+anupamishra333@users.noreply.github.com> Date: Fri, 8 Oct 2021 19:16:14 +0530 Subject: [PATCH 029/254] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 679626f1..79225b33 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur **Hearty thanks to our authors:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). -**🙏 Special thanks 🙏 to our Microsoft Student Ambassador authors, reviewers and content contributors,** notably [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), Yogendrasingh Pawar, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey +**🙏 Special thanks 🙏 to our [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) authors, reviewers and content contributors,** notably [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), Yogendrasingh Pawar, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| |:---:| From 28ecf16762851db9163110af2ace543c89612bea Mon Sep 17 00:00:00 2001 From: Maud Date: Fri, 8 Oct 2021 15:55:41 +0200 Subject: [PATCH 030/254] fix links --- translations/README.fr.md | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/translations/README.fr.md b/translations/README.fr.md index 59116f49..65eb3a81 100644 --- a/translations/README.fr.md +++ b/translations/README.fr.md @@ -23,11 +23,11 @@ L'équipe Azure Cloud Advocates de Microsoft a le plaisir de vous offrir un curr # Prise en main -> **Enseignants**, nous avons [inclus des suggestions](for-teachers.md) concernant la manière dont vous pouvez utiliser ce curriculum. Nous aimerions beaucoup lire vos feedbacks [dans notre forum de discussion](https://github.com/microsoft/Data-Science-For-Beginners/discussions) ! +> **Enseignants**, nous avons [inclus des suggestions](../for-teachers.md) concernant la manière dont vous pouvez utiliser ce curriculum. Nous aimerions beaucoup lire vos feedbacks [dans notre forum de discussion](https://github.com/microsoft/Data-Science-For-Beginners/discussions) ! > **Etudiants**, pour suivre ce curriculum, la première chose à faire est de forker ce repository en entier, vous pourrez ensuite réaliser les exercices de votre côté, en commençant un quiz préalable, en lisant le contenu des cours, et en complétant le reste des activités. Essayez de créer les projets en intégrant bien les cours, plutôt qu'en copiant les solutions. Vous verrez que chaque cours orientée projet contient un dossier dossier /solutions dans lequel vous trouverez la solution des exercices. Vous pouvez aussi former un groupe d'apprentissage avec des amis et vous former ensemble. Pour poursuivre votre apprentissage, nous recommandons d'aller consulter [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). - @@ -37,7 +37,7 @@ Nous avons choisi deux principes pédagogiques lors de la création de ce progra De plus, un quiz à faible enjeu à réaliser avant chaque cours permet de préparer l'étudiant à l'apprentissage du sujet, et un second quiz après le cours permet de fixer encore davantage le contenu dans l'esprit des apprenants. Ce curriculum se veut flexible et ammusant et il peut être suivi dans son intégralité ou en partie. Les premiers projets sont modestes et deviennent de plus en plus ardus. -> Qeulques liens utiles : [Code de conduite](CODE_OF_CONDUCT.md), [Comment contribuer](CONTRIBUTING.md), [Traductions](TRANSLATIONS.md). Tout feedback constructif sera le bienvenu ! +> Qeulques liens utiles : [Code de conduite](../CODE_OF_CONDUCT.md), [Comment contribuer](../CONTRIBUTING.md), [Traductions](../TRANSLATIONS.md). Tout feedback constructif sera le bienvenu ! ## Chaque cours comprend : @@ -64,26 +64,26 @@ De plus, un quiz à faible enjeu à réaliser avant chaque cours permet de prép | Numéro du cours | Topic | Chapitre | Objectifs d'apprentissage | Liens vers les cours | Auteurs | | :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | -| 01 | Qu'est-ce que la Data Science ? | [Introduction](1-Introduction/README.md) | Apprenez les concepts de base de la data science et le lien entre la data science, l'intelligence artificielle, le machine learning et la big data. | [cours](1-Introduction/01-defining-data-science/README.md) [vidéo](https://youtu.be/pqqsm5reGvs) | [Dmitry](http://soshnikov.com) | -| 02 | Data Science et éthique | [Introduction](1-Introduction/README.md) | Les concepts d'éthique dans le domaine des données, les challenges et les principes d'encadrement. | [cours](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | -| 03 | Définition de la data | [Introduction](1-Introduction/README.md) | Comment classifier les données et d'où viennent-elles principalement ? | [cours](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | -| 04 | Introduction aux statistiques et aux probabilités | [Introduction](1-Introduction/README.md) | Techniques mathématiques de probabilités et de statistiques au service de la data. | [cours](1-Introduction/04-stats-and-probability/README.md) [vidéo](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | -| 05 | Utilisation de données relationnelles | [Exploiter des données](2-Working-With-Data/README.md) | Introduction aux données relationnelles et aux bases d'exploration et d'analyse des données relationnelles avec le Structured Query Language, alias SQL (pronouncé “sicouel”). | [cours](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | -| 06 | Utilisation de données NoSQL | [Exploiter des données](2-Working-With-Data/README.md) | Présentation des données non relationelles, les types de données et les fondamentaux de l'exploration et de l'analyse de bases de données documentaires. | [cours](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| -| 07 | Utilisation de Python | [Exploiter des données](2-Working-With-Data/README.md) | Les principes de base de Python pour l'exploration de données, et les librairies courantes telles que Pandas. Des connaissances de base de la programmation Python sont recommandées pour ce cours.| [cours](2-Working-With-Data/07-python/README.md) [vidéo](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | -| 08 | Préparation des données | [Working With Data](2-Working-With-Data/README.md) | Techniques de nettoyage et de transformation des données pour gérer des données manquantes, inexactesou incomplètes. | [cours](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | -| 09 | Visualisation des quantités | [Data Visualization](3-Data-Visualization/README.md) | Apprendre à utiliser Matplotlib pour visualiser des données sur les oiseaux 🦆 | [cours](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | -| 10 | Visualisation de la distribution des données | [Data Visualization](3-Data-Visualization/README.md) | Visualisation d'observations et de tendances dans un intervalle. | [cours](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | -| 11 | Visualiser des proportions | [Data Visualization](3-Data-Visualization/README.md) | Visualisation de pourcentages discrets et groupés. | [cours](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | -| 12 | Visualisation de relations | [Data Visualization](3-Data-Visualization/README.md) | Visualisation de connections et de corrélations entre différents sets de données et leurs variables. | [cours](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | -| 13 | Visualisations significatives | [Data Visualization](3-Data-Visualization/README.md) | Techniques et conseils pour donner de la valeur à vos visualisations, les rendre utiles à la compréhension et à la résolution de problèmes. | [cours](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | -| 14 | Introduction au cycle de vie de la Data Science | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Présentation du cycle de la data science et des premières étapes d'acquisition et d'extraction des données. | [cours](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | -| 15 | Analyse | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Cette étape du cycle de vie de la data science se concentre sur les techniques d'analysation des données. | [cours](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | -| 16 | Communication | [Cycle de vie](4-Data-Science-Lifecycle/README.md) | Cette étape du cycle de vie de la data science se concentre sur la présentation des informations tirées des données de manière à faciliter la compréhension d'une situation par des décisionnaires. | [cours](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | -| 17 | La Data Science dans le Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Ce cours présente le Cloud et l'intérêt du Cloud pour la Data Science. | [cours](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | -| 18 | La Data Science dans le Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Entraîner un modèle avec des outils de low code. |[cours](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | -| 19 | La Data Science dans le Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Déployer des modèles avec Azure Machine Learning Studio. | [cours](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | -| 20 | La Data Science dans la nature | [In the Wild](6-Data-Science-In-Wild/README.md) | Des projets concrets de data science sur le terrain. | [cours](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | +| 01 | Qu'est-ce que la Data Science ? | [Introduction](../1-Introduction/README.md) | Apprenez les concepts de base de la data science et le lien entre la data science, l'intelligence artificielle, le machine learning et la big data. | [cours](../1-Introduction/01-defining-data-science/README.md) [vidéo](https://youtu.be/pqqsm5reGvs) | [Dmitry](http://soshnikov.com) | +| 02 | Data Science et éthique | [Introduction](../1-Introduction/README.md) | Les concepts d'éthique dans le domaine des données, les challenges et les principes d'encadrement. | [cours](../1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Définition de la data | [Introduction](../1-Introduction/README.md) | Comment classifier les données et d'où viennent-elles principalement ? | [cours](../1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Introduction aux statistiques et aux probabilités | [Introduction](../1-Introduction/README.md) | Techniques mathématiques de probabilités et de statistiques au service de la data. | [cours](../1-Introduction/04-stats-and-probability/README.md) [vidéo](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Utilisation de données relationnelles | [Exploiter des données](../2-Working-With-Data/README.md) | Introduction aux données relationnelles et aux bases d'exploration et d'analyse des données relationnelles avec le Structured Query Language, alias SQL (pronouncé “sicouel”). | [cours](../2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Utilisation de données NoSQL | [Exploiter des données](../2-Working-With-Data/README.md) | Présentation des données non relationelles, les types de données et les fondamentaux de l'exploration et de l'analyse de bases de données documentaires. | [cours](../2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Utilisation de Python | [Exploiter des données](../2-Working-With-Data/README.md) | Les principes de base de Python pour l'exploration de données, et les librairies courantes telles que Pandas. Des connaissances de base de la programmation Python sont recommandées pour ce cours.| [cours](../2-Working-With-Data/07-python/README.md) [vidéo](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Préparation des données | [Working With Data](../2-Working-With-Data/README.md) | Techniques de nettoyage et de transformation des données pour gérer des données manquantes, inexactesou incomplètes. | [cours](../2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Visualisation des quantités | [Data Visualization](../3-Data-Visualization/README.md) | Apprendre à utiliser Matplotlib pour visualiser des données sur les oiseaux 🦆 | [cours](../3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Visualisation de la distribution des données | [Data Visualization](../3-Data-Visualization/README.md) | Visualisation d'observations et de tendances dans un intervalle. | [cours](../3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Visualiser des proportions | [Data Visualization](../3-Data-Visualization/README.md) | Visualisation de pourcentages discrets et groupés. | [cours](../3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Visualisation de relations | [Data Visualization](../3-Data-Visualization/README.md) | Visualisation de connections et de corrélations entre différents sets de données et leurs variables. | [cours](../3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Visualisations significatives | [Data Visualization](../3-Data-Visualization/README.md) | Techniques et conseils pour donner de la valeur à vos visualisations, les rendre utiles à la compréhension et à la résolution de problèmes. | [cours](../3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Introduction au cycle de vie de la Data Science | [Cycle de vie](../4-Data-Science-Lifecycle/README.md) | Présentation du cycle de la data science et des premières étapes d'acquisition et d'extraction des données. | [cours](../4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Analyse | [Cycle de vie](../4-Data-Science-Lifecycle/README.md) | Cette étape du cycle de vie de la data science se concentre sur les techniques d'analysation des données. | [cours](../4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Communication | [Cycle de vie](../4-Data-Science-Lifecycle/README.md) | Cette étape du cycle de vie de la data science se concentre sur la présentation des informations tirées des données de manière à faciliter la compréhension d'une situation par des décisionnaires. | [cours](../4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | La Data Science dans le Cloud | [Cloud Data](../5-Data-Science-In-Cloud/README.md) | Ce cours présente le Cloud et l'intérêt du Cloud pour la Data Science. | [cours](../5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | +| 18 | La Data Science dans le Cloud | [Cloud Data](../5-Data-Science-In-Cloud/README.md) | Entraîner un modèle avec des outils de low code. |[cours](../5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | +| 19 | La Data Science dans le Cloud | [Cloud Data](../5-Data-Science-In-Cloud/README.md) | Déployer des modèles avec Azure Machine Learning Studio. | [cours](../5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) et [Maud](https://twitter.com/maudstweets) | +| 20 | La Data Science dans la nature | [In the Wild](../6-Data-Science-In-Wild/README.md) | Des projets concrets de data science sur le terrain. | [cours](../6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | ## Accès hors ligne Vous pouvez retrouver cette documentation hors ligne à l'aide de [Docsify](https://docsify.js.org/#/). Forkez ce repository, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, et tapez `docsify serve` dans le dossier racine de ce repository. Vous retrouverez le site web sur le port 3000 de votre localhost : `localhost:3000`. @@ -95,7 +95,7 @@ Vous trouverez un PDF contenant tous les cours du curriculum [ici](https://micro ## Appel à contribution -Si vous souhaitez traduire le curriculum entier ou en partie, veuillez suivre notre guide de [traduction](TRANSLATIONS.md). +Si vous souhaitez traduire le curriculum entier ou en partie, veuillez suivre notre guide de [traduction](../TRANSLATIONS.md). ## Autres Curricula From bbea6f07226c9de2f9e11b8dc396fe19f5a7f3ee Mon Sep 17 00:00:00 2001 From: Hemshree Date: Fri, 8 Oct 2021 21:25:36 +0530 Subject: [PATCH 031/254] Updated translations --- .../translations/README.hi.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 3-Data-Visualization/translations/README.hi.md diff --git a/3-Data-Visualization/translations/README.hi.md b/3-Data-Visualization/translations/README.hi.md new file mode 100644 index 00000000..0d13f1a1 --- /dev/null +++ b/3-Data-Visualization/translations/README.hi.md @@ -0,0 +1,33 @@ +# Visualizations + +![a bee on a lavender flower](./images/bee.jpg) +> +जेना ली द्वारा फोटो Unsplash +पर + + +डेटा को विज़ुअलाइज़ करना डेटा साइंटिस्ट के सबसे महत्वपूर्ण कार्यों में से एक है। छवियां 1000 शब्दों के लायक हैं, और एक विज़ुअलाइज़ेशन आपको अपने डेटा के सभी प्रकार के दिलचस्प हिस्सों जैसे कि स्पाइक्स, आउटलेयर, ग्रुपिंग, प्रवृत्ति, और बहुत कुछ की पहचान करने में मदद कर सकता है, जो आपको उस कहानी को समझने में मदद कर सकता है जिसे आपका डेटा बताने की कोशिश कर रहा है। + +इन पांच पाठों में, आप प्रकृति से प्राप्त डेटा का पता लगाएंगे और विभिन्न तकनीकों का उपयोग करके दिलचस्प और सुंदर विज़ुअलाइज़ेशन बनाएंगे। +### Topics + +1. [विज़ुअलाइज़िंग मात्रा](09-visualization-quantities/README.md) +1. [विज़ुअलाइज़िंग वितरण](10-visualization-distributions/README.md) +1. [विज़ुअलाइज़िंग अनुपात](11-visualization-proportions/README.md) +1. [रिश्तों की कल्पना](12-visualization-relationships/README.md) +1. [सार्थक विज़ुअलाइज़ेशन बनाना](13-meaningful-visualizations/README.md) + +### Credits + +ये विज़ुअलाइज़ेशन पाठ 🌸 [Jen Looper](https://twitter.com/jenlooper) के साथ लिखे गए थे + +🍯 यूएस हनी प्रोडक्शन के लिए डेटा [कागल](https://www.kaggle.com/jessicali9530/honey-production) पर जेसिका ली के प्रोजेक्ट से लिया गया है। [डेटा](https://usda.library.cornell.edu/concern/publications/rn301137d) [यूनाइटेड स्टेट्स डिपार्टमेंट ऑफ़ एग्रीकल्चर](https://www.nass.usda.gov/About_NASS/index.php) से लिया गया है। + +🍄 मशरूम के लिए डेटा भी हैटरस डनटन द्वारा संशोधित [कागल](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) से प्राप्त किया जाता है। इस डेटासेट में एगारिकस और लेपियोटा परिवार में ग्रील्ड मशरूम की 23 प्रजातियों के अनुरूप काल्पनिक नमूनों का विवरण शामिल है। द ऑडबोन सोसाइटी फील्ड गाइड टू नॉर्थ अमेरिकन मशरूम (1981) से लिया गया मशरूम। यह डेटासेट 1987 में UCI ML 27 को दान किया गया था। + +🦆 मिनेसोटा बर्ड्स के लिए डेटा [कागल](https://www.kaggle.com/hannahcollins/minnesota-birds) से है, जिसे हन्ना कॉलिन्स द्वारा [विकिपीडिया](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) से स्क्रैप किया गया है। + +ये सभी डेटासेट [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/) के रूप में लाइसेंसीकृत हैं। + + + From 829fce17293d788ec3e0ff48fb0b436622bc3efb Mon Sep 17 00:00:00 2001 From: Hemshree Date: Fri, 8 Oct 2021 21:28:07 +0530 Subject: [PATCH 032/254] Updated translations --- 3-Data-Visualization/translations/README.hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-Data-Visualization/translations/README.hi.md b/3-Data-Visualization/translations/README.hi.md index 0d13f1a1..a85543c8 100644 --- a/3-Data-Visualization/translations/README.hi.md +++ b/3-Data-Visualization/translations/README.hi.md @@ -1,6 +1,6 @@ # Visualizations -![a bee on a lavender flower](./images/bee.jpg) +![लैवेंडर फूल पर मधुमक्खी](../images/bee.jpg) > जेना ली द्वारा फोटो Unsplash पर From 59d665e3fab4ec97bc5dfebc21bc160b4dc219b4 Mon Sep 17 00:00:00 2001 From: Hemshree Date: Fri, 8 Oct 2021 21:29:15 +0530 Subject: [PATCH 033/254] Updated translations --- 3-Data-Visualization/translations/README.hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-Data-Visualization/translations/README.hi.md b/3-Data-Visualization/translations/README.hi.md index a85543c8..3d900203 100644 --- a/3-Data-Visualization/translations/README.hi.md +++ b/3-Data-Visualization/translations/README.hi.md @@ -1,4 +1,4 @@ -# Visualizations +# विज़ुअलाइज़ेशन ![लैवेंडर फूल पर मधुमक्खी](../images/bee.jpg) > From 048654fbe083b0932c6ff4da80deaca495e7d8de Mon Sep 17 00:00:00 2001 From: Anupam Mishra <66557767+anupamishra333@users.noreply.github.com> Date: Fri, 8 Oct 2021 21:59:36 +0530 Subject: [PATCH 034/254] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 79225b33..d101b7b6 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,8 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur **Hearty thanks to our authors:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). -**🙏 Special thanks 🙏 to our [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) authors, reviewers and content contributors,** notably [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), Yogendrasingh Pawar, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey +**🙏 Special thanks 🙏 to our [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) authors, reviewers and content contributors,** notably Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), +[Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), Tauqeer Ahmad, Yogendrasingh Pawar |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| |:---:| From 6392d8037da8d9162650200655618121a1cfd57a Mon Sep 17 00:00:00 2001 From: Keshav Sharma <61562452+keshav340@users.noreply.github.com> Date: Sat, 9 Oct 2021 05:53:58 -0700 Subject: [PATCH 035/254] Bonus lesson added --- 2-Working-With-Data/07-python/bonus-lesson.ipynb | 1 + 1 file changed, 1 insertion(+) create mode 100644 2-Working-With-Data/07-python/bonus-lesson.ipynb diff --git a/2-Working-With-Data/07-python/bonus-lesson.ipynb b/2-Working-With-Data/07-python/bonus-lesson.ipynb new file mode 100644 index 00000000..44dcbb39 --- /dev/null +++ b/2-Working-With-Data/07-python/bonus-lesson.ipynb @@ -0,0 +1 @@ +{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This R environment comes with many helpful analytics packages installed\n# It is defined by the kaggle/rstats Docker image: https://github.com/kaggle/docker-rstats\n# For example, here's a helpful package to load\n\nlibrary(tidyverse) # metapackage of all tidyverse packages\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nlist.files(path = \"../input\")\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2021-10-08T18:11:24.952103Z","iopub.execute_input":"2021-10-08T18:11:24.954562Z","iopub.status.idle":"2021-10-08T18:11:26.309552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"library(zoo)\nlibrary(dplyr)\nlibrary(ggplot2)\nlibrary(ggfortify)\nlibrary(dplyr)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:15:22.966831Z","iopub.execute_input":"2021-10-09T12:15:22.968941Z","iopub.status.idle":"2021-10-09T12:15:23.546202Z"},"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"markdown","source":"## Series","metadata":{}},{"cell_type":"markdown","source":"### Series is like a list or 1D-array, but with index.It is generally used to represent data associated with time.","metadata":{}},{"cell_type":"code","source":"stock_prices = c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)\nstock_prices_glennmark = ts(stock_prices,start = c(2020,1,1),frequency = 12)\nstock_prices_glennmark\nplot(stock_prices_glennmark)\n","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:15:54.612622Z","iopub.execute_input":"2021-10-09T12:15:54.735899Z","iopub.status.idle":"2021-10-09T12:15:55.008804Z"},"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"# CREATING A TIME SERIES\nrandomData<- rnorm(100)\nmonth <- ts(randomData,start=c(2020,1),frequency=12)\nplot(month)\n## it bit much longer a it is 100/4 takes much longer year","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:03.558553Z","iopub.execute_input":"2021-10-09T12:16:03.560254Z","iopub.status.idle":"2021-10-09T12:16:03.679285Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":"**DataFrame**\n#### It is a two dimensional data structure in which data is inserted in tabular form.","metadata":{}},{"cell_type":"code","source":"STOCK_PRICE <- data.frame(\nUSD=c(1.02,1.085,2.05,3.45,4.05,5.32,3.45,4.65,6.65,9.23,10.25,12.69),\nEURO = c(0.85,1.02,1.85,3.02,3.35,4.35,2.65,3.95,5.55,8.90,9.80,11.50))\nSTOCK_PRICES <- ts(STOCK_PRICE,start = c(2020,1,1),frequency = 12)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:24:50.750390Z","iopub.execute_input":"2021-10-09T12:24:50.752297Z","iopub.status.idle":"2021-10-09T12:24:50.767609Z"},"trusted":true},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"STOCK_PRICES","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:24:53.233062Z","iopub.execute_input":"2021-10-09T12:24:53.234839Z","iopub.status.idle":"2021-10-09T12:24:53.260478Z"},"trusted":true},"execution_count":15,"outputs":[]},{"cell_type":"markdown","source":"## Reading Data into R","metadata":{}},{"cell_type":"markdown","source":"### 1. Read a CSV File into R","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"dataset <- read.table(file=\" \",header = TRUE, sep = \",\")","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Data Manipluation","metadata":{}},{"cell_type":"code","source":"dim(STOCK_PRICES )","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:21.200787Z","iopub.execute_input":"2021-10-09T12:16:21.202859Z","iopub.status.idle":"2021-10-09T12:16:21.224888Z"},"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"head(STOCK_PRICES )","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:26.089604Z","iopub.execute_input":"2021-10-09T12:16:26.091545Z","iopub.status.idle":"2021-10-09T12:16:26.114797Z"},"trusted":true},"execution_count":9,"outputs":[]},{"cell_type":"code","source":"summary(STOCK_PRICES )","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:28.433758Z","iopub.execute_input":"2021-10-09T12:16:28.435883Z","iopub.status.idle":"2021-10-09T12:16:28.457663Z"},"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"markdown","source":"#### We ae slicing to find subsets columns of 5-7 of datasets","metadata":{}},{"cell_type":"code","source":"STOCK_PRICES [5,]\n# series","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:35.848118Z","iopub.execute_input":"2021-10-09T12:16:35.850327Z","iopub.status.idle":"2021-10-09T12:16:35.871805Z"},"trusted":true},"execution_count":11,"outputs":[]},{"cell_type":"code","source":"STOCK_PRICES [3:8,]","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:50.004019Z","iopub.execute_input":"2021-10-09T12:16:50.006116Z","iopub.status.idle":"2021-10-09T12:16:50.034007Z"},"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"code","source":"slice(STOCK_PRICE ,3:8)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:25:09.777288Z","iopub.execute_input":"2021-10-09T12:25:09.778989Z","iopub.status.idle":"2021-10-09T12:25:09.806709Z"},"trusted":true},"execution_count":16,"outputs":[]},{"cell_type":"markdown","source":"### Pip OPERATOR","metadata":{}},{"cell_type":"code","source":"STOCK_PRICE %>% slice(3:5)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:25:25.256136Z","iopub.execute_input":"2021-10-09T12:25:25.257863Z","iopub.status.idle":"2021-10-09T12:25:25.278594Z"},"trusted":true},"execution_count":18,"outputs":[]},{"cell_type":"markdown","source":"### SLICE SUBSETS the first n rows of dataframe and slice tail subsets the last n rows of dataframe","metadata":{}},{"cell_type":"code","source":"slice_head(STOCK_PRICE,n=2)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:25:55.079932Z","iopub.execute_input":"2021-10-09T12:25:55.081670Z","iopub.status.idle":"2021-10-09T12:25:55.103342Z"},"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"slice_tail(STOCK_PRICE,n=2)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:26:04.997678Z","iopub.execute_input":"2021-10-09T12:26:04.999435Z","iopub.status.idle":"2021-10-09T12:26:05.021799Z"},"trusted":true},"execution_count":20,"outputs":[]},{"cell_type":"markdown","source":"### Slice_max subsets the n rows of a dataset with n largest value with respect to a variable","metadata":{}},{"cell_type":"code","source":"slice_max(STOCK_PRICE,EURO, n=3)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:26:29.905938Z","iopub.execute_input":"2021-10-09T12:26:29.907674Z","iopub.status.idle":"2021-10-09T12:26:29.934518Z"},"trusted":true},"execution_count":21,"outputs":[]},{"cell_type":"code","source":"slice_sample(STOCK_PRICE,n=5)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:26:42.047503Z","iopub.execute_input":"2021-10-09T12:26:42.049113Z","iopub.status.idle":"2021-10-09T12:26:42.071494Z"},"trusted":true},"execution_count":22,"outputs":[]},{"cell_type":"markdown","source":"## Filtering","metadata":{}},{"cell_type":"markdown","source":"### filters out the rows of dataframe which doesn't meet criteria","metadata":{}},{"cell_type":"code","source":"STOCK_PRICE[STOCK_PRICE$EURO>3.35,]","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:29:42.107479Z","iopub.execute_input":"2021-10-09T12:29:42.109116Z","iopub.status.idle":"2021-10-09T12:29:42.131224Z"},"trusted":true},"execution_count":30,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"## Grouping ","metadata":{}},{"cell_type":"markdown","source":"### group_by function group rows of data and frame with respect to one or more variabes","metadata":{}},{"cell_type":"code","source":"library(dplyr)","metadata":{"execution":{"iopub.status.busy":"2021-10-08T13:13:57.808888Z","iopub.execute_input":"2021-10-08T13:13:57.810559Z","iopub.status.idle":"2021-10-08T13:13:57.843966Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df1 <- group_by(STOCK_PRICE,EURO)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:36:27.270590Z","iopub.execute_input":"2021-10-09T12:36:27.272456Z","iopub.status.idle":"2021-10-09T12:36:27.298281Z"},"trusted":true},"execution_count":40,"outputs":[]},{"cell_type":"code","source":"summarise(df1,mymean =mean(EURO))","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:36:38.887295Z","iopub.execute_input":"2021-10-09T12:36:38.889081Z","iopub.status.idle":"2021-10-09T12:36:38.919223Z"},"trusted":true},"execution_count":41,"outputs":[]},{"cell_type":"code","source":"df2<-group_by(df1,USD>3.2)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:36:53.022367Z","iopub.execute_input":"2021-10-09T12:36:53.023993Z","iopub.status.idle":"2021-10-09T12:36:53.051015Z"},"trusted":true},"execution_count":42,"outputs":[]},{"cell_type":"code","source":"summarise(df2,mymean = mean(USD))","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:05.348959Z","iopub.execute_input":"2021-10-09T12:37:05.350547Z","iopub.status.idle":"2021-10-09T12:37:05.374010Z"},"trusted":true},"execution_count":44,"outputs":[]},{"cell_type":"markdown","source":"## SELECT","metadata":{}},{"cell_type":"code","source":"df<-select(STOCK_PRICE,EURO,USD)\ndf","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:45.562234Z","iopub.execute_input":"2021-10-09T12:37:45.563814Z","iopub.status.idle":"2021-10-09T12:37:45.591553Z"},"trusted":true},"execution_count":47,"outputs":[]},{"cell_type":"code","source":"df<- select(df,-EURO)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:55.423706Z","iopub.execute_input":"2021-10-09T12:37:55.425323Z","iopub.status.idle":"2021-10-09T12:37:55.440506Z"},"trusted":true},"execution_count":48,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:58.655523Z","iopub.execute_input":"2021-10-09T12:37:58.657351Z","iopub.status.idle":"2021-10-09T12:37:58.687523Z"},"trusted":true},"execution_count":49,"outputs":[]},{"cell_type":"markdown","source":"## Arrange","metadata":{}},{"cell_type":"code","source":"df <- arrange(STOCK_PRICE, desc(USD))","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:19.525371Z","iopub.execute_input":"2021-10-09T12:38:19.526944Z","iopub.status.idle":"2021-10-09T12:38:19.545423Z"},"trusted":true},"execution_count":51,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:22.301574Z","iopub.execute_input":"2021-10-09T12:38:22.303359Z","iopub.status.idle":"2021-10-09T12:38:22.326992Z"},"trusted":true},"execution_count":52,"outputs":[]},{"cell_type":"code","source":"df <- arrange(STOCK_PRICE, desc(USD),EURO)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:45.428273Z","iopub.execute_input":"2021-10-09T12:38:45.429970Z","iopub.status.idle":"2021-10-09T12:38:45.446438Z"},"trusted":true},"execution_count":54,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:48.362531Z","iopub.execute_input":"2021-10-09T12:38:48.364239Z","iopub.status.idle":"2021-10-09T12:38:48.390254Z"},"trusted":true},"execution_count":55,"outputs":[]},{"cell_type":"code","source":"rename(STOCK_PRICE, DOLLAR = USD)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:39:28.495960Z","iopub.execute_input":"2021-10-09T12:39:28.497625Z","iopub.status.idle":"2021-10-09T12:39:28.525934Z"},"trusted":true},"execution_count":57,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]} \ No newline at end of file From f8f376498d8e331e7db425f329ceee9a3db3960d Mon Sep 17 00:00:00 2001 From: Kaushal Joshi <53049546+joshi-kaushal@users.noreply.github.com> Date: Sat, 9 Oct 2021 21:55:29 +0530 Subject: [PATCH 036/254] Updared README.hi.md - 1 --- .../03-defining-data/translations/README.hi.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 1-Introduction/03-defining-data/translations/README.hi.md diff --git a/1-Introduction/03-defining-data/translations/README.hi.md b/1-Introduction/03-defining-data/translations/README.hi.md new file mode 100644 index 00000000..ef6b2932 --- /dev/null +++ b/1-Introduction/03-defining-data/translations/README.hi.md @@ -0,0 +1,18 @@ +# डेटा का अवलोकन +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs।dev) ](../../sketchnotes/03-DefiningData.png)| +|:---:| +|Defining Data - _Sketchnote by [@nitya](https://twitter।com/nitya)_ | + +डेटा मतलब तथ्य, माहिती और अनुभव है जिनका इस्तमाल करके नए खोज और सूचित निर्णयोंका समर्थन किया जाता है। + +डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बोहोत सारे अलगअलग प्रकार और स्ट्रक्चर का होता है, और बोहोत बार किसी स्त्रोतपे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं सेव्ह की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow।com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकोकेलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। + +यह पाठ डेटा को उसके स्त्रोत के हिसाब से पहचानने और वर्गीकृत करने पे केंद्रित है। + +## [पाठ के पाहिले की परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) + +## डेटा का वर्णन कैसे किया जाता है +**अपक्व डेटा** ऐसे प्रकार का डेटा होता जो उसके स्त्रोत से आते वक्त जिस अवस्था मैं था वैसे ही है और उसका विश्लेषण या वर्गीकरण नहीं किया गया है। ऐसे डेटासेट से जरूरी जानकारी निकलने के लिए उसे ऐसे प्रकार मे लाना आवश्यक है जो इंसान समज सके और जिस टैकनोलजीका उपयोग डेटा के विश्लेषण मे किया जाएगा उसको भी समज आये। डेटाबेस का स्ट्रक्चर हमे बताती है की डेटा किस प्रकार से वर्गीकृत किया गया है और उसका वर्गीकरण कैसे किया जाता है। डेटा का वर्गीकरण संरचित, मिश्र संरचित और असंरचित प्रकार मै किया जा सकता है। संरचना के प्रकार डेटा के स्त्रोत के अनुसार बदल सकते है मगर आखिर मै इन तीनो मैं से एक प्रकार के हो सकते है। + +### परिमाणात्मक डेटा +परिमाणात्मक डेटा मतलब डेटासेट मे उपलब्ध होने वाला ऐसा संख्यात्मक डेटा जिसका इस्तमाल विश्लेषण,मापन और गणितीय चीजोंकेलिए हो सकता है। परिमाणात्मक डेटा के यह कुछ उदाहरण है: देश की जनसंख्या, इंसान की ऊंचाई या कंपनी की तिमाही कमाई। थोड़े अधिक विश्लेषण के बाद परिणामात्मक डेटा से मौसम के अनुसार वायु गुणवत्ता सूचकांक(Air Quality Index) के बदलाव पता करना या फिर किसी सामान्य कार्यदिवस पर भीड़भाड़ वाले घंटे के ट्रैफिक की संभावना का अनुमान लगना मुमकिन है From 47982f02efa70b8387261ceca278f491541aa5e3 Mon Sep 17 00:00:00 2001 From: Heril Changwal Date: Sun, 10 Oct 2021 07:53:23 +0530 Subject: [PATCH 037/254] Added Hindi Translation --- .../translations/README.hi.md | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 4-Data-Science-Lifecycle/16-communication/translations/README.hi.md diff --git a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md new file mode 100644 index 00000000..234072d7 --- /dev/null +++ b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md @@ -0,0 +1,211 @@ +# डेटा विज्ञान के जीवनचक्र: संचार +|![ द्वारा स्केचनोट [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/16-Communicating.png)| +|:---:| +| डेटा विज्ञान के जीवनचक्र: संचार - [@nitya](https://twitter.com/nitya)_द्वारा स्केचनोट _ | + +## [प्री-लेक्चर क्विज ](https://red-water-0103e7a0f.azurestaticapps.net/quiz/30) +ऊपर दिए गए प्री-लेक्चर क्विज़ के साथ क्या करना है, इसके बारे में अपने ज्ञान का परीक्षण करें! +### संचार क्या है? +आइए इस पाठ की शुरुआत यह परिभाषित करते हुए करें कि संचार के साधन क्या हैं। **संचार करना सूचनाओं को संप्रेषित करना या उनका आदान-प्रदान करना है।** सूचना विचार, विचार, भावनाएं, संदेश, गुप्त संकेत, डेटा हो सकती है - कुछ भी जो एक **_प्रेषक_** (सूचना भेजने वाला) एक **_रिसीवर_** चाहता है ( जानकारी प्राप्त करने वाला कोई व्यक्ति) समझने के लिए। इस पाठ में, हम प्रेषकों को संचारक के रूप में और रिसीवर को श्रोता के रूप में संदर्भित करेंगे। + +### डेटा संचार और कहानी सुनाना +हम समझते हैं कि संचार करते समय, उद्देश्य सूचना देना या आदान-प्रदान करना है। लेकिन डेटा का संचार करते समय, आपका उद्देश्य केवल अपने दर्शकों तक संख्या पहुँचाना नहीं होना चाहिए। आपका उद्देश्य एक ऐसी कहानी को संप्रेषित करना होना चाहिए जो आपके डेटा द्वारा सूचित हो - प्रभावी डेटा संचार और कहानी सुनाना साथ-साथ चलते हैं। आपके दर्शकों को आपके द्वारा दी गई संख्या की तुलना में आपके द्वारा बताई गई कहानी को याद रखने की अधिक संभावना है। इस पाठ में बाद में, हम कुछ ऐसे तरीकों के बारे में जानेंगे जिनसे आप अपने डेटा को अधिक प्रभावी ढंग से संप्रेषित करने के लिए कहानी कहने का उपयोग कर सकते हैं। + +### संचार के प्रकार +इस पूरे पाठ में दो अलग-अलग प्रकार के संचार पर चर्चा की जाएगी, वन-वे कम्युनिकेशन और टू-वे कम्युनिकेशन। + +**एक तरफा संचार** तब होता है जब कोई प्रेषक बिना किसी प्रतिक्रिया या प्रतिक्रिया के किसी प्राप्तकर्ता को सूचना भेजता है। हम हर दिन एक-तरफ़ा संचार के उदाहरण देखते हैं - बल्क/मास ईमेल में, जब समाचार सबसे हाल की कहानियाँ देता है, या यहाँ तक कि जब कोई टेलीविज़न विज्ञापन आता है और आपको सूचित करता है कि उनका उत्पाद बढ़िया क्यों है। इनमें से प्रत्येक उदाहरण में, प्रेषक सूचनाओं के आदान-प्रदान की मांग नहीं कर रहा है। वे केवल सूचना देना या देना चाहते हैं। + +**दोतरफा संचार** तब होता है जब सभी शामिल पक्ष प्रेषक और प्राप्तकर्ता दोनों के रूप में कार्य करते हैं। एक प्रेषक एक रिसीवर से संचार करके शुरू करेगा, और रिसीवर प्रतिक्रिया या प्रतिक्रिया प्रदान करेगा। जब हम संचार के बारे में बात करते हैं तो हम परंपरागत रूप से दोतरफा संचार के बारे में सोचते हैं। हम आम तौर पर बातचीत में लगे लोगों के बारे में सोचते हैं - या तो व्यक्तिगत रूप से, या फोन कॉल, सोशल मीडिया या टेक्स्ट संदेश पर। + +डेटा संचार करते समय, ऐसे मामले होंगे जहां आप एकतरफा संचार का उपयोग कर रहे होंगे (एक सम्मेलन में प्रस्तुत करने के बारे में सोचें, या एक बड़े समूह के लिए जहां सीधे प्रश्न नहीं पूछे जाएंगे) और ऐसे मामले होंगे जहां आप दो का उपयोग करेंगे -वे संचार (खरीद-इन के लिए कुछ हितधारकों को मनाने के लिए डेटा का उपयोग करने के बारे में सोचें, या किसी टीम के साथी को यह समझाने के लिए कि कुछ नया बनाने में समय और प्रयास खर्च किया जाना चाहिए)। + +# प्रभावी संचार + +### एक संचारक के रूप में आपकी जिम्मेदारियां +संचार करते समय, यह सुनिश्चित करना आपका काम है कि आपका रिसीवर वह जानकारी ले रहा है जिसे आप चाहते हैं कि वह ले जाए। जब आप डेटा का संचार कर रहे होते हैं, तो आप नहीं चाहते कि आपके रिसीवर नंबर ले लें, आप चाहते हैं कि आपके रिसीवर आपके डेटा द्वारा सूचित एक कहानी ले लें। एक अच्छा डेटा कम्युनिकेटर एक अच्छा कहानीकार होता है। + +आप डेटा के साथ कहानी कैसे सुनाते हैं? अनंत तरीके हैं - लेकिन नीचे 6 हैं जिनके बारे में हम इस पाठ में बात करेंगे। +1. अपने दर्शकों, अपने माध्यम और अपनी संचार पद्धति को समझें +2. मन में अंत के साथ शुरू करें +3. इसे एक वास्तविक कहानी की तरह देखें +4. सार्थक शब्दों और वाक्यांशों का प्रयोग करें +5. भावना का प्रयोग करें + +इनमें से प्रत्येक रणनीति को नीचे अधिक विस्तार से समझाया गया है। + +### 1. अपने दर्शकों, अपने चैनल और अपनी संचार पद्धति को समझें +जिस तरह से आप परिवार के सदस्यों के साथ संवाद करते हैं, वह आपके दोस्तों के साथ संवाद करने के तरीके से अलग होने की संभावना है। आप शायद अलग-अलग शब्दों और वाक्यांशों का उपयोग करते हैं जिन्हें आप जिन लोगों से बात कर रहे हैं, उनके समझने की अधिक संभावना है। डेटा संचार करते समय आपको वही दृष्टिकोण अपनाना चाहिए। इस बारे में सोचें कि आप किससे संवाद कर रहे हैं। उनके लक्ष्यों और उस संदर्भ के बारे में सोचें जो उनके पास उस स्थिति के आसपास है जो आप उन्हें समझा रहे हैं। + +आप संभावित रूप से अपने अधिकांश दर्शकों को एक श्रेणी में समूहित कर सकते हैं। एक _Harvard Business Review_ लेख में, "[डेटा के साथ कहानी कैसे सुनाएं] (http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/)," डेल कार्यकारी रणनीतिकार जिम स्टिकलेदर दर्शकों की पांच श्रेणियों की पहचान करता है। + + - **नौसिखिया**: विषय के लिए पहला प्रदर्शन, लेकिन नहीं चाहता + अति सरलीकरण + - **सामान्यवादी**: विषय से अवगत हैं, लेकिन एक सिंहावलोकन की तलाश में हैं + समझ और प्रमुख विषय + - **प्रबंधकीय**: पेचीदगियों की गहन, कार्रवाई योग्य समझ और + विस्तार तक पहुंच के साथ अंतर्संबंध + - **विशेषज्ञ**: अधिक अन्वेषण और खोज और कम कहानी कहने के साथ + बहुत अच्छी जानकारी + - **कार्यकारी**: के पास केवल के महत्व और निष्कर्ष निकालने का समय है + भारित संभावनाएं + +ये श्रेणियां आपके दर्शकों को डेटा प्रस्तुत करने के तरीके की जानकारी दे सकती हैं। + +अपने दर्शकों की श्रेणी के बारे में सोचने के अलावा, आपको उस चैनल पर भी विचार करना चाहिए जिसका उपयोग आप अपने दर्शकों के साथ संवाद करने के लिए कर रहे हैं। यदि आप एक मेमो या ईमेल लिख रहे हैं या एक बैठक कर रहे हैं या एक सम्मेलन में प्रस्तुत कर रहे हैं तो आपका दृष्टिकोण थोड़ा अलग होना चाहिए। + +अपने दर्शकों को समझने के शीर्ष पर, यह जानना कि आप उनके साथ कैसे संवाद करेंगे (वन-वे कम्युनिकेशन या टू-वे का उपयोग करना) भी महत्वपूर्ण है। + +यदि आप अधिकांश नौसिखिए दर्शकों के साथ संवाद कर रहे हैं और आप एकतरफा संचार का उपयोग कर रहे हैं, तो आपको पहले दर्शकों को शिक्षित करना होगा और उन्हें उचित संदर्भ देना होगा। फिर आपको अपना डेटा उनके सामने पेश करना चाहिए और उन्हें बताना चाहिए कि आपके डेटा का क्या मतलब है और आपका डेटा क्यों मायने रखता है। इस उदाहरण में, आप स्पष्टता ड्राइविंग पर केंद्रित लेजर होना चाह सकते हैं, क्योंकि आपके दर्शक आपसे कोई सीधा प्रश्न नहीं पूछ पाएंगे। + +यदि आप बहुसंख्यक प्रबंधकीय दर्शकों के साथ संवाद कर रहे हैं और आप दो-तरफ़ा संचार का उपयोग कर रहे हैं, तो संभवतः आपको अपने दर्शकों को शिक्षित करने या उन्हें अधिक संदर्भ प्रदान करने की आवश्यकता नहीं होगी। आप सीधे उस डेटा पर चर्चा करने में सक्षम हो सकते हैं जिसे आपने एकत्र किया है और यह क्यों मायने रखता है। हालांकि इस परिदृश्य में, आपको समय और अपनी प्रस्तुति को नियंत्रित करने पर ध्यान केंद्रित करना चाहिए। दो-तरफा संचार का उपयोग करते समय (विशेषकर एक प्रबंधकीय दर्शकों के साथ जो "विस्तार तक पहुंच के साथ पेचीदगियों और अंतर्संबंधों की कार्रवाई योग्य समझ" की तलाश कर रहे हैं) प्रश्न आपकी बातचीत के दौरान पॉप अप हो सकते हैं जो चर्चा को उस दिशा में ले जा सकते हैं जो संबंधित नहीं है वह कहानी जिसे आप बताने की कोशिश कर रहे हैं। जब ऐसा होता है, तो आप कार्रवाई कर सकते हैं और अपनी कहानी के साथ चर्चा को वापस ट्रैक पर ले जा सकते हैं। + + +### 2. अंत को ध्यान में रखकर शुरू करें +अंत को ध्यान में रखकर शुरू करने का मतलब है कि आप अपने दर्शकों के साथ संवाद शुरू करने से पहले अपने इच्छित टेकअवे को समझना। आप अपने दर्शकों को समय से पहले क्या लेना चाहते हैं, इस बारे में विचारशील होने से आपको एक ऐसी कहानी तैयार करने में मदद मिल सकती है जिसका आपके दर्शक अनुसरण कर सकें। अंत को ध्यान में रखकर शुरू करना एकतरफा संचार और दोतरफा संचार दोनों के लिए उपयुक्त है। + +आप अंत को ध्यान में रखकर कैसे शुरू करते हैं? अपने डेटा को संप्रेषित करने से पहले, अपने मुख्य निष्कर्ष लिख लें। फिर, जिस तरह से आप कहानी तैयार कर रहे हैं, जिस तरह से आप अपने डेटा के साथ बताना चाहते हैं, अपने आप से पूछें, "यह मेरे द्वारा बताई जा रही कहानी में कैसे एकीकृत होता है?" + +सावधान रहें - अंत को ध्यान में रखते हुए शुरुआत करना आदर्श है, आप केवल उस डेटा को संप्रेषित नहीं करना चाहते जो आपके इच्छित takeaways का समर्थन करता है। ऐसा करने को चेरी-पिकिंग कहा जाता है, जो तब होता है जब एक संचारक केवल उस डेटा का संचार करता है जो उस बिंदु का समर्थन करता है जिसे वे बनाने के लिए बांध रहे हैं और अन्य सभी डेटा को अनदेखा करते हैं। + +यदि आपके द्वारा एकत्र किया गया सभी डेटा स्पष्ट रूप से आपके इच्छित टेकअवे का समर्थन करता है, तो बढ़िया। लेकिन अगर आपके द्वारा एकत्र किया गया डेटा है जो आपके टेकअवे का समर्थन नहीं करता है, या यहां तक ​​​​कि आपके प्रमुख टेकअवे के खिलाफ तर्क का समर्थन करता है, तो आपको उस डेटा को भी संप्रेषित करना चाहिए। अगर ऐसा होता है, तो अपने दर्शकों के साथ खुलकर बात करें और उन्हें बताएं कि आप अपनी कहानी के साथ बने रहने का विकल्प क्यों चुन रहे हैं, भले ही सभी डेटा इसका समर्थन न करें। + + +### 3. इसे एक वास्तविक कहानी की तरह देखें +एक पारंपरिक कहानी 5 चरणों में होती है। आपने इन चरणों को एक्सपोज़िशन, राइज़िंग एक्शन, क्लाइमेक्स, फॉलिंग एक्शन और डिनाउंसमेंट के रूप में व्यक्त किया होगा। या संदर्भ, संघर्ष, चरमोत्कर्ष, समापन, निष्कर्ष को याद रखना आसान है। अपने डेटा और अपनी कहानी को संप्रेषित करते समय, आप एक समान दृष्टिकोण अपना सकते हैं। + +आप संदर्भ के साथ शुरू कर सकते हैं, मंच सेट कर सकते हैं और सुनिश्चित कर सकते हैं कि आपके दर्शक एक ही पृष्ठ पर हैं। फिर संघर्ष का परिचय दें। आपको यह डेटा एकत्र करने की आवश्यकता क्यों पड़ी? आप किन समस्याओं को हल करना चाह रहे थे? इसके बाद क्लाइमेक्स. डेटा क्या है? डेटा का क्या मतलब है? डेटा हमें कौन से समाधान बताता है जिसकी हमें आवश्यकता है? फिर आप समापन पर पहुंच जाते हैं, जहां आप समस्या को दोहरा सकते हैं, और प्रस्तावित समाधान। अंत में, हम इस निष्कर्ष पर पहुँचते हैं, जहाँ आप अपने मुख्य निष्कर्षों को संक्षेप में बता सकते हैं और अगले कदम जो आप टीम को सुझाते हैं। + +### 4. सार्थक शब्दों और वाक्यांशों का प्रयोग करें +यदि आप और मैं किसी उत्पाद पर एक साथ काम कर रहे थे, और मैंने आपसे कहा "हमारे उपयोगकर्ता हमारे प्लेटफ़ॉर्म पर आने में लंबा समय लेते हैं," तो आप कब तक उस "लंबे समय" का अनुमान लगाएंगे? एक घंटा? एक सप्ताह? यह जानना कठिन है। क्या होगा अगर मैंने इसे पूरे दर्शकों से कहा? दर्शकों में हर कोई इस बारे में एक अलग विचार के साथ समाप्त हो सकता है कि उपयोगकर्ता हमारे प्लेटफॉर्म पर कितना समय लेते हैं। + +इसके बजाय, क्या होगा अगर मैंने कहा "बाहर के उपयोगकर्ताओं को साइन अप करने और हमारे प्लेटफॉर्म पर ऑनबोर्ड होने में औसतन 3 मिनट लगते हैं।" + +वह संदेश अधिक स्पष्ट है। डेटा संचार करते समय, यह सोचना आसान हो सकता है कि आपके दर्शकों में हर कोई आपकी तरह ही सोच रहा है। लेकिन हमेशा ऐसा ही नहीं होता है। अपने डेटा के बारे में स्पष्टता लाना और इसका क्या अर्थ है, एक संचारक के रूप में आपकी जिम्मेदारियों में से एक है। यदि डेटा या आपकी कहानी स्पष्ट नहीं है, तो आपके दर्शकों के लिए कठिन समय होगा, और इस बात की संभावना कम है कि वे आपकी मुख्य बातों को समझेंगे। + +जब आप अस्पष्ट शब्दों के बजाय अर्थपूर्ण शब्दों और वाक्यांशों का उपयोग करते हैं तो आप डेटा को अधिक स्पष्ट रूप से संप्रेषित कर सकते हैं। नीचे कुछ उदाहरण दिए गए हैं। + + - हमारे पास एक *प्रभावशाली* वर्ष था! +- एक व्यक्ति सोच सकता है कि एक प्रभावशाली मतलब राजस्व में 2% - 3% की वृद्धि है, और एक व्यक्ति सोच सकता है कि इसका मतलब 50% - 60% की वृद्धि है। + - हमारे उपयोगकर्ताओं की सफलता दर *नाटकीय रूप से* बढ़ी। +- नाटकीय वृद्धि कितनी बड़ी है? + - इस उपक्रम के लिए *महत्वपूर्ण* प्रयास की आवश्यकता होगी। +- कितना प्रयास महत्वपूर्ण है? + +अस्पष्ट शब्दों का उपयोग आने वाले अधिक डेटा के परिचय के रूप में या आपके द्वारा अभी-अभी बताई गई कहानी के सारांश के रूप में उपयोगी हो सकता है। लेकिन यह सुनिश्चित करने पर विचार करें कि आपकी प्रस्तुति का प्रत्येक भाग आपके दर्शकों के लिए स्पष्ट है। + + +### 5. भावना का प्रयोग करें +कहानी कहने में भावना महत्वपूर्ण है। जब आप डेटा के साथ कहानी सुना रहे हों तो यह और भी महत्वपूर्ण हो जाता है। जब आप डेटा का संचार कर रहे होते हैं, तो सब कुछ उन टेकअवे पर केंद्रित होता है जो आप चाहते हैं कि आपके दर्शक हों। जब आप दर्शकों के लिए एक भावना पैदा करते हैं तो यह उन्हें सहानुभूति रखने में मदद करता है, और उन्हें कार्रवाई करने की अधिक संभावना बनाता है। भावना इस संभावना को भी बढ़ाती है कि एक दर्शक आपके संदेश को याद रखेगा। + +इसका सामना आपने टीवी विज्ञापनों के साथ पहले भी किया होगा। कुछ विज्ञापन बहुत उदास होते हैं, और अपने दर्शकों से जुड़ने के लिए एक दुखद भावना का उपयोग करते हैं और जो डेटा वे प्रस्तुत कर रहे हैं उसे वास्तव में अलग बनाते हैं। या, कुछ विज्ञापन बहुत उत्साहित हैं और खुश हैं कि आप उनके डेटा को एक सुखद एहसास के साथ जोड़ सकते हैं। + +डेटा संचार करते समय आप भावनाओं का उपयोग कैसे करते हैं? नीचे कुछ तरीके दिए गए हैं। + + - प्रशंसापत्र और व्यक्तिगत कहानियों का प्रयोग करें +- डेटा एकत्र करते समय, मात्रात्मक और गुणात्मक दोनों डेटा एकत्र करने का प्रयास करें, और संचार करते समय दोनों प्रकार के डेटा को एकीकृत करें। यदि आपका डेटा मुख्य रूप से मात्रात्मक है, तो आपका डेटा आपको जो कुछ भी बता रहा है, उसके अनुभव के बारे में अधिक जानने के लिए व्यक्तियों से कहानियों की तलाश करें। + - इमेजरी का प्रयोग करें +- छवियां दर्शकों को खुद को एक स्थिति में देखने में मदद करती हैं। जब आप उपयोग करते हैं +छवियों, आप दर्शकों को उस भावना की ओर धकेल सकते हैं जो आप महसूस करते हैं +उनके पास आपके डेटा के बारे में होना चाहिए। + - रंग का प्रयोग करें +- अलग-अलग रंग अलग-अलग भावनाएं पैदा करते हैं। लोकप्रिय रंग और उनमें जो भावनाएँ पैदा होती हैं, वे नीचे हैं। ध्यान रखें कि विभिन्न संस्कृतियों में रंगों के अलग-अलग अर्थ हो सकते हैं। +- नीला आमतौर पर शांति और विश्वास की भावना पैदा करता है +- हरा आमतौर पर प्रकृति और पर्यावरण से संबंधित होता है +- लाल आमतौर पर जुनून और उत्साह होता है +- पीला आमतौर पर आशावाद और खुशी है + +# संचार केस स्टडी +एमर्सन एक मोबाइल ऐप के लिए एक उत्पाद प्रबंधक है। एमर्सन ने देखा है कि ग्राहक सप्ताहांत में 42% अधिक शिकायतें और बग रिपोर्ट प्रस्तुत करते हैं। एमर्सन ने यह भी देखा कि जो ग्राहक 48 घंटों के बाद अनुत्तरित शिकायत सबमिट करते हैं, उनके ऐप स्टोर में ऐप को 1 या 2 की रेटिंग देने की संभावना 32% अधिक होती है। + +शोध करने के बाद, इमर्सन के पास कुछ समाधान हैं जो इस मुद्दे का समाधान करेंगे। एमर्सन डेटा और प्रस्तावित समाधानों को संप्रेषित करने के लिए ३ कंपनी के साथ ३० मिनट की बैठक स्थापित करता है। + +इस बैठक के दौरान, एमर्सन का लक्ष्य कंपनी के प्रमुखों को यह समझाना है कि नीचे दिए गए 2 समाधान ऐप की रेटिंग में सुधार कर सकते हैं, जो संभवतः उच्च राजस्व में तब्दील हो जाएगा। + +**समाधान 1.** सप्ताहांत पर काम करने के लिए ग्राहक सेवा प्रतिनिधि को किराए पर लें + +**समाधान 2.** एक नई ग्राहक सेवा टिकटिंग प्रणाली खरीदें जहां ग्राहक सेवा प्रतिनिधि आसानी से पहचान सकें कि कौन सी शिकायतें कतार में सबसे लंबी रही हैं - ताकि वे बता सकें कि किसको तुरंत संबोधित करना है। + +मीटिंग में, एमर्सन 5 मिनट यह बताते हुए बिताते हैं कि ऐप स्टोर पर कम रेटिंग क्यों खराब है, 10 मिनट शोध प्रक्रिया की व्याख्या करते हैं और रुझानों की पहचान कैसे की जाती है, 10 मिनट हाल की कुछ ग्राहकों की शिकायतों के बारे में बताते हुए, और अंतिम 5 मिनट 2 संभावित समाधानों पर प्रकाश डालते हुए। + +क्या यह इमर्सन के लिए इस बैठक के दौरान संवाद करने का एक प्रभावी तरीका था? + +बैठक के दौरान, एक कंपनी लीड ने ग्राहकों की 10 मिनट की शिकायतों को ठीक किया, जिनसे इमर्सन गुजरा। बैठक के बाद, केवल यही शिकायतें इस टीम के नेतृत्व को याद रहीं। एक अन्य कंपनी लीड ने मुख्य रूप से एमर्सन पर शोध प्रक्रिया का वर्णन करने पर ध्यान केंद्रित किया। तीसरी कंपनी के नेतृत्व ने इमर्सन द्वारा प्रस्तावित समाधानों को याद किया लेकिन यह सुनिश्चित नहीं था कि उन समाधानों को कैसे लागू किया जा सकता है। + +ऊपर की स्थिति में, आप देख सकते हैं कि इमर्सन जो चाहता था कि टीम लीड ले ले, और बैठक से दूर ले जाने के बीच एक महत्वपूर्ण अंतर था। नीचे एक और तरीका है जिस पर इमर्सन विचार कर सकता है। + +इमर्सन इस दृष्टिकोण को कैसे सुधार सकता है? +प्रसंग, संघर्ष, चरमोत्कर्ष, समापन, निष्कर्ष +**संदर्भ** - इमर्सन पहले 5 मिनट पूरी स्थिति का परिचय देने और यह सुनिश्चित करने में बिता सकता है कि टीम लीड यह समझती है कि समस्याएं कंपनी के लिए महत्वपूर्ण मीट्रिक को कैसे प्रभावित करती हैं, जैसे राजस्व। + +इसे इस तरह से रखा जा सकता है: "वर्तमान में, ऐप स्टोर में हमारे ऐप की रेटिंग 2.5 है। ऐप स्टोर में रेटिंग ऐप स्टोर ऑप्टिमाइज़ेशन के लिए महत्वपूर्ण हैं, जो यह प्रभावित करती है कि कितने उपयोगकर्ता हमारे ऐप को खोज में देखते हैं, xxxxx डी हमारे ऐप को परिप्रेक्ष्य उपयोगकर्ताओं के लिए कैसे देखा जाता है। और निश्चित रूप से, हमारे पास जितने उपयोगकर्ता हैं, वे सीधे राजस्व से जुड़े हैं।" + +**संघर्ष** तब इमर्सन अगले 5 मिनट तक या संघर्ष के बारे में बात करने के लिए आगे बढ़ सकता है। + +यह इस प्रकार हो सकता है: "उपयोगकर्ता सप्ताहांत पर 42% अधिक शिकायतें और बग रिपोर्ट जमा करते हैं। जो ग्राहक 48 घंटों के बाद अनुत्तरित शिकायत सबमिट करते हैं, उनके ऐप स्टोर में हमारे ऐप को 2 से अधिक रेटिंग देने की संभावना 32% कम होती है। ऐप स्टोर में हमारे ऐप की रेटिंग को 4 तक बढ़ाने से हमारी दृश्यता में 20-30% की वृद्धि होगी, जिसका मेरा अनुमान है कि राजस्व में 10% की वृद्धि होगी।" बेशक, इमर्सन को इन नंबरों को सही ठहराने के लिए तैयार रहना चाहिए। + +**क्लाइमेक्स** आधार तैयार करने के बाद, इमर्सन 5 या इतने मिनट के लिए चरमोत्कर्ष पर जा सकता था। + +इमर्सन प्रस्तावित समाधानों को पेश कर सकता है, यह बता सकता है कि वे समाधान कैसे उल्लिखित मुद्दों को संबोधित करेंगे, उन समाधानों को मौजूदा वर्कफ़्लो में कैसे लागू किया जा सकता है, समाधानों की लागत कितनी है, समाधानों का आरओआई क्या होगा, और शायद कुछ स्क्रीनशॉट भी दिखा सकते हैं या लागू होने पर समाधान कैसे दिखेंगे, इसके वायरफ्रेम। एमर्सन उन उपयोगकर्ताओं के प्रशंसापत्र भी साझा कर सकते हैं, जिन्होंने अपनी शिकायत को संबोधित करने में 48 घंटे से अधिक समय लिया, और यहां तक ​​कि कंपनी के भीतर एक मौजूदा ग्राहक सेवा प्रतिनिधि से एक प्रशंसापत्र भी, जिसने वर्तमान टिकट प्रणाली पर टिप्पणी की है। + +**क्लोजर** अब इमर्सन कंपनी के सामने आने वाली समस्याओं को दूर करने में 5 मिनट बिता सकता है, प्रस्तावित समाधानों पर फिर से विचार कर सकता है और समीक्षा कर सकता है कि वे समाधान सही क्यों हैं। + +**निष्कर्ष** क्योंकि यह कुछ हितधारकों के साथ एक बैठक है जहां दो-तरफा संचार का उपयोग किया जाएगा, इमर्सन तब प्रश्नों के लिए 10 मिनट छोड़ने की योजना बना सकता है, यह सुनिश्चित करने के लिए कि जो कुछ भी टीम लीड को भ्रमित कर रहा था उसे पहले स्पष्ट किया जा सकता है बैठक समाप्त हो गई है। + +यदि एमर्सन ने #2 दृष्टिकोण अपनाया, तो इस बात की बहुत अधिक संभावना है कि टीम लीड मीटिंग से ठीक उसी तरह दूर ले जाएगी, जिसे एमर्सन ने उनसे दूर करने का इरादा किया था - कि जिस तरह से शिकायतों और बगों को संभाला जा सकता है, उसमें सुधार किया जा सकता है, और 2 समाधान हैं। उस सुधार को लाने के लिए स्थापित किया जा सकता है। यह दृष्टिकोण डेटा और कहानी को संप्रेषित करने के लिए एक अधिक प्रभावी दृष्टिकोण होगा, जिसे इमर्सन संवाद करना चाहता है। +# निष्कर्ष +### मुख्य बिंदुओं का सारांश + - संचार करने के लिए सूचना देना या आदान-प्रदान करना है। + - डेटा संप्रेषित करते समय, आपका उद्देश्य केवल अपने दर्शकों तक संख्या पहुँचाना नहीं होना चाहिए। आपका उद्देश्य एक ऐसी कहानी को संप्रेषित करना होना चाहिए जो आपके डेटा द्वारा सूचित हो। + - संचार 2 प्रकार के होते हैं, वन-वे कम्युनिकेशन (सूचना बिना किसी प्रतिक्रिया के संप्रेषित की जाती है) और टू-वे कम्युनिकेशन (सूचना को आगे और पीछे संप्रेषित किया जाता है।) + - ऐसी कई रणनीतियाँ हैं जिनका उपयोग आप अपने डेटा के साथ कहानी कहने के लिए कर सकते हैं, 5 रणनीतियाँ जिनका हमने अध्ययन किया है: +- अपने दर्शकों, अपने माध्यम और अपनी संचार पद्धति को समझें +- मन में कार्य समाप्ति का विचार लेकर कार्य प्रारंभ करना +- इसे एक वास्तविक कहानी की तरह देखें +- सार्थक शब्दों और वाक्यांशों का प्रयोग करें +- भावना का प्रयोग करें + +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/31) + +### स्व अध्ययन के लिए अनुशंसित संसाधन +[द फाइव सी ऑफ़ स्टोरीटेलिंग - आर्टिक्यूलेट पर्सुएशन](http://articlepersuasion.com/the-five-cs-of-storytelling/) + +[१.४ एक संचारक के रूप में आपकी जिम्मेदारियां - सफलता के लिए व्यावसायिक संचार (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibility-as-a-communicator/) + +[डेटा के साथ कहानी कैसे सुनाएं (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data) + +[टू-वे कम्युनिकेशन: अधिक व्यस्त कार्यस्थल के लिए 4 टिप्स (yourविचारपार्टनर.कॉम)](https://www.your Thoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through- दो तरफ से संचार) + +[महान डेटा स्टोरीटेलिंग के लिए 6 संक्षिप्त चरण - बार्नराइज़र, एलएलसी (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/) + +[डेटा के साथ कहानी कैसे सुनाएं | ल्यूसिडचार्ट ब्लॉग](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data) + +[6 Cs ऑफ़ इफेक्टिव स्टोरीटेलिंग ऑन सोशल मीडिया | कूलर इनसाइट्स](https://coolerinsights.com/2018/06/efffect-storytelling-social-media/) + +[प्रस्तुतिकरण में भावनाओं का महत्व | Ethos3 - एक प्रस्तुति प्रशिक्षण और डिजाइन एजेंसी](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/) + +[डेटा स्टोरीटेलिंग: भावनाओं और तर्कसंगत निर्णयों को जोड़ना (toucantoco.com)](https://www.toucantoco.com/en/blog/data-storytelling-dataviz) + +[भावनात्मक विज्ञापन: कैसे ब्रांड लोगों को खरीदने के लिए भावनाओं का उपयोग करते हैं (hubspot.com)](https://blog.hubspot.com/marketing/emotions-in-advertising-examples) + +[अपनी प्रस्तुति स्लाइड के लिए रंग चुनना | स्लाइड के बाहर सोचें](https://www.thinkoutsidetheslide.com/choosing-colors-for-your-presentation-slides/) + +[डेटा कैसे प्रस्तुत करें [१० विशेषज्ञ युक्तियाँ] | ऑब्जर्वप्वाइंट](https://resources.observepoint.com/blog/10-tips-for-presenting-data) + +[माइक्रोसॉफ्ट वर्ड - प्रेरक निर्देश.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) + +[द पावर ऑफ स्टोरी फॉर योर डेटा (थिंकहडी.कॉम)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx) + +[डेटा प्रस्तुति में सामान्य गलतियाँ (perceptualedge.com)](https://www.perceptualedge.com/articles/ie/data_presentation.pdf) + +[इन्फोग्राफिक: यहां से बचने के लिए 15 सामान्य डेटा गलतियाँ हैं (visualcapitalist.com)](https://www.visualcapitalist.com/here-are-15-common-data-fallacies-to-avoid/) + +[चेरी पिकिंग: जब लोग उन सबूतों को नज़रअंदाज़ करते हैं जो वे नापसंद करते हैं - प्रभाव विज्ञान](https://effectiviology.com/cherry-picking/#How_to_avoid_cherry_picking) + +[डेटा के साथ कहानियां सुनाएं: डेटा साइंस में संचार | द्वारा सोनाली वर्गीज | टूवर्ड्स डेटा साइंस](https://towardsdatascience.com/tell-stories-with-data-communication-in-data-science-5266f7671d7) + +[१. संचार डेटा - झांकी के साथ संचार डेटा [पुस्तक] (oreilly.com)](https://www.oreilly.com/library/view/communicating-data-with/9781449372019/ch01.html) + +## कार्यभार + +[एक कहानी बताओ] (assignment.md) \ No newline at end of file From f4567ed623f74e68bf518d44c8f11af4fb098fe2 Mon Sep 17 00:00:00 2001 From: Keshav Sharma <61562452+keshav340@users.noreply.github.com> Date: Sat, 9 Oct 2021 20:21:44 -0700 Subject: [PATCH 038/254] Delete bonus-lesson.ipynb --- 2-Working-With-Data/07-python/bonus-lesson.ipynb | 1 - 1 file changed, 1 deletion(-) delete mode 100644 2-Working-With-Data/07-python/bonus-lesson.ipynb diff --git a/2-Working-With-Data/07-python/bonus-lesson.ipynb b/2-Working-With-Data/07-python/bonus-lesson.ipynb deleted file mode 100644 index 44dcbb39..00000000 --- a/2-Working-With-Data/07-python/bonus-lesson.ipynb +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This R environment comes with many helpful analytics packages installed\n# It is defined by the kaggle/rstats Docker image: https://github.com/kaggle/docker-rstats\n# For example, here's a helpful package to load\n\nlibrary(tidyverse) # metapackage of all tidyverse packages\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nlist.files(path = \"../input\")\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2021-10-08T18:11:24.952103Z","iopub.execute_input":"2021-10-08T18:11:24.954562Z","iopub.status.idle":"2021-10-08T18:11:26.309552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"library(zoo)\nlibrary(dplyr)\nlibrary(ggplot2)\nlibrary(ggfortify)\nlibrary(dplyr)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:15:22.966831Z","iopub.execute_input":"2021-10-09T12:15:22.968941Z","iopub.status.idle":"2021-10-09T12:15:23.546202Z"},"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"markdown","source":"## Series","metadata":{}},{"cell_type":"markdown","source":"### Series is like a list or 1D-array, but with index.It is generally used to represent data associated with time.","metadata":{}},{"cell_type":"code","source":"stock_prices = c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)\nstock_prices_glennmark = ts(stock_prices,start = c(2020,1,1),frequency = 12)\nstock_prices_glennmark\nplot(stock_prices_glennmark)\n","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:15:54.612622Z","iopub.execute_input":"2021-10-09T12:15:54.735899Z","iopub.status.idle":"2021-10-09T12:15:55.008804Z"},"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"# CREATING A TIME SERIES\nrandomData<- rnorm(100)\nmonth <- ts(randomData,start=c(2020,1),frequency=12)\nplot(month)\n## it bit much longer a it is 100/4 takes much longer year","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:03.558553Z","iopub.execute_input":"2021-10-09T12:16:03.560254Z","iopub.status.idle":"2021-10-09T12:16:03.679285Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":"**DataFrame**\n#### It is a two dimensional data structure in which data is inserted in tabular form.","metadata":{}},{"cell_type":"code","source":"STOCK_PRICE <- data.frame(\nUSD=c(1.02,1.085,2.05,3.45,4.05,5.32,3.45,4.65,6.65,9.23,10.25,12.69),\nEURO = c(0.85,1.02,1.85,3.02,3.35,4.35,2.65,3.95,5.55,8.90,9.80,11.50))\nSTOCK_PRICES <- ts(STOCK_PRICE,start = c(2020,1,1),frequency = 12)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:24:50.750390Z","iopub.execute_input":"2021-10-09T12:24:50.752297Z","iopub.status.idle":"2021-10-09T12:24:50.767609Z"},"trusted":true},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"STOCK_PRICES","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:24:53.233062Z","iopub.execute_input":"2021-10-09T12:24:53.234839Z","iopub.status.idle":"2021-10-09T12:24:53.260478Z"},"trusted":true},"execution_count":15,"outputs":[]},{"cell_type":"markdown","source":"## Reading Data into R","metadata":{}},{"cell_type":"markdown","source":"### 1. Read a CSV File into R","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"dataset <- read.table(file=\" \",header = TRUE, sep = \",\")","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Data Manipluation","metadata":{}},{"cell_type":"code","source":"dim(STOCK_PRICES )","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:21.200787Z","iopub.execute_input":"2021-10-09T12:16:21.202859Z","iopub.status.idle":"2021-10-09T12:16:21.224888Z"},"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"head(STOCK_PRICES )","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:26.089604Z","iopub.execute_input":"2021-10-09T12:16:26.091545Z","iopub.status.idle":"2021-10-09T12:16:26.114797Z"},"trusted":true},"execution_count":9,"outputs":[]},{"cell_type":"code","source":"summary(STOCK_PRICES )","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:28.433758Z","iopub.execute_input":"2021-10-09T12:16:28.435883Z","iopub.status.idle":"2021-10-09T12:16:28.457663Z"},"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"markdown","source":"#### We ae slicing to find subsets columns of 5-7 of datasets","metadata":{}},{"cell_type":"code","source":"STOCK_PRICES [5,]\n# series","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:35.848118Z","iopub.execute_input":"2021-10-09T12:16:35.850327Z","iopub.status.idle":"2021-10-09T12:16:35.871805Z"},"trusted":true},"execution_count":11,"outputs":[]},{"cell_type":"code","source":"STOCK_PRICES [3:8,]","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:16:50.004019Z","iopub.execute_input":"2021-10-09T12:16:50.006116Z","iopub.status.idle":"2021-10-09T12:16:50.034007Z"},"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"code","source":"slice(STOCK_PRICE ,3:8)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:25:09.777288Z","iopub.execute_input":"2021-10-09T12:25:09.778989Z","iopub.status.idle":"2021-10-09T12:25:09.806709Z"},"trusted":true},"execution_count":16,"outputs":[]},{"cell_type":"markdown","source":"### Pip OPERATOR","metadata":{}},{"cell_type":"code","source":"STOCK_PRICE %>% slice(3:5)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:25:25.256136Z","iopub.execute_input":"2021-10-09T12:25:25.257863Z","iopub.status.idle":"2021-10-09T12:25:25.278594Z"},"trusted":true},"execution_count":18,"outputs":[]},{"cell_type":"markdown","source":"### SLICE SUBSETS the first n rows of dataframe and slice tail subsets the last n rows of dataframe","metadata":{}},{"cell_type":"code","source":"slice_head(STOCK_PRICE,n=2)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:25:55.079932Z","iopub.execute_input":"2021-10-09T12:25:55.081670Z","iopub.status.idle":"2021-10-09T12:25:55.103342Z"},"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"slice_tail(STOCK_PRICE,n=2)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:26:04.997678Z","iopub.execute_input":"2021-10-09T12:26:04.999435Z","iopub.status.idle":"2021-10-09T12:26:05.021799Z"},"trusted":true},"execution_count":20,"outputs":[]},{"cell_type":"markdown","source":"### Slice_max subsets the n rows of a dataset with n largest value with respect to a variable","metadata":{}},{"cell_type":"code","source":"slice_max(STOCK_PRICE,EURO, n=3)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:26:29.905938Z","iopub.execute_input":"2021-10-09T12:26:29.907674Z","iopub.status.idle":"2021-10-09T12:26:29.934518Z"},"trusted":true},"execution_count":21,"outputs":[]},{"cell_type":"code","source":"slice_sample(STOCK_PRICE,n=5)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:26:42.047503Z","iopub.execute_input":"2021-10-09T12:26:42.049113Z","iopub.status.idle":"2021-10-09T12:26:42.071494Z"},"trusted":true},"execution_count":22,"outputs":[]},{"cell_type":"markdown","source":"## Filtering","metadata":{}},{"cell_type":"markdown","source":"### filters out the rows of dataframe which doesn't meet criteria","metadata":{}},{"cell_type":"code","source":"STOCK_PRICE[STOCK_PRICE$EURO>3.35,]","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:29:42.107479Z","iopub.execute_input":"2021-10-09T12:29:42.109116Z","iopub.status.idle":"2021-10-09T12:29:42.131224Z"},"trusted":true},"execution_count":30,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"## Grouping ","metadata":{}},{"cell_type":"markdown","source":"### group_by function group rows of data and frame with respect to one or more variabes","metadata":{}},{"cell_type":"code","source":"library(dplyr)","metadata":{"execution":{"iopub.status.busy":"2021-10-08T13:13:57.808888Z","iopub.execute_input":"2021-10-08T13:13:57.810559Z","iopub.status.idle":"2021-10-08T13:13:57.843966Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df1 <- group_by(STOCK_PRICE,EURO)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:36:27.270590Z","iopub.execute_input":"2021-10-09T12:36:27.272456Z","iopub.status.idle":"2021-10-09T12:36:27.298281Z"},"trusted":true},"execution_count":40,"outputs":[]},{"cell_type":"code","source":"summarise(df1,mymean =mean(EURO))","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:36:38.887295Z","iopub.execute_input":"2021-10-09T12:36:38.889081Z","iopub.status.idle":"2021-10-09T12:36:38.919223Z"},"trusted":true},"execution_count":41,"outputs":[]},{"cell_type":"code","source":"df2<-group_by(df1,USD>3.2)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:36:53.022367Z","iopub.execute_input":"2021-10-09T12:36:53.023993Z","iopub.status.idle":"2021-10-09T12:36:53.051015Z"},"trusted":true},"execution_count":42,"outputs":[]},{"cell_type":"code","source":"summarise(df2,mymean = mean(USD))","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:05.348959Z","iopub.execute_input":"2021-10-09T12:37:05.350547Z","iopub.status.idle":"2021-10-09T12:37:05.374010Z"},"trusted":true},"execution_count":44,"outputs":[]},{"cell_type":"markdown","source":"## SELECT","metadata":{}},{"cell_type":"code","source":"df<-select(STOCK_PRICE,EURO,USD)\ndf","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:45.562234Z","iopub.execute_input":"2021-10-09T12:37:45.563814Z","iopub.status.idle":"2021-10-09T12:37:45.591553Z"},"trusted":true},"execution_count":47,"outputs":[]},{"cell_type":"code","source":"df<- select(df,-EURO)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:55.423706Z","iopub.execute_input":"2021-10-09T12:37:55.425323Z","iopub.status.idle":"2021-10-09T12:37:55.440506Z"},"trusted":true},"execution_count":48,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:37:58.655523Z","iopub.execute_input":"2021-10-09T12:37:58.657351Z","iopub.status.idle":"2021-10-09T12:37:58.687523Z"},"trusted":true},"execution_count":49,"outputs":[]},{"cell_type":"markdown","source":"## Arrange","metadata":{}},{"cell_type":"code","source":"df <- arrange(STOCK_PRICE, desc(USD))","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:19.525371Z","iopub.execute_input":"2021-10-09T12:38:19.526944Z","iopub.status.idle":"2021-10-09T12:38:19.545423Z"},"trusted":true},"execution_count":51,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:22.301574Z","iopub.execute_input":"2021-10-09T12:38:22.303359Z","iopub.status.idle":"2021-10-09T12:38:22.326992Z"},"trusted":true},"execution_count":52,"outputs":[]},{"cell_type":"code","source":"df <- arrange(STOCK_PRICE, desc(USD),EURO)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:45.428273Z","iopub.execute_input":"2021-10-09T12:38:45.429970Z","iopub.status.idle":"2021-10-09T12:38:45.446438Z"},"trusted":true},"execution_count":54,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:38:48.362531Z","iopub.execute_input":"2021-10-09T12:38:48.364239Z","iopub.status.idle":"2021-10-09T12:38:48.390254Z"},"trusted":true},"execution_count":55,"outputs":[]},{"cell_type":"code","source":"rename(STOCK_PRICE, DOLLAR = USD)","metadata":{"execution":{"iopub.status.busy":"2021-10-09T12:39:28.495960Z","iopub.execute_input":"2021-10-09T12:39:28.497625Z","iopub.status.idle":"2021-10-09T12:39:28.525934Z"},"trusted":true},"execution_count":57,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]} \ No newline at end of file From 8028c0f6717b28b50625700323acafb195145473 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Sat, 9 Oct 2021 20:24:19 -0700 Subject: [PATCH 039/254] Create pandas.ipynb --- 2-Working-With-Data/R/pandas.ipynb | 936 +++++++++++++++++++++++++++++ 1 file changed, 936 insertions(+) create mode 100644 2-Working-With-Data/R/pandas.ipynb diff --git a/2-Working-With-Data/R/pandas.ipynb b/2-Working-With-Data/R/pandas.ipynb new file mode 100644 index 00000000..323f0133 --- /dev/null +++ b/2-Working-With-Data/R/pandas.ipynb @@ -0,0 +1,936 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 73, + "id": "c105e391", + "metadata": {}, + "outputs": [], + "source": [ + "library(dplyr)\n", + "library(tidyverse)" + ] + }, + { + "cell_type": "markdown", + "id": "00c41f19", + "metadata": {}, + "source": [ + "## Series" + ] + }, + { + "cell_type": "markdown", + "id": "d3490356", + "metadata": {}, + "source": [ + "a<- 1:9" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "2ef3725d", + "metadata": {}, + "outputs": [], + "source": [ + "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "14e6152d", + "metadata": {}, + "outputs": [], + "source": [ + "a1 = length(a)\n", + "b1 = length(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "432b0c2b", + "metadata": {}, + "outputs": [], + "source": [ + "a = data.frame(a,row.names = c(1:a1))" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "adb4391f", + "metadata": {}, + "outputs": [], + "source": [ + "b = data.frame(b,row.names = c(1:b1))" + ] + }, + { + "cell_type": "markdown", + "id": "9d27aa12", + "metadata": {}, + "source": [ + "idx<- seq.Date(from = as.Date(\"20-01-01\"), to = as.Date(\"2001-03-31\"), by = \"day\",)\n", + "print(length(idx))\n" + ] + }, + { + "cell_type": "markdown", + "id": "ee4be842", + "metadata": {}, + "source": [ + "## DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "a8585654", + "metadata": {}, + "outputs": [], + "source": [ + "a = data.frame(a,row.names = c(1:a1))" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "2b8c18b3", + "metadata": {}, + "outputs": [], + "source": [ + "b = data.frame(b,row.names = c(1:b1))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "60b643d5", + "metadata": {}, + "outputs": [ + { + "ename": "ERROR", + "evalue": "Error in bar.plot(data): could not find function \"bar.plot\"\n", + "output_type": "error", + "traceback": [ + "Error in bar.plot(data): could not find function \"bar.plot\"\nTraceback:\n" + ] + } + ], + "source": [ + "bar.plot(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "113578b5", + "metadata": {}, + "outputs": [], + "source": [ + "df <- data.frame(a,b)" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "ef1dff63", + "metadata": {}, + "outputs": [], + "source": [ + "df = df %>% \n", + " rename(\n", + " A = a,\n", + " B = b\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "1d80bf43", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" + ], + "text/latex": [ + "A data.frame: 9 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like \\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\t5 & 5 & Python\\\\\n", + "\t6 & 6 & and \\\\\n", + "\t7 & 7 & Pandas\\\\\n", + "\t8 & 8 & very \\\\\n", + "\t9 & 9 & much \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "| 5 | 5 | Python |\n", + "| 6 | 6 | and |\n", + "| 7 | 7 | Pandas |\n", + "| 8 | 8 | very |\n", + "| 9 | 9 | much |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like \n", + "3 3 to \n", + "4 4 use \n", + "5 5 Python\n", + "6 6 and \n", + "7 7 Pandas\n", + "8 8 very \n", + "9 9 much " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "831630d7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column A (series):\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" + ], + "text/latex": [ + "A data.frame: 9 × 1\n", + "\\begin{tabular}{r|l}\n", + " & A\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t1 & 1\\\\\n", + "\t2 & 2\\\\\n", + "\t3 & 3\\\\\n", + "\t4 & 4\\\\\n", + "\t5 & 5\\\\\n", + "\t6 & 6\\\\\n", + "\t7 & 7\\\\\n", + "\t8 & 8\\\\\n", + "\t9 & 9\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 1\n", + "\n", + "| | A <int> |\n", + "|---|---|\n", + "| 1 | 1 |\n", + "| 2 | 2 |\n", + "| 3 | 3 |\n", + "| 4 | 4 |\n", + "| 5 | 5 |\n", + "| 6 | 6 |\n", + "| 7 | 7 |\n", + "| 8 | 8 |\n", + "| 9 | 9 |\n", + "\n" + ], + "text/plain": [ + " A\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 6\n", + "7 7\n", + "8 8\n", + "9 9" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cat(\"Column A (series):\\n\")\n", + "select(df,'A')" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "055bc484", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" + ], + "text/latex": [ + "A data.frame: 4 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like\\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 4 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like\n", + "3 3 to \n", + "4 4 use " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A<5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "05c2c45a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\n", + "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" + ], + "text/latex": [ + "A data.frame: 1 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t6 & 6 & and\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 1 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 6 | 6 | and |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "6 6 and" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A>5 & df$A<7,]" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "ac8a234f", + "metadata": {}, + "outputs": [], + "source": [ + "df$DivA <- df$A - mean(df$A)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "fb7ee6bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" + ], + "text/latex": [ + "A data.frame: 9 × 3\n", + "\\begin{tabular}{r|lll}\n", + " & A & B & DivA\\\\\n", + " & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4\\\\\n", + "\t2 & 2 & like & -3\\\\\n", + "\t3 & 3 & to & -2\\\\\n", + "\t4 & 4 & use & -1\\\\\n", + "\t5 & 5 & Python & 0\\\\\n", + "\t6 & 6 & and & 1\\\\\n", + "\t7 & 7 & Pandas & 2\\\\\n", + "\t8 & 8 & very & 3\\\\\n", + "\t9 & 9 & much & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 3\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> |\n", + "|---|---|---|---|\n", + "| 1 | 1 | I | -4 |\n", + "| 2 | 2 | like | -3 |\n", + "| 3 | 3 | to | -2 |\n", + "| 4 | 4 | use | -1 |\n", + "| 5 | 5 | Python | 0 |\n", + "| 6 | 6 | and | 1 |\n", + "| 7 | 7 | Pandas | 2 |\n", + "| 8 | 8 | very | 3 |\n", + "| 9 | 9 | much | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA\n", + "1 1 I -4 \n", + "2 2 like -3 \n", + "3 3 to -2 \n", + "4 4 use -1 \n", + "5 5 Python 0 \n", + "6 6 and 1 \n", + "7 7 Pandas 2 \n", + "8 8 very 3 \n", + "9 9 much 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "62e9c8dd", + "metadata": {}, + "outputs": [], + "source": [ + "df$LenB <- str_length(df$B)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "849c33cc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" + ], + "text/latex": [ + "A data.frame: 9 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\t7 & 7 & Pandas & 2 & 6\\\\\n", + "\t8 & 8 & very & 3 & 4\\\\\n", + "\t9 & 9 & much & 4 & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "| 7 | 7 | Pandas | 2 | 6 |\n", + "| 8 | 8 | very | 3 | 4 |\n", + "| 9 | 9 | much | 4 | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 \n", + "7 7 Pandas 2 6 \n", + "8 8 very 3 4 \n", + "9 9 much 4 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "0a65495d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" + ], + "text/latex": [ + "A data.frame: 5 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 5 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[0:5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "ccebdda2", + "metadata": {}, + "outputs": [], + "source": [ + " df1 = group_by(df,LenB)" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "f2dcb719", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
LenBmymean
<int><dbl>
11
22
33
44
66
\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " LenB & mymean\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t 1 & 1\\\\\n", + "\t 2 & 2\\\\\n", + "\t 3 & 3\\\\\n", + "\t 4 & 4\\\\\n", + "\t 6 & 6\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| LenB <int> | mymean <dbl> |\n", + "|---|---|\n", + "| 1 | 1 |\n", + "| 2 | 2 |\n", + "| 3 | 3 |\n", + "| 4 | 4 |\n", + "| 6 | 6 |\n", + "\n" + ], + "text/plain": [ + " LenB mymean\n", + "1 1 1 \n", + "2 2 2 \n", + "3 3 3 \n", + "4 4 4 \n", + "5 6 6 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "summarise(df1,mymean =mean(LenB))" + ] + }, + { + "cell_type": "markdown", + "id": "d8eb00bc", + "metadata": {}, + "source": [ + "## Printing and Plotting" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b96b6be0", + "metadata": {}, + "outputs": [], + "source": [ + "dataset = read.csv(\"file name\")" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "3b1a4735", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" + ], + "text/latex": [ + "A data.frame: 6 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 6 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "head(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "0af4e0e5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\n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\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "08103a39", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\n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\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "barplot(df$A, ylab = 'A',xlab = 'no')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "768d4300", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 55670f0bcd4bdfc4b90731a5cfbdcdc8fad2740e Mon Sep 17 00:00:00 2001 From: Keshav Sharma <61562452+keshav340@users.noreply.github.com> Date: Sat, 9 Oct 2021 20:26:17 -0700 Subject: [PATCH 040/254] Delete 2-Working-With-Data/R directory --- 2-Working-With-Data/R/pandas.ipynb | 936 ----------------------------- 1 file changed, 936 deletions(-) delete mode 100644 2-Working-With-Data/R/pandas.ipynb diff --git a/2-Working-With-Data/R/pandas.ipynb b/2-Working-With-Data/R/pandas.ipynb deleted file mode 100644 index 323f0133..00000000 --- a/2-Working-With-Data/R/pandas.ipynb +++ /dev/null @@ -1,936 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 73, - "id": "c105e391", - "metadata": {}, - "outputs": [], - "source": [ - "library(dplyr)\n", - "library(tidyverse)" - ] - }, - { - "cell_type": "markdown", - "id": "00c41f19", - "metadata": {}, - "source": [ - "## Series" - ] - }, - { - "cell_type": "markdown", - "id": "d3490356", - "metadata": {}, - "source": [ - "a<- 1:9" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "2ef3725d", - "metadata": {}, - "outputs": [], - "source": [ - "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "14e6152d", - "metadata": {}, - "outputs": [], - "source": [ - "a1 = length(a)\n", - "b1 = length(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "432b0c2b", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "adb4391f", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "markdown", - "id": "9d27aa12", - "metadata": {}, - "source": [ - "idx<- seq.Date(from = as.Date(\"20-01-01\"), to = as.Date(\"2001-03-31\"), by = \"day\",)\n", - "print(length(idx))\n" - ] - }, - { - "cell_type": "markdown", - "id": "ee4be842", - "metadata": {}, - "source": [ - "## DataFrame" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "id": "a8585654", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 141, - "id": "2b8c18b3", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "60b643d5", - "metadata": {}, - "outputs": [ - { - "ename": "ERROR", - "evalue": "Error in bar.plot(data): could not find function \"bar.plot\"\n", - "output_type": "error", - "traceback": [ - "Error in bar.plot(data): could not find function \"bar.plot\"\nTraceback:\n" - ] - } - ], - "source": [ - "bar.plot(data)" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "113578b5", - "metadata": {}, - "outputs": [], - "source": [ - "df <- data.frame(a,b)" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "ef1dff63", - "metadata": {}, - "outputs": [], - "source": [ - "df = df %>% \n", - " rename(\n", - " A = a,\n", - " B = b\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "1d80bf43", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" - ], - "text/latex": [ - "A data.frame: 9 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like \\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\t5 & 5 & Python\\\\\n", - "\t6 & 6 & and \\\\\n", - "\t7 & 7 & Pandas\\\\\n", - "\t8 & 8 & very \\\\\n", - "\t9 & 9 & much \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "| 5 | 5 | Python |\n", - "| 6 | 6 | and |\n", - "| 7 | 7 | Pandas |\n", - "| 8 | 8 | very |\n", - "| 9 | 9 | much |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like \n", - "3 3 to \n", - "4 4 use \n", - "5 5 Python\n", - "6 6 and \n", - "7 7 Pandas\n", - "8 8 very \n", - "9 9 much " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "831630d7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Column A (series):\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" - ], - "text/latex": [ - "A data.frame: 9 × 1\n", - "\\begin{tabular}{r|l}\n", - " & A\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t1 & 1\\\\\n", - "\t2 & 2\\\\\n", - "\t3 & 3\\\\\n", - "\t4 & 4\\\\\n", - "\t5 & 5\\\\\n", - "\t6 & 6\\\\\n", - "\t7 & 7\\\\\n", - "\t8 & 8\\\\\n", - "\t9 & 9\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 1\n", - "\n", - "| | A <int> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 5 | 5 |\n", - "| 6 | 6 |\n", - "| 7 | 7 |\n", - "| 8 | 8 |\n", - "| 9 | 9 |\n", - "\n" - ], - "text/plain": [ - " A\n", - "1 1\n", - "2 2\n", - "3 3\n", - "4 4\n", - "5 5\n", - "6 6\n", - "7 7\n", - "8 8\n", - "9 9" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cat(\"Column A (series):\\n\")\n", - "select(df,'A')" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "055bc484", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" - ], - "text/latex": [ - "A data.frame: 4 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like\\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 4 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like\n", - "3 3 to \n", - "4 4 use " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A<5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "05c2c45a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\n", - "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" - ], - "text/latex": [ - "A data.frame: 1 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t6 & 6 & and\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 1 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 6 | 6 | and |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "6 6 and" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A>5 & df$A<7,]" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "ac8a234f", - "metadata": {}, - "outputs": [], - "source": [ - "df$DivA <- df$A - mean(df$A)" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "fb7ee6bd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" - ], - "text/latex": [ - "A data.frame: 9 × 3\n", - "\\begin{tabular}{r|lll}\n", - " & A & B & DivA\\\\\n", - " & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4\\\\\n", - "\t2 & 2 & like & -3\\\\\n", - "\t3 & 3 & to & -2\\\\\n", - "\t4 & 4 & use & -1\\\\\n", - "\t5 & 5 & Python & 0\\\\\n", - "\t6 & 6 & and & 1\\\\\n", - "\t7 & 7 & Pandas & 2\\\\\n", - "\t8 & 8 & very & 3\\\\\n", - "\t9 & 9 & much & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 3\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> |\n", - "|---|---|---|---|\n", - "| 1 | 1 | I | -4 |\n", - "| 2 | 2 | like | -3 |\n", - "| 3 | 3 | to | -2 |\n", - "| 4 | 4 | use | -1 |\n", - "| 5 | 5 | Python | 0 |\n", - "| 6 | 6 | and | 1 |\n", - "| 7 | 7 | Pandas | 2 |\n", - "| 8 | 8 | very | 3 |\n", - "| 9 | 9 | much | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA\n", - "1 1 I -4 \n", - "2 2 like -3 \n", - "3 3 to -2 \n", - "4 4 use -1 \n", - "5 5 Python 0 \n", - "6 6 and 1 \n", - "7 7 Pandas 2 \n", - "8 8 very 3 \n", - "9 9 much 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "62e9c8dd", - "metadata": {}, - "outputs": [], - "source": [ - "df$LenB <- str_length(df$B)" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "849c33cc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" - ], - "text/latex": [ - "A data.frame: 9 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\t7 & 7 & Pandas & 2 & 6\\\\\n", - "\t8 & 8 & very & 3 & 4\\\\\n", - "\t9 & 9 & much & 4 & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "| 7 | 7 | Pandas | 2 | 6 |\n", - "| 8 | 8 | very | 3 | 4 |\n", - "| 9 | 9 | much | 4 | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 \n", - "7 7 Pandas 2 6 \n", - "8 8 very 3 4 \n", - "9 9 much 4 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "0a65495d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" - ], - "text/latex": [ - "A data.frame: 5 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 5 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[0:5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "id": "ccebdda2", - "metadata": {}, - "outputs": [], - "source": [ - " df1 = group_by(df,LenB)" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "f2dcb719", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A tibble: 5 × 2
LenBmymean
<int><dbl>
11
22
33
44
66
\n" - ], - "text/latex": [ - "A tibble: 5 × 2\n", - "\\begin{tabular}{ll}\n", - " LenB & mymean\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t 1 & 1\\\\\n", - "\t 2 & 2\\\\\n", - "\t 3 & 3\\\\\n", - "\t 4 & 4\\\\\n", - "\t 6 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A tibble: 5 × 2\n", - "\n", - "| LenB <int> | mymean <dbl> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 6 | 6 |\n", - "\n" - ], - "text/plain": [ - " LenB mymean\n", - "1 1 1 \n", - "2 2 2 \n", - "3 3 3 \n", - "4 4 4 \n", - "5 6 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "summarise(df1,mymean =mean(LenB))" - ] - }, - { - "cell_type": "markdown", - "id": "d8eb00bc", - "metadata": {}, - "source": [ - "## Printing and Plotting" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b96b6be0", - "metadata": {}, - "outputs": [], - "source": [ - "dataset = read.csv(\"file name\")" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "3b1a4735", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" - ], - "text/latex": [ - "A data.frame: 6 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 6 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "head(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "0af4e0e5", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\nDcw01iOkcZnFioQ0LJNYk5BGZQ6rEtKgTGFdQhqTGaxMSCNyDFudkAZk+uoT0njMXgNCGo7J\na0FIozF3TQhpMKauDSGNxcw1IqShmLhWhDQS89aMkMbhGLYhIQ3DpLUkpFGYs6aENAhT1paQ\nxmDGGhPSEExYa0IagflqTkgDMF3tCal/ZisBIfXOMWwKQuqcqcpBSH0zU0kIqWsmKgsh9cw8\npSGkjpmmPITUL7OUiJC6ZZIyEVKvzFEqQuqTY9hkhNQlE5SNkHpkftIRUodMTz5C6o/ZSUhI\n3TE5GQmpN+YmJSF1xtTkJKS+mJmkhNQTx7BpCakjpiUvIfXDrCQmpG6YlMyE1AtzkpqQOmFK\nchNSH8xIckLqggnJTkg9MB/pCSk/x7AdaBLSjzvDznlX9jNlMnogpLwO0+TpqA8VQyr/tcYl\nxnKYBSH1oWJI/9sI6RLl48Fk9KDmt3bbu3L7evgMX32KsyubRfn0RnZ1f0b6VcqvnZ+RzlOO\nT0qkV/nFhtfbcrcV0nmKjvpR/VW7x7J5FtJZvGrXkfovf7/c/PwzkM3zXpCfFrvR4hzpXkg/\nMwV98StCOZmBzggppeknoDtCymj2+++QkBKa/Pa7JKR85r77TgkpnalvvltCymbme++YkHJx\nAtspIaUy7Y13T0iZzHrfAxBSIpPe9hCElMecdz0IIaUx5U0PQ0hZzHjPAxFSEhPe8lCElMN8\ndzwYIWXgGLZ7QkpgstsdkpDam+tuByWk5qa62WEJqbWZ7nVgQmpsolsdmpDamudOByekpqa5\n0eEJqaVZ7nMCQmrHMexAhNTMFDc5DSG1MsM9TkRIjUxwi1MRUhvj3+FkhNTE8Dc4HSG1MPr9\nTUhIDQx+e1MSUn1j392khFSbY9ghCamygW9takKqa9w7m5yQqhr2xqYnpJpGvS+EVNOgt8VO\nSDWNeVccCKmaIW+KD0KqZcR74g8h1eEYdnBCqmK4G+IvQqphtPvhH0KqYLDb4QtCWt9Yd8OX\nhLS6oW6GE4S0tpHuhZOEtLKBboVvCGld49wJ3xLSmhzDTkNIKxrkNjiDkNYzxl1wFiGtZoib\n4ExCWssI98DZhLSSAW6BCwhpHf3fARcR0iq6vwEuJKQ19D5+LiakeI5hJySkSGXfUK+DZwkh\nxTk8E3k6mpOQ4hxGLaQ5CSlM+XjocvAsJKQw5dMbsxFSmHJ8UmI6QopTdDQvIcXxqt3EhBTl\ncIQko1kJKUiHQyaQkGL0N2JCCSlEdwMmmJAi9DZewgkpQGfDZQVCWq6v0bIKIS3W1WBZiZAW\ncnLEnpCW6WekrEpIi3QzUFYmpCV6GSerE9ICnQyTCoR0vT5GSRVCuloXg6QSIV2rhzFSjZCu\n4/iI/xDSVdIPkMqEdI3s46M6IV0h+fBoQEiXyz06mhDSxVIPjkaEdKnMY6MZIV0o8dBoSEgX\ncXzE14R0iazjojkhXSDpsEhASOfLOSpSENLZUg6KJIR0roxjIg0hnSnhkEhESGfxsjffE9I5\nso2HdIR0hmTDISEh/SzXaEhJSD9KNRiSEtJPMo2FtIT0g0RDITEhfS/PSEhNSN9xfMSZhPSN\nJMOgA0I6Lcco6IKQTkoxCDohpFMyjIFuCCnvEOiIkLKOgK4IKecA6IyQvrq8jriQkLJdnS4J\nKdfF6ZSQMl2bbgkpz6XpmJCyXJmuCSnHhemckDJcl+4J6dNVdcS1hNT2ogxCSC2vyTCE1O6S\nDERIra7IUITU5oIMRkgtrsdwhFT/cgyoZkjb+1Junz8+ybefpdbOLvthOD5iuYohbTdl7+79\nkyQI6TAGGRGhYkgP5emtpqfN7eGTZAjp54HAeSqGtHn/wNfNzWuKkMrHg5JYrmJIv9vZ3t5+\nFVL57MpLXDaeT2+wTMWQbsr293u3SZ6Rfj8pwUIVQ3oq9x/vvZbbBCF9xKwjAtR8+fvhTz3P\nP3z35lU7OlP1QPbl7vd7r/fNQ3o/QpIRIab9zQYFEWnWkHREqElD0hGx5gxJRwSbMiQdEW3G\nkHREuAlD0hHx5gtJR6xgtpCcwLKKyUKSEeuYKyQdsZKpQtIRa5kpJB2xmolC0hHrmSckHbGi\naULSEWuaJSQdsao5QnIMy8qmCElGrG2GkHTE6iYISUesb/yQdEQFw4ekI2oYPSQdUcXgIemI\nOsYOSUdUMnJIjmGpZuCQZEQ944akIyoaNiQdUdOoIemIqgYNSUfUNWZIOqKyIUPSEbWNGJKO\nqG68kBzD0sBwIcmIFkYLSUc0MVhIOqKNsULSEY0MFZKOaGWkkHREMwOFpCPaGSckHdHQKCE5\nhqWpQUKSEW2NEZKOaGyIkHREayOEpCOaGyAkHdFe/yHpiAS6D0lHZNB7SDoihb5DcgxLEl2H\nJCOy6DkkHZFGxyHpiDz6DUlHJNJtSDoik15D0hGpdBqSjsilz5B0RDI9huQYlnT6CqnsG5IR\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "08103a39", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\n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\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "barplot(df$A, ylab = 'A',xlab = 'no')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "768d4300", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "4.1.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From f76221fac3eac574ac70f4f311c3daa724d7ac7d Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Sat, 9 Oct 2021 20:28:25 -0700 Subject: [PATCH 041/254] Update pandas.ipynb --- 2-Working-With-Data/R/pandas.ipynb | 69 +++++++++++++----------------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/2-Working-With-Data/R/pandas.ipynb b/2-Working-With-Data/R/pandas.ipynb index 323f0133..901a51c9 100644 --- a/2-Working-With-Data/R/pandas.ipynb +++ b/2-Working-With-Data/R/pandas.ipynb @@ -3,7 +3,7 @@ { "cell_type": "code", "execution_count": 73, - "id": "c105e391", + "id": "f356bf26", "metadata": {}, "outputs": [], "source": [ @@ -13,7 +13,7 @@ }, { "cell_type": "markdown", - "id": "00c41f19", + "id": "717d5825", "metadata": {}, "source": [ "## Series" @@ -21,7 +21,7 @@ }, { "cell_type": "markdown", - "id": "d3490356", + "id": "03ac7b71", "metadata": {}, "source": [ "a<- 1:9" @@ -30,7 +30,7 @@ { "cell_type": "code", "execution_count": 75, - "id": "2ef3725d", + "id": "f4149d4e", "metadata": {}, "outputs": [], "source": [ @@ -40,7 +40,7 @@ { "cell_type": "code", "execution_count": 76, - "id": "14e6152d", + "id": "5633dd5e", "metadata": {}, "outputs": [], "source": [ @@ -51,7 +51,7 @@ { "cell_type": "code", "execution_count": 77, - "id": "432b0c2b", + "id": "834b824d", "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ { "cell_type": "code", "execution_count": 78, - "id": "adb4391f", + "id": "f25cedc2", "metadata": {}, "outputs": [], "source": [ @@ -70,16 +70,7 @@ }, { "cell_type": "markdown", - "id": "9d27aa12", - "metadata": {}, - "source": [ - "idx<- seq.Date(from = as.Date(\"20-01-01\"), to = as.Date(\"2001-03-31\"), by = \"day\",)\n", - "print(length(idx))\n" - ] - }, - { - "cell_type": "markdown", - "id": "ee4be842", + "id": "aea16930", "metadata": {}, "source": [ "## DataFrame" @@ -88,7 +79,7 @@ { "cell_type": "code", "execution_count": 140, - "id": "a8585654", + "id": "0793b3b7", "metadata": {}, "outputs": [], "source": [ @@ -98,7 +89,7 @@ { "cell_type": "code", "execution_count": 141, - "id": "2b8c18b3", + "id": "bde43cd9", "metadata": {}, "outputs": [], "source": [ @@ -108,7 +99,7 @@ { "cell_type": "code", "execution_count": 109, - "id": "60b643d5", + "id": "5db4a116", "metadata": {}, "outputs": [ { @@ -127,7 +118,7 @@ { "cell_type": "code", "execution_count": 79, - "id": "113578b5", + "id": "e5e6313c", "metadata": {}, "outputs": [], "source": [ @@ -137,7 +128,7 @@ { "cell_type": "code", "execution_count": 80, - "id": "ef1dff63", + "id": "8358faeb", "metadata": {}, "outputs": [], "source": [ @@ -151,7 +142,7 @@ { "cell_type": "code", "execution_count": 81, - "id": "1d80bf43", + "id": "c439f0f3", "metadata": {}, "outputs": [ { @@ -234,7 +225,7 @@ { "cell_type": "code", "execution_count": 82, - "id": "831630d7", + "id": "26c75894", "metadata": {}, "outputs": [ { @@ -325,7 +316,7 @@ { "cell_type": "code", "execution_count": 83, - "id": "055bc484", + "id": "7f6885ba", "metadata": {}, "outputs": [ { @@ -388,7 +379,7 @@ { "cell_type": "code", "execution_count": 84, - "id": "05c2c45a", + "id": "0018c9fc", "metadata": {}, "outputs": [ { @@ -439,7 +430,7 @@ { "cell_type": "code", "execution_count": 85, - "id": "ac8a234f", + "id": "079a3b19", "metadata": {}, "outputs": [], "source": [ @@ -449,7 +440,7 @@ { "cell_type": "code", "execution_count": 86, - "id": "fb7ee6bd", + "id": "64dac80e", "metadata": {}, "outputs": [ { @@ -532,7 +523,7 @@ { "cell_type": "code", "execution_count": 87, - "id": "62e9c8dd", + "id": "c2fdab9c", "metadata": {}, "outputs": [], "source": [ @@ -542,7 +533,7 @@ { "cell_type": "code", "execution_count": 88, - "id": "849c33cc", + "id": "c523989b", "metadata": {}, "outputs": [ { @@ -625,7 +616,7 @@ { "cell_type": "code", "execution_count": 89, - "id": "0a65495d", + "id": "c095b403", "metadata": {}, "outputs": [ { @@ -692,7 +683,7 @@ { "cell_type": "code", "execution_count": 91, - "id": "ccebdda2", + "id": "f6f37d10", "metadata": {}, "outputs": [], "source": [ @@ -702,7 +693,7 @@ { "cell_type": "code", "execution_count": 93, - "id": "f2dcb719", + "id": "c1908f62", "metadata": {}, "outputs": [ { @@ -768,7 +759,7 @@ }, { "cell_type": "markdown", - "id": "d8eb00bc", + "id": "f927a466", "metadata": {}, "source": [ "## Printing and Plotting" @@ -777,7 +768,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b96b6be0", + "id": "6e20f11d", "metadata": {}, "outputs": [], "source": [ @@ -787,7 +778,7 @@ { "cell_type": "code", "execution_count": 94, - "id": "3b1a4735", + "id": "6bb554db", "metadata": {}, "outputs": [ { @@ -858,7 +849,7 @@ { "cell_type": "code", "execution_count": 151, - "id": "0af4e0e5", + "id": "14fa8a58", "metadata": {}, "outputs": [ { @@ -884,7 +875,7 @@ { "cell_type": "code", "execution_count": 96, - "id": "08103a39", + "id": "0db236b1", "metadata": {}, "outputs": [ { @@ -910,7 +901,7 @@ { "cell_type": "code", "execution_count": null, - "id": "768d4300", + "id": "37d719c4", "metadata": {}, "outputs": [], "source": [] From 50f11531a5d9f0128264d320dd15fa2eb8b78d8d Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sun, 10 Oct 2021 00:29:27 -0300 Subject: [PATCH 042/254] Create README.pt-br.md --- .../translations/README.pt-br.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 3-Data-Visualization/translations/README.pt-br.md diff --git a/3-Data-Visualization/translations/README.pt-br.md b/3-Data-Visualization/translations/README.pt-br.md new file mode 100644 index 00000000..1437ecf3 --- /dev/null +++ b/3-Data-Visualization/translations/README.pt-br.md @@ -0,0 +1,31 @@ +# Visualizações + +![a bee on a lavender flower](./../images/bee.jpg) +> Foto por
Jenna Lee em Unsplash + +Visualizar dados é uma das tarefas mais importantes de um cientista de dados. Imagens valem mais que 1000 palavras, e uma visualização pode te ajudar a identificar todo tipo de partes interessantes dos seus dados, como picos, outliers, agrupamentos, tendências, e mais, que podem te ajudar a entender a história que seus dados estão tentando contar. + +Nessas cinco aulas, você irá explorar dados vindos da natureza e criar visualizações bonitas e interessantes usando várias técnicas. + +### Tópicos + +1. [Visualizando quantidades](09-visualization-quantities/README.md) +1. [Visualizando distribuições](10-visualization-distributions/README.md) +1. [Visualizando proporções](11-visualization-proportions/README.md) +1. [Visualizando relações](12-visualization-relationships/README.md) +1. [Criando visualizações relevantes](13-meaningful-visualizations/README.md) + +### Créditos + +Essas aulas foram escritas com 🌸 por [Jen Looper](https://twitter.com/jenlooper) + +🍯 Dados de produção de mel nos EUA são provenientes do projeto de Jessica Li no [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). Os [dados](https://usda.library.cornell.edu/concern/publications/rn301137d) são provenientes do [Departamento de Agricultura dos Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 Dados dos cogumelos também são provenientes do [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) revisados por Hatteras Dunton. Esse dataset inclui descrições de amostras hipotéticas que correspondem a 23 espécies de cogumelos lamelados das famílias Agaricus e Lepiota. Mushroom drawn from The Audubon Society Field Guide to North American Mushrooms (1981). Esse dataset foi doado para UCI ML 27 em 1987. + +🦆 Dados de pássaros de Minnesota também são provenientes do [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) raspados (web scraping) da [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) por Hannah Collins. + +Todos esses datasets estão licensiados sob [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). + + + From 8665bf9a86eebcacff72ad27c3cb814c92b5e4d9 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Sat, 9 Oct 2021 20:32:20 -0700 Subject: [PATCH 043/254] added --- 2-Working-With-Data/R/{pandas.ipynb => Data.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 2-Working-With-Data/R/{pandas.ipynb => Data.ipynb} (100%) diff --git a/2-Working-With-Data/R/pandas.ipynb b/2-Working-With-Data/R/Data.ipynb similarity index 100% rename from 2-Working-With-Data/R/pandas.ipynb rename to 2-Working-With-Data/R/Data.ipynb From 70f6cfb2c6d9f3aab7376e7502132b15f89219ce Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sun, 10 Oct 2021 00:52:09 -0300 Subject: [PATCH 044/254] Create README.pt-br.md Translation is not completed yet. --- .../translations/README.pt-br.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md new file mode 100644 index 00000000..afa601e3 --- /dev/null +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md @@ -0,0 +1,204 @@ +# Visualizando Quantidades + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Visualizando quantidades - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +Nessa aula você irá explorar como usar uma das muitas bibliotecas disponíveis de Python para aprender a criar visualizações interessantes relacionadas ao conceito de quantidade. Usando um dataset já limpo sobre pássaros de Minnesota, você pode aprender muitos fatos interessantes sobre a fauna selvagem local. +## [Quiz pré-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/16) + +## Observar envergadura de asa com Matplotlib + +Uma biblioteca excelente para criar gráficos simples e sofisticados de diversos tipos é o [Matplotlib](https://matplotlib.org/stable/index.html). Em geral, o processo de plotar dados com essas bibliotecas inclui identificar as partes do seu dataframe que você quer focar, utilizando quaisquer transformações necessárias nestes dados, atribuindo seus valores dos eixos x e y, decidindo qual tipo de gráfico mostrar, e então mostrando o gráfico. O Matplotlib oferece uma grande variedade de visualizações, mas, nesta aula, iremos focar nos mais apropriados para visualizar quantidade: gráfico de linha, gráfico de dispersão e gráfico de barra. + +> ✅ Use the best chart to suit your data's structure and the story you want to tell. +> - To analyze trends over time: line +> - To compare values: bar, column, pie, scatterplot +> - To show how parts relate to a whole: pie +> - To show distribution of data: scatterplot, bar +> - To show trends: line, column +> - To show relationships between values: line, scatterplot, bubble + +If you have a dataset and need to discover how much of a given item is included, one of the first tasks you have at hand will be to inspect its values. + +✅ There are very good 'cheat sheets' available for Matplotlib [here](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) and [here](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). + +## Build a line plot about bird wingspan values + +Open the `notebook.ipynb` file at the root of this lesson folder and add a cell. + +> Note: the data is stored in the root of this repo in the `/data` folder. + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +This data is a mix of text and numbers: + + +| | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Snow goose | Anser caerulescens | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Let's start by plotting some of the numeric data using a basic line plot. Suppose you wanted a view of the maximum wingspan for these interesting birds. + +```python +wingspan = birds['MaxWingspan'] +wingspan.plot() +``` +![Max Wingspan](images/max-wingspan.png) + +What do you notice immediately? There seems to be at least one outlier - that's quite a wingspan! A 2300 centimeter wingspan equals 23 meters - are there Pterodactyls roaming Minnesota? Let's investigate. + +While you could do a quick sort in Excel to find those outliers, which are probably typos, continue the visualization process by working from within the plot. + +Add labels to the x-axis to show what kind of birds are in question: + +``` +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.xticks(rotation=45) +x = birds['Name'] +y = birds['MaxWingspan'] + +plt.plot(x, y) + +plt.show() +``` +![wingspan with labels](images/max-wingspan-labels.png) + +Even with the rotation of the labels set to 45 degrees, there are too many to read. Let's try a different strategy: label only those outliers and set the labels within the chart. You can use a scatter chart to make more room for the labeling: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) + +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + plt.plot(x, y, 'bo') + if birds['MaxWingspan'][i] > 500: + plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) + +plt.show() +``` +What's going on here? You used `tick_params` to hide the bottom labels and then created a loop over your birds dataset. Plotting the chart with small round blue dots by using `bo`, you checked for any bird with a maximum wingspan over 500 and displayed their label next to the dot if so. You offset the labels a little on the y axis (`y * (1 - 0.05)`) and used the bird name as a label. + +What did you discover? + +![outliers](images/labeled-wingspan.png) +## Filter your data + +Both the Bald Eagle and the Prairie Falcon, while probably very large birds, appear to be mislabeled, with an extra `0` added to their maximum wingspan. It's unlikely that you'll meet a Bald Eagle with a 25 meter wingspan, but if so, please let us know! Let's create a new dataframe without those two outliers: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: + plt.plot(x, y, 'bo') +plt.show() +``` + +By filtering out outliers, your data is now more cohesive and understandable. + +![scatterplot of wingspans](images/scatterplot-wingspan.png) + +Now that we have a cleaner dataset at least in terms of wingspan, let's discover more about these birds. + +While line and scatter plots can display information about data values and their distributions, we want to think about the values inherent in this dataset. You could create visualizations to answer the following questions about quantity: + +> How many categories of birds are there, and what are their numbers? +> How many birds are extinct, endangered, rare, or common? +> How many are there of the various genus and orders in Linnaeus's terminology? +## Explore bar charts + +Bar charts are practical when you need to show groupings of data. Let's explore the categories of birds that exist in this dataset to see which is the most common by number. + +In the notebook file, create a basic bar chart + +✅ Note, you can either filter out the two outlier birds we identified in the previous section, edit the typo in their wingspan, or leave them in for these exercises which do not depend on wingspan values. + +If you want to create a bar chart, you can select the data you want to focus on. Bar charts can be created from raw data: + +```python +birds.plot(x='Category', + kind='bar', + stacked=True, + title='Birds of Minnesota') + +``` +![full data as a bar chart](images/full-data-bar.png) + +This bar chart, however, is unreadable because there is too much non-grouped data. You need to select only the data that you want to plot, so let's look at the length of birds based on their category. + +Filter your data to include only the bird's category. + +✅ Notice that that you use Pandas to manage the data, and then let Matplotlib do the charting. + +Since there are many categories, you can display this chart vertically and tweak its height to account for all the data: + +```python +category_count = birds.value_counts(birds['Category'].values, sort=True) +plt.rcParams['figure.figsize'] = [6, 12] +category_count.plot.barh() +``` +![category and length](images/category-counts.png) + +This bar chart shows a good view of the number of birds in each category. In a blink of an eye, you see that the largest number of birds in this region are in the Ducks/Geese/Waterfowl category. Minnesota is the 'land of 10,000 lakes' so this isn't surprising! + +✅ Try some other counts on this dataset. Does anything surprise you? + +## Comparing data + +You can try different comparisons of grouped data by creating new axes. Try a comparison of the MaxLength of a bird, based on its category: + +```python +maxlength = birds['MaxLength'] +plt.barh(y=birds['Category'], width=maxlength) +plt.rcParams['figure.figsize'] = [6, 12] +plt.show() +``` +![comparing data](images/category-length.png) + +Nothing is surprising here: hummingbirds have the least MaxLength compared to Pelicans or Geese. It's good when data makes logical sense! + +You can create more interesting visualizations of bar charts by superimposing data. Let's superimpose Minimum and Maximum Length on a given bird category: + +```python +minLength = birds['MinLength'] +maxLength = birds['MaxLength'] +category = birds['Category'] + +plt.barh(category, maxLength) +plt.barh(category, minLength) + +plt.show() +``` +In this plot, you can see the range per bird category of the Minimum Length and Maximum length. You can safely say that, given this data, the bigger the bird, the larger its length range. Fascinating! + +![superimposed values](images/superimposed.png) + +## 🚀 Challenge + +This bird dataset offers a wealth of information about different types of birds within a particular ecosystem. Search around the internet and see if you can find other bird-oriented datasets. Practice building charts and graphs around these birds to discover facts you didn't realize. +## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/17) + +## Review & Self Study + +This first lesson has given you some information about how to use Matplotlib to visualize quantities. Do some research around other ways to work with datasets for visualization. [Plotly](https://github.com/plotly/plotly.py) is one that we won't cover in these lessons, so take a look at what it can offer. +## Assignment + +[Lines, Scatters, and Bars](assignment.md) From ab2ba5382cbeae62084ee6bfff1d6747f6a25fb6 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Sat, 9 Oct 2021 21:16:03 -0700 Subject: [PATCH 045/254] Delete Data.ipynb --- 2-Working-With-Data/R/Data.ipynb | 927 ------------------------------- 1 file changed, 927 deletions(-) delete mode 100644 2-Working-With-Data/R/Data.ipynb diff --git a/2-Working-With-Data/R/Data.ipynb b/2-Working-With-Data/R/Data.ipynb deleted file mode 100644 index 901a51c9..00000000 --- a/2-Working-With-Data/R/Data.ipynb +++ /dev/null @@ -1,927 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 73, - "id": "f356bf26", - "metadata": {}, - "outputs": [], - "source": [ - "library(dplyr)\n", - "library(tidyverse)" - ] - }, - { - "cell_type": "markdown", - "id": "717d5825", - "metadata": {}, - "source": [ - "## Series" - ] - }, - { - "cell_type": "markdown", - "id": "03ac7b71", - "metadata": {}, - "source": [ - "a<- 1:9" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "f4149d4e", - "metadata": {}, - "outputs": [], - "source": [ - "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "5633dd5e", - "metadata": {}, - "outputs": [], - "source": [ - "a1 = length(a)\n", - "b1 = length(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "834b824d", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "f25cedc2", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "markdown", - "id": "aea16930", - "metadata": {}, - "source": [ - "## DataFrame" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "id": "0793b3b7", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 141, - "id": "bde43cd9", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "5db4a116", - "metadata": {}, - "outputs": [ - { - "ename": "ERROR", - "evalue": "Error in bar.plot(data): could not find function \"bar.plot\"\n", - "output_type": "error", - "traceback": [ - "Error in bar.plot(data): could not find function \"bar.plot\"\nTraceback:\n" - ] - } - ], - "source": [ - "bar.plot(data)" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "e5e6313c", - "metadata": {}, - "outputs": [], - "source": [ - "df <- data.frame(a,b)" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "8358faeb", - "metadata": {}, - "outputs": [], - "source": [ - "df = df %>% \n", - " rename(\n", - " A = a,\n", - " B = b\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "id": "c439f0f3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" - ], - "text/latex": [ - "A data.frame: 9 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like \\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\t5 & 5 & Python\\\\\n", - "\t6 & 6 & and \\\\\n", - "\t7 & 7 & Pandas\\\\\n", - "\t8 & 8 & very \\\\\n", - "\t9 & 9 & much \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "| 5 | 5 | Python |\n", - "| 6 | 6 | and |\n", - "| 7 | 7 | Pandas |\n", - "| 8 | 8 | very |\n", - "| 9 | 9 | much |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like \n", - "3 3 to \n", - "4 4 use \n", - "5 5 Python\n", - "6 6 and \n", - "7 7 Pandas\n", - "8 8 very \n", - "9 9 much " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "26c75894", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Column A (series):\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" - ], - "text/latex": [ - "A data.frame: 9 × 1\n", - "\\begin{tabular}{r|l}\n", - " & A\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t1 & 1\\\\\n", - "\t2 & 2\\\\\n", - "\t3 & 3\\\\\n", - "\t4 & 4\\\\\n", - "\t5 & 5\\\\\n", - "\t6 & 6\\\\\n", - "\t7 & 7\\\\\n", - "\t8 & 8\\\\\n", - "\t9 & 9\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 1\n", - "\n", - "| | A <int> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 5 | 5 |\n", - "| 6 | 6 |\n", - "| 7 | 7 |\n", - "| 8 | 8 |\n", - "| 9 | 9 |\n", - "\n" - ], - "text/plain": [ - " A\n", - "1 1\n", - "2 2\n", - "3 3\n", - "4 4\n", - "5 5\n", - "6 6\n", - "7 7\n", - "8 8\n", - "9 9" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cat(\"Column A (series):\\n\")\n", - "select(df,'A')" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "7f6885ba", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" - ], - "text/latex": [ - "A data.frame: 4 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like\\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 4 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like\n", - "3 3 to \n", - "4 4 use " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A<5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "id": "0018c9fc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\n", - "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" - ], - "text/latex": [ - "A data.frame: 1 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t6 & 6 & and\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 1 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 6 | 6 | and |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "6 6 and" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A>5 & df$A<7,]" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "079a3b19", - "metadata": {}, - "outputs": [], - "source": [ - "df$DivA <- df$A - mean(df$A)" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "64dac80e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" - ], - "text/latex": [ - "A data.frame: 9 × 3\n", - "\\begin{tabular}{r|lll}\n", - " & A & B & DivA\\\\\n", - " & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4\\\\\n", - "\t2 & 2 & like & -3\\\\\n", - "\t3 & 3 & to & -2\\\\\n", - "\t4 & 4 & use & -1\\\\\n", - "\t5 & 5 & Python & 0\\\\\n", - "\t6 & 6 & and & 1\\\\\n", - "\t7 & 7 & Pandas & 2\\\\\n", - "\t8 & 8 & very & 3\\\\\n", - "\t9 & 9 & much & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 3\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> |\n", - "|---|---|---|---|\n", - "| 1 | 1 | I | -4 |\n", - "| 2 | 2 | like | -3 |\n", - "| 3 | 3 | to | -2 |\n", - "| 4 | 4 | use | -1 |\n", - "| 5 | 5 | Python | 0 |\n", - "| 6 | 6 | and | 1 |\n", - "| 7 | 7 | Pandas | 2 |\n", - "| 8 | 8 | very | 3 |\n", - "| 9 | 9 | much | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA\n", - "1 1 I -4 \n", - "2 2 like -3 \n", - "3 3 to -2 \n", - "4 4 use -1 \n", - "5 5 Python 0 \n", - "6 6 and 1 \n", - "7 7 Pandas 2 \n", - "8 8 very 3 \n", - "9 9 much 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "c2fdab9c", - "metadata": {}, - "outputs": [], - "source": [ - "df$LenB <- str_length(df$B)" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "c523989b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" - ], - "text/latex": [ - "A data.frame: 9 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\t7 & 7 & Pandas & 2 & 6\\\\\n", - "\t8 & 8 & very & 3 & 4\\\\\n", - "\t9 & 9 & much & 4 & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "| 7 | 7 | Pandas | 2 | 6 |\n", - "| 8 | 8 | very | 3 | 4 |\n", - "| 9 | 9 | much | 4 | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 \n", - "7 7 Pandas 2 6 \n", - "8 8 very 3 4 \n", - "9 9 much 4 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "c095b403", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" - ], - "text/latex": [ - "A data.frame: 5 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 5 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[0:5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "id": "f6f37d10", - "metadata": {}, - "outputs": [], - "source": [ - " df1 = group_by(df,LenB)" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "c1908f62", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A tibble: 5 × 2
LenBmymean
<int><dbl>
11
22
33
44
66
\n" - ], - "text/latex": [ - "A tibble: 5 × 2\n", - "\\begin{tabular}{ll}\n", - " LenB & mymean\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t 1 & 1\\\\\n", - "\t 2 & 2\\\\\n", - "\t 3 & 3\\\\\n", - "\t 4 & 4\\\\\n", - "\t 6 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A tibble: 5 × 2\n", - "\n", - "| LenB <int> | mymean <dbl> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 6 | 6 |\n", - "\n" - ], - "text/plain": [ - " LenB mymean\n", - "1 1 1 \n", - "2 2 2 \n", - "3 3 3 \n", - "4 4 4 \n", - "5 6 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "summarise(df1,mymean =mean(LenB))" - ] - }, - { - "cell_type": "markdown", - "id": "f927a466", - "metadata": {}, - "source": [ - "## Printing and Plotting" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6e20f11d", - "metadata": {}, - "outputs": [], - "source": [ - "dataset = read.csv(\"file name\")" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "6bb554db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" - ], - "text/latex": [ - "A data.frame: 6 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 6 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "head(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "14fa8a58", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\n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\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "0db236b1", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\n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\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "barplot(df$A, ylab = 'A',xlab = 'no')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "37d719c4", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "4.1.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 4b71d144aee60cc8b25cec3dcf55dc432dc39dca Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Sat, 9 Oct 2021 21:16:52 -0700 Subject: [PATCH 046/254] Create pandas.ipynb --- 2-Working-With-Data/R/pandas.ipynb | 978 +++++++++++++++++++++++++++++ 1 file changed, 978 insertions(+) create mode 100644 2-Working-With-Data/R/pandas.ipynb diff --git a/2-Working-With-Data/R/pandas.ipynb b/2-Working-With-Data/R/pandas.ipynb new file mode 100644 index 00000000..cb928833 --- /dev/null +++ b/2-Working-With-Data/R/pandas.ipynb @@ -0,0 +1,978 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "304296e3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Attaching package: 'dplyr'\n", + "\n", + "\n", + "The following objects are masked from 'package:stats':\n", + "\n", + " filter, lag\n", + "\n", + "\n", + "The following objects are masked from 'package:base':\n", + "\n", + " intersect, setdiff, setequal, union\n", + "\n", + "\n", + "-- \u001b[1mAttaching packages\u001b[22m ------------------------------------------------------------------------------- tidyverse 1.3.1 --\n", + "\n", + "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.5 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n", + "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.1.5 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n", + "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.4 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 0.5.1\n", + "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 2.0.2 \n", + "\n", + "-- \u001b[1mConflicts\u001b[22m ---------------------------------------------------------------------------------- tidyverse_conflicts() --\n", + "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n", + "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n", + "\n" + ] + } + ], + "source": [ + "library(dplyr)\n", + "library(tidyverse)" + ] + }, + { + "cell_type": "markdown", + "id": "d786e051", + "metadata": {}, + "source": [ + "## Series" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f659f553", + "metadata": {}, + "outputs": [], + "source": [ + "a<- 1:9" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9acc193d", + "metadata": {}, + "outputs": [], + "source": [ + "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f577ec14", + "metadata": {}, + "outputs": [], + "source": [ + "a1 = length(a)\n", + "b1 = length(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "31e069a0", + "metadata": {}, + "outputs": [], + "source": [ + "a = data.frame(a,row.names = c(1:a1))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29ce166e", + "metadata": {}, + "outputs": [], + "source": [ + "b = data.frame(b,row.names = c(1:b1))" + ] + }, + { + "cell_type": "markdown", + "id": "945feffd", + "metadata": {}, + "source": [ + "## DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "88a435ec", + "metadata": {}, + "outputs": [], + "source": [ + "a = data.frame(a,row.names = c(1:a1))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c4e2a6c1", + "metadata": {}, + "outputs": [], + "source": [ + "b = data.frame(b,row.names = c(1:b1))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2bb5177c", + "metadata": {}, + "outputs": [], + "source": [ + "df<- data.frame(a,b)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "8f45d3a5", + "metadata": {}, + "outputs": [], + "source": [ + "df = \n", + " rename(df,\n", + " A = a,\n", + " B = b,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0efbf2d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" + ], + "text/latex": [ + "A data.frame: 9 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like \\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\t5 & 5 & Python\\\\\n", + "\t6 & 6 & and \\\\\n", + "\t7 & 7 & Pandas\\\\\n", + "\t8 & 8 & very \\\\\n", + "\t9 & 9 & much \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "| 5 | 5 | Python |\n", + "| 6 | 6 | and |\n", + "| 7 | 7 | Pandas |\n", + "| 8 | 8 | very |\n", + "| 9 | 9 | much |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like \n", + "3 3 to \n", + "4 4 use \n", + "5 5 Python\n", + "6 6 and \n", + "7 7 Pandas\n", + "8 8 very \n", + "9 9 much " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "88b51fdc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column A (series):\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" + ], + "text/latex": [ + "A data.frame: 9 × 1\n", + "\\begin{tabular}{r|l}\n", + " & A\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t1 & 1\\\\\n", + "\t2 & 2\\\\\n", + "\t3 & 3\\\\\n", + "\t4 & 4\\\\\n", + "\t5 & 5\\\\\n", + "\t6 & 6\\\\\n", + "\t7 & 7\\\\\n", + "\t8 & 8\\\\\n", + "\t9 & 9\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 1\n", + "\n", + "| | A <int> |\n", + "|---|---|\n", + "| 1 | 1 |\n", + "| 2 | 2 |\n", + "| 3 | 3 |\n", + "| 4 | 4 |\n", + "| 5 | 5 |\n", + "| 6 | 6 |\n", + "| 7 | 7 |\n", + "| 8 | 8 |\n", + "| 9 | 9 |\n", + "\n" + ], + "text/plain": [ + " A\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 6\n", + "7 7\n", + "8 8\n", + "9 9" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cat(\"Column A (series):\\n\")\n", + "select(df,'A')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "010bcba8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" + ], + "text/latex": [ + "A data.frame: 4 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like\\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 4 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like\n", + "3 3 to \n", + "4 4 use " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A<5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "082277db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\n", + "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" + ], + "text/latex": [ + "A data.frame: 1 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t6 & 6 & and\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 1 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 6 | 6 | and |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "6 6 and" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A>5 & df$A<7,]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "0bbd19f8", + "metadata": {}, + "outputs": [], + "source": [ + "df$DivA <- df$A - mean(df$A)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f36d96af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" + ], + "text/latex": [ + "A data.frame: 9 × 3\n", + "\\begin{tabular}{r|lll}\n", + " & A & B & DivA\\\\\n", + " & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4\\\\\n", + "\t2 & 2 & like & -3\\\\\n", + "\t3 & 3 & to & -2\\\\\n", + "\t4 & 4 & use & -1\\\\\n", + "\t5 & 5 & Python & 0\\\\\n", + "\t6 & 6 & and & 1\\\\\n", + "\t7 & 7 & Pandas & 2\\\\\n", + "\t8 & 8 & very & 3\\\\\n", + "\t9 & 9 & much & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 3\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> |\n", + "|---|---|---|---|\n", + "| 1 | 1 | I | -4 |\n", + "| 2 | 2 | like | -3 |\n", + "| 3 | 3 | to | -2 |\n", + "| 4 | 4 | use | -1 |\n", + "| 5 | 5 | Python | 0 |\n", + "| 6 | 6 | and | 1 |\n", + "| 7 | 7 | Pandas | 2 |\n", + "| 8 | 8 | very | 3 |\n", + "| 9 | 9 | much | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA\n", + "1 1 I -4 \n", + "2 2 like -3 \n", + "3 3 to -2 \n", + "4 4 use -1 \n", + "5 5 Python 0 \n", + "6 6 and 1 \n", + "7 7 Pandas 2 \n", + "8 8 very 3 \n", + "9 9 much 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c67f2bd0", + "metadata": {}, + "outputs": [], + "source": [ + "df$LenB <- str_length(df$B)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "cef214b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" + ], + "text/latex": [ + "A data.frame: 9 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\t7 & 7 & Pandas & 2 & 6\\\\\n", + "\t8 & 8 & very & 3 & 4\\\\\n", + "\t9 & 9 & much & 4 & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "| 7 | 7 | Pandas | 2 | 6 |\n", + "| 8 | 8 | very | 3 | 4 |\n", + "| 9 | 9 | much | 4 | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 \n", + "7 7 Pandas 2 6 \n", + "8 8 very 3 4 \n", + "9 9 much 4 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "59fe5316", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" + ], + "text/latex": [ + "A data.frame: 5 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 5 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[0:5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "f944a949", + "metadata": {}, + "outputs": [], + "source": [ + " df1 = group_by(df,LenB)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "8ffd39cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
LenBmymean
<int><dbl>
11
22
33
44
66
\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " LenB & mymean\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t 1 & 1\\\\\n", + "\t 2 & 2\\\\\n", + "\t 3 & 3\\\\\n", + "\t 4 & 4\\\\\n", + "\t 6 & 6\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| LenB <int> | mymean <dbl> |\n", + "|---|---|\n", + "| 1 | 1 |\n", + "| 2 | 2 |\n", + "| 3 | 3 |\n", + "| 4 | 4 |\n", + "| 6 | 6 |\n", + "\n" + ], + "text/plain": [ + " LenB mymean\n", + "1 1 1 \n", + "2 2 2 \n", + "3 3 3 \n", + "4 4 4 \n", + "5 6 6 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "summarise(df1,mymean =mean(LenB))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b859950", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "5d3f0287", + "metadata": {}, + "source": [ + "## Printing and Plotting" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "69946dc7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning message in file(file, \"rt\"):\n", + "\"cannot open file 'file name': No such file or directory\"\n" + ] + }, + { + "ename": "ERROR", + "evalue": "Error in file(file, \"rt\"): cannot open the connection\n", + "output_type": "error", + "traceback": [ + "Error in file(file, \"rt\"): cannot open the connection\nTraceback:\n", + "1. read.csv(\"file name\")", + "2. read.table(file = file, header = header, sep = sep, quote = quote, \n . dec = dec, fill = fill, comment.char = comment.char, ...)", + "3. file(file, \"rt\")" + ] + } + ], + "source": [ + "dataset = read.csv(\"file name\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "009af652", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" + ], + "text/latex": [ + "A data.frame: 6 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 6 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "head(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "515c95b2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\n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\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "41b872c9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\n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\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "barplot(df$A, ylab = 'A',xlab = 'no')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11001454", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "670db495", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 02921e0c97393b1d8004cc3b21afbf52d376da7b Mon Sep 17 00:00:00 2001 From: Kaushal Joshi <53049546+joshi-kaushal@users.noreply.github.com> Date: Sun, 10 Oct 2021 22:30:49 +0530 Subject: [PATCH 047/254] Updared README.hi.md - 2 --- 1-Introduction/03-defining-data/translations/README.hi.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/1-Introduction/03-defining-data/translations/README.hi.md b/1-Introduction/03-defining-data/translations/README.hi.md index ef6b2932..49c16833 100644 --- a/1-Introduction/03-defining-data/translations/README.hi.md +++ b/1-Introduction/03-defining-data/translations/README.hi.md @@ -1,5 +1,5 @@ # डेटा का अवलोकन -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs।dev) ](../../sketchnotes/03-DefiningData.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs।dev) ](../../../sketchnotes/03-DefiningData.png)| |:---:| |Defining Data - _Sketchnote by [@nitya](https://twitter।com/nitya)_ | @@ -16,3 +16,7 @@ ### परिमाणात्मक डेटा परिमाणात्मक डेटा मतलब डेटासेट मे उपलब्ध होने वाला ऐसा संख्यात्मक डेटा जिसका इस्तमाल विश्लेषण,मापन और गणितीय चीजोंकेलिए हो सकता है। परिमाणात्मक डेटा के यह कुछ उदाहरण है: देश की जनसंख्या, इंसान की ऊंचाई या कंपनी की तिमाही कमाई। थोड़े अधिक विश्लेषण के बाद परिणामात्मक डेटा से मौसम के अनुसार वायु गुणवत्ता सूचकांक(Air Quality Index) के बदलाव पता करना या फिर किसी सामान्य कार्यदिवस पर भीड़भाड़ वाले घंटे के ट्रैफिक की संभावना का अनुमान लगना मुमकिन है + +### गुणात्मक डेटा +गुणात्मक डेटा, जिसे वर्गीकृत देता भी कहा जाता है, यह एक डेटा का ऐसा प्रकार है जिसे परिमाणात्मक डेटा की तरह वस्तुनिष्ठ तरहसे मापा नहीं जा सकता। यह आम तौर पर अलग अलग प्रकार का आत्मनिष्ठ डेटा होता है जिस से किसी उत्पादन या प्रक्रिया की गुणवत्ता। कभी कभार गुणात्मक डेटा सांखिक स्वरुपमैं होके भी गणितीय कारणों के लिए इस्तमल नहीं किया जा सकता, जैसे की फोन नंबर या समय। +गुणात्मक डेटा के यह कुछ उदाहरण हो सकते है: विडिओकी टिप्पणियाँ, आपके करीबी दोस्त के गाड़ी के पसंदिता रंग का नमूना बनाना। गुणात्मक डेटा का इस्तमाल करके ग्राहकोंको कोनसा उत्पादन सबसे ज्यादा पसंद आ रहा है या फिर नौकरी आवेदन के रिज्यूमे मैं सबसे ज्यादा इस्तमाल होने वाले शब्द ढूंढ़ना। From 4ff6ee6b2ece8e2bd337d6b2020256b5ee8ea918 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sun, 10 Oct 2021 15:15:00 -0300 Subject: [PATCH 048/254] Add translations up to 'filter your data' section --- .../translations/README.pt-br.md | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md index afa601e3..e777ac07 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md @@ -11,23 +11,24 @@ Nessa aula você irá explorar como usar uma das muitas bibliotecas disponíveis Uma biblioteca excelente para criar gráficos simples e sofisticados de diversos tipos é o [Matplotlib](https://matplotlib.org/stable/index.html). Em geral, o processo de plotar dados com essas bibliotecas inclui identificar as partes do seu dataframe que você quer focar, utilizando quaisquer transformações necessárias nestes dados, atribuindo seus valores dos eixos x e y, decidindo qual tipo de gráfico mostrar, e então mostrando o gráfico. O Matplotlib oferece uma grande variedade de visualizações, mas, nesta aula, iremos focar nos mais apropriados para visualizar quantidade: gráfico de linha, gráfico de dispersão e gráfico de barra. -> ✅ Use the best chart to suit your data's structure and the story you want to tell. -> - To analyze trends over time: line -> - To compare values: bar, column, pie, scatterplot -> - To show how parts relate to a whole: pie -> - To show distribution of data: scatterplot, bar -> - To show trends: line, column -> - To show relationships between values: line, scatterplot, bubble +> ✅ Use o melhor gráfico para se adaptar a estrutura dos dados e a história que você quer contar. +> - Para analisar tendências ao longo do tempo: linha +> - Para comparar valores: barra, coluna, pizza, dispersão +> - Para mostrar como as partes se relacionam com o todo: pizza +> - Para mostrar a distrivuição dos dados: dispersão, barra +> - Para mostrar tendências: linha, coluna +> - Para mostrar relações entre valores: linha, dispersão, bolha -If you have a dataset and need to discover how much of a given item is included, one of the first tasks you have at hand will be to inspect its values. +Se você tem um dataset e precisa descobrir quanto de um dado item está presente, uma das primeiras coisas que você precisará fazer é examinar seus valores. -✅ There are very good 'cheat sheets' available for Matplotlib [here](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) and [here](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). -## Build a line plot about bird wingspan values +✅ Existem dicas ('cheat sheets') muito boas disponíveis para o Matplotlib [aqui](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) e [aqui](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). -Open the `notebook.ipynb` file at the root of this lesson folder and add a cell. +## Construir um gráfico de linhas sobre os valores de envergadura de pássaros -> Note: the data is stored in the root of this repo in the `/data` folder. +Abra o arquivo `notebook.ipynb` na raiz da pasta dessa aula e adicione uma célula. + +> Nota: os dados estão armazenados na raiz deste repositório na pasta `/data`. ```python import pandas as pd @@ -35,7 +36,7 @@ import matplotlib.pyplot as plt birds = pd.read_csv('../../data/birds.csv') birds.head() ``` -This data is a mix of text and numbers: +Esses dados são uma mistura de texto e números: | | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan | @@ -46,19 +47,19 @@ This data is a mix of text and numbers: | 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | | 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | -Let's start by plotting some of the numeric data using a basic line plot. Suppose you wanted a view of the maximum wingspan for these interesting birds. +Vamos começar plotando alguns dados numéricos com um simples gráfico de linhas. Suponha que você quer uma visualização da envergadura máxima desses pássaros interessantes. ```python wingspan = birds['MaxWingspan'] wingspan.plot() ``` -![Max Wingspan](images/max-wingspan.png) +![Envergadura máxima](images/max-wingspan.png) -What do you notice immediately? There seems to be at least one outlier - that's quite a wingspan! A 2300 centimeter wingspan equals 23 meters - are there Pterodactyls roaming Minnesota? Let's investigate. +O que é possível perceber imediatamente? Aparentemente existe pelo menos um outlier - e que envergadura! Uma envergadura de 2300 centímetros equivale a 23 metros - têm pterodáctilos voando em Minnesota? Vamos investigar. -While you could do a quick sort in Excel to find those outliers, which are probably typos, continue the visualization process by working from within the plot. +Você poderia fazer uma ordenação rápida no Excel para encontrar esses outliers, que provavelmente são erros de digitação. No entanto, vamos continuar o processo de visualização trabalhando no gráfico. -Add labels to the x-axis to show what kind of birds are in question: +Adicione labels (identificadores) no eixo x para mostrar quais tipos de pássaros estão sendo analisados: ``` plt.title('Max Wingspan in Centimeters') @@ -72,9 +73,9 @@ plt.plot(x, y) plt.show() ``` -![wingspan with labels](images/max-wingspan-labels.png) +![Envergadura com labels (identificadores)](images/max-wingspan-labels.png) -Even with the rotation of the labels set to 45 degrees, there are too many to read. Let's try a different strategy: label only those outliers and set the labels within the chart. You can use a scatter chart to make more room for the labeling: +Mesmo com a rotação das labels em 45 graus, existem muitos para ler. Vamos tentar outra estratégia: identificar somente os outliers e colocar as labels dentro do gráfico. Você pode usarj um gráfico de dispersão para abrir mais espaço para identificação: ```python plt.title('Max Wingspan in Centimeters') @@ -90,12 +91,14 @@ for i in range(len(birds)): plt.show() ``` -What's going on here? You used `tick_params` to hide the bottom labels and then created a loop over your birds dataset. Plotting the chart with small round blue dots by using `bo`, you checked for any bird with a maximum wingspan over 500 and displayed their label next to the dot if so. You offset the labels a little on the y axis (`y * (1 - 0.05)`) and used the bird name as a label. -What did you discover? +O que aconteceu aqui? Você usou `tick_params` para esconder as labels debaixo e entrão criou um loop sobre o dataset dos paśsaros. Depois, plotou o gráfico com pequenos círculos azuis usando `bo` e procurou por pássaros com envergadura maior que 500 e, se sim, exibiu a label ao lado do círculo. Você ajustou as labels no eixo y (`y * (1 - 0.05)`) e usou o nome do pássaro como label. + +O que você descobriu? ![outliers](images/labeled-wingspan.png) -## Filter your data + +## Filtrar seus dados Both the Bald Eagle and the Prairie Falcon, while probably very large birds, appear to be mislabeled, with an extra `0` added to their maximum wingspan. It's unlikely that you'll meet a Bald Eagle with a 25 meter wingspan, but if so, please let us know! Let's create a new dataframe without those two outliers: From 3b8aefd5fb937b705dd6783fc4ae5b2a9905d81f Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sun, 10 Oct 2021 15:18:07 -0300 Subject: [PATCH 049/254] update images path --- .../translations/README.pt-br.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md index e777ac07..9e620a8e 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md @@ -1,6 +1,6 @@ # Visualizando Quantidades -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/09-Visualizing-Quantities.png)| |:---:| | Visualizando quantidades - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | @@ -53,7 +53,7 @@ Vamos começar plotando alguns dados numéricos com um simples gráfico de linha wingspan = birds['MaxWingspan'] wingspan.plot() ``` -![Envergadura máxima](images/max-wingspan.png) +![Envergadura máxima](../images/max-wingspan.png) O que é possível perceber imediatamente? Aparentemente existe pelo menos um outlier - e que envergadura! Uma envergadura de 2300 centímetros equivale a 23 metros - têm pterodáctilos voando em Minnesota? Vamos investigar. @@ -73,7 +73,7 @@ plt.plot(x, y) plt.show() ``` -![Envergadura com labels (identificadores)](images/max-wingspan-labels.png) +![Envergadura com labels (identificadores)](../images/max-wingspan-labels.png) Mesmo com a rotação das labels em 45 graus, existem muitos para ler. Vamos tentar outra estratégia: identificar somente os outliers e colocar as labels dentro do gráfico. Você pode usarj um gráfico de dispersão para abrir mais espaço para identificação: @@ -96,7 +96,7 @@ O que aconteceu aqui? Você usou `tick_params` para esconder as labels debaixo e O que você descobriu? -![outliers](images/labeled-wingspan.png) +![outliers](../images/labeled-wingspan.png) ## Filtrar seus dados @@ -117,7 +117,7 @@ plt.show() By filtering out outliers, your data is now more cohesive and understandable. -![scatterplot of wingspans](images/scatterplot-wingspan.png) +![scatterplot of wingspans](../images/scatterplot-wingspan.png) Now that we have a cleaner dataset at least in terms of wingspan, let's discover more about these birds. @@ -143,7 +143,7 @@ birds.plot(x='Category', title='Birds of Minnesota') ``` -![full data as a bar chart](images/full-data-bar.png) +![full data as a bar chart](../images/full-data-bar.png) This bar chart, however, is unreadable because there is too much non-grouped data. You need to select only the data that you want to plot, so let's look at the length of birds based on their category. @@ -158,7 +158,7 @@ category_count = birds.value_counts(birds['Category'].values, sort=True) plt.rcParams['figure.figsize'] = [6, 12] category_count.plot.barh() ``` -![category and length](images/category-counts.png) +![category and length](../images/category-counts.png) This bar chart shows a good view of the number of birds in each category. In a blink of an eye, you see that the largest number of birds in this region are in the Ducks/Geese/Waterfowl category. Minnesota is the 'land of 10,000 lakes' so this isn't surprising! @@ -174,7 +174,7 @@ plt.barh(y=birds['Category'], width=maxlength) plt.rcParams['figure.figsize'] = [6, 12] plt.show() ``` -![comparing data](images/category-length.png) +![comparing data](../images/category-length.png) Nothing is surprising here: hummingbirds have the least MaxLength compared to Pelicans or Geese. It's good when data makes logical sense! @@ -192,7 +192,7 @@ plt.show() ``` In this plot, you can see the range per bird category of the Minimum Length and Maximum length. You can safely say that, given this data, the bigger the bird, the larger its length range. Fascinating! -![superimposed values](images/superimposed.png) +![superimposed values](../images/superimposed.png) ## 🚀 Challenge From 3d4a7c588acd16954bc1ad2b0214baea1aad453c Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sun, 10 Oct 2021 21:31:03 -0300 Subject: [PATCH 050/254] Fully translated text Fix links afterwards (link to the translated files, after they are created) --- .../translations/README.pt-br.md | 64 ++++++++++--------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md index 9e620a8e..90838098 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md @@ -100,7 +100,7 @@ O que você descobriu? ## Filtrar seus dados -Both the Bald Eagle and the Prairie Falcon, while probably very large birds, appear to be mislabeled, with an extra `0` added to their maximum wingspan. It's unlikely that you'll meet a Bald Eagle with a 25 meter wingspan, but if so, please let us know! Let's create a new dataframe without those two outliers: +Apesar de grandes, tanto a Bald Eagle e o Prairie Falcon parecem ter valores errados, com um `0` a mais na envergadura máxima. É imporvável que você encontra uma Bald Eagle com envergadura de 25 metros, mas, se encontrar, por favor nos diga! Agora, vamos criar um novo dataframe sem esses dois outliers: ```python plt.title('Max Wingspan in Centimeters') @@ -115,26 +115,27 @@ for i in range(len(birds)): plt.show() ``` -By filtering out outliers, your data is now more cohesive and understandable. +Ao remover esses outliers, seus dados ficaram mais coesos e compreensíveis. -![scatterplot of wingspans](../images/scatterplot-wingspan.png) +![Dispersão das envergaduras](../images/scatterplot-wingspan.png) -Now that we have a cleaner dataset at least in terms of wingspan, let's discover more about these birds. +Agora que temos um dataset mais limpo ao menos em termos de envergadura, vamos aprender mais sobre esses pássaros -While line and scatter plots can display information about data values and their distributions, we want to think about the values inherent in this dataset. You could create visualizations to answer the following questions about quantity: +Enquanto gráficos de linha e dispersão conseguem mostrar informações sobre valores e suas distribuições, nós queremos pensar sobre os valores intrínsecos a esse dataset. Você poderia criar visualizações para responder as seguintes perguntas sobre quantidade: -> How many categories of birds are there, and what are their numbers? -> How many birds are extinct, endangered, rare, or common? -> How many are there of the various genus and orders in Linnaeus's terminology? -## Explore bar charts +> Quantas categorias de pássaros existem, e quais são seus números? +> Quantos pássaros estão extintos, em risco de extinção, raros ou comuns? +> Quantos gêneros e ordens da taxonomia de Lineu (nome científico) existem no dataset? -Bar charts are practical when you need to show groupings of data. Let's explore the categories of birds that exist in this dataset to see which is the most common by number. +## Explorar gráfico de barras -In the notebook file, create a basic bar chart +Gráfico de barras são práticos quando se precisa mostrar agrupamentos de dados. Vamos explorar as categorias de pássaros que existem nesse dataset para obrservar qual é o mais comum em quantidade. -✅ Note, you can either filter out the two outlier birds we identified in the previous section, edit the typo in their wingspan, or leave them in for these exercises which do not depend on wingspan values. +No arquivo notebook, crie um gráfico de barras simples -If you want to create a bar chart, you can select the data you want to focus on. Bar charts can be created from raw data: +✅ Note que, você pode remover os dois pássaros outliers que foram identificados anteriormente, editar o erro de digitação na envergadura ou deixá-los nesses exercícios que não dependem dos valores da envergadura. + +Se você quer criar um gráfico de barras, você pode selecionar os dados que quer focar. Gráfico de barras pode ser criado a partir de dados brutos: ```python birds.plot(x='Category', @@ -145,13 +146,13 @@ birds.plot(x='Category', ``` ![full data as a bar chart](../images/full-data-bar.png) -This bar chart, however, is unreadable because there is too much non-grouped data. You need to select only the data that you want to plot, so let's look at the length of birds based on their category. +No entanto, esse gráfico de barras é ilegível porque existem muitos dados não agrupados. Você precisa selecionar somente os dados que quer plotar, então vamos olhar o comprimento de pássaros com base na sua categoria. -Filter your data to include only the bird's category. +Filtre os dados para incluir somente a categoria do pássaro. -✅ Notice that that you use Pandas to manage the data, and then let Matplotlib do the charting. +✅ Note que você usa o Pandas para lidar com os dados, e deixa a criação de gráficos para o Matplotlib. -Since there are many categories, you can display this chart vertically and tweak its height to account for all the data: +Já que existem muitas categorias, você pode mostrar esse gráfico verticalmente e ajustar sua altura para acomodar todos os dados: ```python category_count = birds.value_counts(birds['Category'].values, sort=True) @@ -160,13 +161,13 @@ category_count.plot.barh() ``` ![category and length](../images/category-counts.png) -This bar chart shows a good view of the number of birds in each category. In a blink of an eye, you see that the largest number of birds in this region are in the Ducks/Geese/Waterfowl category. Minnesota is the 'land of 10,000 lakes' so this isn't surprising! +Esse gráfico de barras mostra uma boa visão do número de pássaros em cada categoria. Em um piscar de olhos, você vê que a maior quantidade de pássaros nessa região pertence à categoria de Ducks/Geese/Waterfowl (patos/gansos/cisnes). Minnesota é 'a terra de 10.000 lagos', então isso não é surpreendente! -✅ Try some other counts on this dataset. Does anything surprise you? +✅ Tente contar outras quantidades nesse dataset. Algo te surpreende? -## Comparing data +## Comparando dados -You can try different comparisons of grouped data by creating new axes. Try a comparison of the MaxLength of a bird, based on its category: +Você pode tentar diferentes comparações de dados agrupados criando novos eixos. Tente comparar o comprimento máximo de um pássaro, baseado na sua categoria: ```python maxlength = birds['MaxLength'] @@ -176,9 +177,9 @@ plt.show() ``` ![comparing data](../images/category-length.png) -Nothing is surprising here: hummingbirds have the least MaxLength compared to Pelicans or Geese. It's good when data makes logical sense! +Nada é surpreendente aqui: hummingbirds (beija-flores) tem o menor comprimento comparados com pelicans (pelicanos) ou geese (gansos). É muito bom quando os dados fazem sentido! -You can create more interesting visualizations of bar charts by superimposing data. Let's superimpose Minimum and Maximum Length on a given bird category: +Você pode criar visualizações mais interessantes de gráficos de barras ao sobrepor dados. Vamos sobrepor o comprimento mínimo e máximo de uma dada categoria de pássaros: ```python minLength = birds['MinLength'] @@ -190,18 +191,21 @@ plt.barh(category, minLength) plt.show() ``` -In this plot, you can see the range per bird category of the Minimum Length and Maximum length. You can safely say that, given this data, the bigger the bird, the larger its length range. Fascinating! + +Nesse gráfico, você pode ver o intervalo de comprimento mínimo e máximo por categoria de pássaro. Você pode seguramente dizer, a partir desses dados, que quanto maior o pássaro, maior seu intervalo de comprimento. Fascinante! ![superimposed values](../images/superimposed.png) -## 🚀 Challenge +## 🚀 Desafio + +Esse dataset de pássaros oferece uma riqueza de informações sobre os diferentes tipos de pássaros de um ecossistema particular. Tente achar na internet outros datasets com dados sobre pássaros. Pratique construir gráficos sobre esses pássaros e tente descobrir fatos que você ainda não havia percebido. + +## [Quiz pós-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/17) -This bird dataset offers a wealth of information about different types of birds within a particular ecosystem. Search around the internet and see if you can find other bird-oriented datasets. Practice building charts and graphs around these birds to discover facts you didn't realize. -## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/17) +## Revisão e autoestudo -## Review & Self Study +Essa primeira aula lhe deu informações sobre como usar o Matplotlib para visualizar quantidades. Procure por outras formas de trabalhar com dataset para visualização. [Plotly](https://github.com/plotly/plotly.py) é uma que não será abordada nas aulas, então dê uma olhada no que ela pode oferecer. -This first lesson has given you some information about how to use Matplotlib to visualize quantities. Do some research around other ways to work with datasets for visualization. [Plotly](https://github.com/plotly/plotly.py) is one that we won't cover in these lessons, so take a look at what it can offer. -## Assignment +## Tarefa [Lines, Scatters, and Bars](assignment.md) From 5eb0795db32f92be987082cd1bfaaf063609790f Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sun, 10 Oct 2021 21:25:51 -0500 Subject: [PATCH 051/254] Revert "feat: Module 1 section 4 - Add file content to be translated" This reverts commit def34abe88b682ab5faa37ebee9cbbc4897633cf. --- .../translations/README.es.md | 263 ------------------ 1 file changed, 263 deletions(-) diff --git a/1-Introduction/04-stats-and-probability/translations/README.es.md b/1-Introduction/04-stats-and-probability/translations/README.es.md index 3a4a4ae9..e69de29b 100644 --- a/1-Introduction/04-stats-and-probability/translations/README.es.md +++ b/1-Introduction/04-stats-and-probability/translations/README.es.md @@ -1,263 +0,0 @@ -# A Brief Introduction to Statistics and Probability - -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/04-Statistics-Probability.png)| -|:---:| -| Statistics and Probability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | - -Statistics and Probability Theory are two highly related areas of Mathematics that are highly relevant to Data Science. It is possible to operate with data without deep knowledge of mathematics, but it is still better to know at least some basic concepts. Here we will present a short introduction that will help you get started. - -[![Intro Video](images/video-prob-and-stats.png)](https://youtu.be/Z5Zy85g4Yjw) - - -## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/6) - -## Probability and Random Variables - -**Probability** is a number between 0 and 1 that expresses how probable an **event** is. It is defined as a number of positive outcomes (that lead to the event), divided by total number of outcomes, given that all outcomes are equally probable. For example, when we roll a dice, the probability that we get an even number is 3/6 = 0.5. - -When we talk about events, we use **random variables**. For example, the random variable that represents a number obtained when rolling a dice would take values from 1 to 6. Set of numbers from 1 to 6 is called **sample space**. We can talk about the probability of a random variable taking a certain value, for example P(X=3)=1/6. - -The random variable in previous example is called **discrete**, because it has a countable sample space, i.e. there are separate values that can be enumerated. There are cases when sample space is a range of real numbers, or the whole set of real numbers. Such variables are called **continuous**. A good example is the time when the bus arrives. - -## Probability Distribution - -In the case of discrete random variables, it is easy to describe the probability of each event by a function P(X). For each value *s* from sample space *S* it will give a number from 0 to 1, such that the sum of all values of P(X=s) for all events would be 1. - -The most well-known discrete distribution is **uniform distribution**, in which there is a sample space of N elements, with equal probability of 1/N for each of them. - -It is more difficult to describe the probability distribution of a continuous variable, with values drawn from some interval [a,b], or the whole set of real numbers ℝ. Consider the case of bus arrival time. In fact, for each exact arrival time $t$, the probability of a bus arriving at exactly that time is 0! - -> Now you know that events with 0 probability happen, and very often! At least each time when the bus arrives! - -We can only talk about the probability of a variable falling in a given interval of values, eg. P(t1≤X<t2). In this case, probability distribution is described by a **probability density function** p(x), such that - -![P(t_1\le X1, x2, ..., xn. We can define **mean** (or **arithmetic average**) value of the sequence in the traditional way as (x1+x2+xn)/n. As we grow the size of the sample (i.e. take the limit with n→∞), we will obtain the mean (also called **expectation**) of the distribution. We will denote expectation by **E**(x). - -> It can be demonstrated that for any discrete distribution with values {x1, x2, ..., xN} and corresponding probabilities p1, p2, ..., pN, the expectation would equal to E(X)=x1p1+x2p2+...+xNpN. - -To identify how far the values are spread, we can compute the variance σ2 = ∑(xi - μ)2/n, where μ is the mean of the sequence. The value σ is called **standard deviation**, and σ2 is called a **variance**. - -## Mode, Median and Quartiles - -Sometimes, mean does not adequately represent the "typical" value for data. For example, when there are a few extreme values that are completely out of range, they can affect the mean. Another good indication is a **median**, a value such that half of data points are lower than it, and another half - higher. - -To help us understand the distribution of data, it is helpful to talk about **quartiles**: - -* First quartile, or Q1, is a value, such that 25% of the data fall below it -* Third quartile, or Q3, is a value that 75% of the data fall below it - -Graphically we can represent relationship between median and quartiles in a diagram called the **box plot**: - - - -Here we also compute **inter-quartile range** IQR=Q3-Q1, and so-called **outliers** - values, that lie outside the boundaries [Q1-1.5*IQR,Q3+1.5*IQR]. - -For finite distribution that contains a small number of possible values, a good "typical" value is the one that appears the most frequently, which is called **mode**. It is often applied to categorical data, such as colors. Consider a situation when we have two groups of people - some that strongly prefer red, and others who prefer blue. If we code colors by numbers, the mean value for a favorite color would be somewhere in the orange-green spectrum, which does not indicate the actual preference on neither group. However, the mode would be either one of the colors, or both colors, if the number of people voting for them is equal (in this case we call the sample **multimodal**). -## Real-world Data - -When we analyze data from real life, they often are not random variables as such, in a sense that we do not perform experiments with unknown result. For example, consider a team of baseball players, and their body data, such as height, weight and age. Those numbers are not exactly random, but we can still apply the same mathematical concepts. For example, a sequence of people's weights can be considered to be a sequence of values drawn from some random variable. Below is the sequence of weights of actual baseball players from [Major League Baseball](http://mlb.mlb.com/index.jsp), taken from [this dataset](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (for your convenience, only first 20 values are shown): - -``` -[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] -``` - -> **Note**: To see the example of working with this dataset, have a look at the [accompanying notebook](notebook.ipynb). There are also a number of challenges throughout this lesson, and you may complete them by adding some code to that notebook. If you are not sure how to operate on data, do not worry - we will come back to working with data using Python at a later time. If you do not know how to run code in Jupyter Notebook, have a look at [this article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). - -Here is the box plot showing mean, median and quartiles for our data: - -![Weight Box Plot](images/weight-boxplot.png) - -Since our data contains information about different player **roles**, we can also do the box plot by role - it will allow us to get the idea on how parameters values differ across roles. This time we will consider height: - -![Box plot by role](images/boxplot_byrole.png) - -This diagram suggests that, on average, height of first basemen is higher that height of second basemen. Later in this lesson we will learn how we can test this hypothesis more formally, and how to demonstrate that our data is statistically significant to show that. - -> When working with real-world data, we assume that all data points are samples drawn from some probability distribution. This assumption allows us to apply machine learning techniques and build working predictive models. - -To see what the distribution of our data is, we can plot a graph called a **histogram**. X-axis would contain a number of different weight intervals (so-called **bins**), and the vertical axis would show the number of times our random variable sample was inside a given interval. - -![Histogram of real world data](images/weight-histogram.png) - -From this histogram you can see that all values are centered around certain mean weight, and the further we go from that weight - the fewer weights of that value are encountered. I.e., it is very improbable that the weight of a baseball player would be very different from the mean weight. Variance of weights show the extent to which weights are likely to differ from the mean. - -> If we take weights of other people, not from the baseball league, the distribution is likely to be different. However, the shape of the distribution will be the same, but mean and variance would change. So, if we train our model on baseball players, it is likely to give wrong results when applied to students of a university, because the underlying distribution is different. -## Normal Distribution - -The distribution of weights that we have seen above is very typical, and many measurements from real world follow the same type of distribution, but with different mean and variance. This distribution is called **normal distribution**, and it plays a very important role in statistics. - -Using normal distribution is a correct way to generate random weights of potential baseball players. Once we know mean weight `mean` and standard deviation `std`, we can generate 1000 weight samples in the following way: -```python -samples = np.random.normal(mean,std,1000) -``` - -If we plot the histogram of the generated samples we will see the picture very similar to the one shown above. And if we increase the number of samples and the number of bins, we can generate a picture of a normal distribution that is more close to ideal: - -![Normal Distribution with mean=0 and std.dev=1](images/normal-histogram.png) - -*Normal Distribution with mean=0 and std.dev=1* - -## Confidence Intervals - -When we talk about weights of baseball players, we assume that there is certain **random variable W** that corresponds to ideal probability distribution of weights of all baseball players (so-called **population**). Our sequence of weights corresponds to a subset of all baseball players that we call **sample**. An interesting question is, can we know the parameters of distribution of W, i.e. mean and variance of the population? - -The easiest answer would be to calculate mean and variance of our sample. However, it could happen that our random sample does not accurately represent complete population. Thus it makes sense to talk about **confidence interval**. - -> **Confidence interval** is the estimation of true mean of the population given our sample, which is accurate is a certain probability (or **level of confidence**). - -Suppose we have a sample X1, ..., Xn from our distribution. Each time we draw a sample from our distribution, we would end up with different mean value μ. Thus μ can be considered to be a random variable. A **confidence interval** with confidence p is a pair of values (Lp,Rp), such that **P**(Lp≤μ≤Rp) = p, i.e. a probability of measured mean value falling within the interval equals to p. - -It does beyond our short intro to discuss in detail how those confidence intervals are calculated. Some more details can be found [on Wikipedia](https://en.wikipedia.org/wiki/Confidence_interval). In short, we define the distribution of computed sample mean relative to the true mean of the population, which is called **student distribution**. - -> **Interesting fact**: Student distribution is named after mathematician William Sealy Gosset, who published his paper under the pseudonym "Student". He worked in the Guinness brewery, and, according to one of the versions, his employer did not want general public to know that they were using statistical tests to determine the quality of raw materials. - -If we want to estimate the mean μ of our population with confidence p, we need to take *(1-p)/2-th percentile* of a Student distribution A, which can either be taken from tables, or computer using some built-in functions of statistical software (eg. Python, R, etc.). Then the interval for μ would be given by X±A*D/√n, where X is the obtained mean of the sample, D is the standard deviation. - -> **Note**: We also omit the discussion of an important concept of [degrees of freedom](https://en.wikipedia.org/wiki/Degrees_of_freedom_(statistics)), which is important in relation to Student distribution. You can refer to more complete books on statistics to understand this concept deeper. - -An example of calculating confidence interval for weights and heights is given in the [accompanying notebooks](notebook.ipynb). - -| p | Weight mean | -|-----|-----------| -| 0.85 | 201.73±0.94 | -| 0.90 | 201.73±1.08 | -| 0.95 | 201.73±1.28 | - -Notice that the higher is the confidence probability, the wider is the confidence interval. - -## Hypothesis Testing - -In our baseball players dataset, there are different player roles, that can be summarized below (look at the [accompanying notebook](notebook.ipynb) to see how this table can be calculated): - -| Role | Height | Weight | Count | -|------|--------|--------|-------| -| Catcher | 72.723684 | 204.328947 | 76 | -| Designated_Hitter | 74.222222 | 220.888889 | 18 | -| First_Baseman | 74.000000 | 213.109091 | 55 | -| Outfielder | 73.010309 | 199.113402 | 194 | -| Relief_Pitcher | 74.374603 | 203.517460 | 315 | -| Second_Baseman | 71.362069 | 184.344828 | 58 | -| Shortstop | 71.903846 | 182.923077 | 52 | -| Starting_Pitcher | 74.719457 | 205.163636 | 221 | -| Third_Baseman | 73.044444 | 200.955556 | 45 | - -We can notice that the mean heights of first basemen is higher than that of second basemen. Thus, we may be tempted to conclude that **first basemen are higher than second basemen**. - -> This statement is called **a hypothesis**, because we do not know whether the fact is actually true or not. - -However, it is not always obvious whether we can make this conclusion. From the discussion above we know that each mean has an associated confidence interval, and thus this difference can just be a statistical error. We need some more formal way to test our hypothesis. - -Let's compute confidence intervals separately for heights of first and second basemen: - -| Confidence | First Basemen | Second Basemen | -|------------|---------------|----------------| -| 0.85 | 73.62..74.38 | 71.04..71.69 | -| 0.90 | 73.56..74.44 | 70.99..71.73 | -| 0.95 | 73.47..74.53 | 70.92..71.81 | - -We can see that under no confidence the intervals overlap. That proves our hypothesis that first basemen are higher than second basemen. - -More formally, the problem we are solving is to see if **two probability distributions are the same**, or at least have the same parameters. Depending on the distribution, we need to use different tests for that. If we know that our distributions are normal, we can apply **[Student t-test](https://en.wikipedia.org/wiki/Student%27s_t-test)**. - -In Student t-test, we compute so-called **t-value**, which indicates the difference between means, taking into account the variance. It is demonstrated that t-value follows **student distribution**, which allows us to get the threshold value for a given confidence level **p** (this can be computed, or looked up in the numerical tables). We then compare t-value to this threshold to approve or reject the hypothesis. - -In Python, we can use the **SciPy** package, which includes `ttest_ind` function (in addition to many other useful statistical functions!). It computes the t-value for us, and also does the reverse lookup of confidence p-value, so that we can just look at the confidence to draw the conclusion. - -For example, our comparison between heights of first and second basemen give us the following results: -```python -from scipy.stats import ttest_ind - -tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Designated_Hitter',['Height']],equal_var=False) -print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}") -``` -``` -T-value = 7.65 -P-value: 9.137321189738925e-12 -``` -In our case, p-value is very low, meaning that there is strong evidence supporting that first basemen are taller. - -There are also different other types of hypothesis that we might want to test, for example: -* To prove that a given sample follows some distribution. In our case we have assumed that heights are normally distributed, but that needs formal statistical verification. -* To prove that a mean value of a sample corresponds to some predefined value -* To compare means of a number of samples (eg. what is the difference in happiness levels among different age groups) - -## Law of Large Numbers and Central Limit Theorem - -One of the reasons why normal distribution is so important is so-called **central limit theorem**. Suppose we have a large sample of independent N values X1, ..., XN, sampled from any distribution with mean μ and variance σ2. Then, for sufficiently large N (in other words, when N→∞), the mean ΣiXi would be normally distributed, with mean μ and variance σ2/N. - -> Another way to interpret the central limit theorem is to say that regardless of distribution, when you compute the mean of a sum of any random variable values you end up with normal distribution. - -From the central limit theorem it also follows that, when N→∞, the probability of the sample mean to be equal to μ becomes 1. This is known as **the law of large numbers**. - -## Covariance and Correlation - -One of the things Data Science does is finding relations between data. We say that two sequences **correlate** when they exhibit the similar behavior at the same time, i.e. they either rise/fall simultaneously, or one sequence rises when another one falls and vice versa. In other words, there seems to be some relation between two sequences. - -> Correlation does not necessarily indicate causal relationship between two sequences; sometimes both variables can depend on some external cause, or it can be purely by chance the two sequences correlate. However, strong mathematical correlation is a good indication that two variables are somehow connected. - - Mathematically, the main concept that shows the relation between two random variables is **covariance**, that is computed like this: Cov(X,Y) = **E**\[(X-**E**(X))(Y-**E**(Y))\]. We compute the deviation of both variables from their mean values, and then product of those deviations. If both variables deviate together, the product would always be a positive value, that would add up to positive covariance. If both variables deviate out-of-sync (i.e. one falls below average when another one rises above average), we will always get negative numbers, that will add up to negative covariance. If the deviations are not dependent, they will add up to roughly zero. - -The absolute value of covariance does not tell us much on how large the correlation is, because it depends on the magnitude of actual values. To normalize it, we can divide covariance by standard deviation of both variables, to get **correlation**. The good thing is that correlation is always in the range of [-1,1], where 1 indicates strong positive correlation between values, -1 - strong negative correlation, and 0 - no correlation at all (variables are independent). - -**Example**: We can compute correlation between weights and heights of baseball players from the dataset mentioned above: -```python -print(np.corrcoef(weights,heights)) -``` -As a result, we get **correlation matrix** like this one: -``` -array([[1. , 0.52959196], - [0.52959196, 1. ]]) -``` - -> Correlation matrix C can be computed for any number of input sequences S1, ..., Sn. The value of Cij is the correlation between Si and Sj, and diagonal elements are always 1 (which is also self-correlation of Si). - -In our case, the value 0.53 indicates that there is some correlation between weight and height of a person. We can also make the scatter plot of one value against the other to see the relationship visually: - -![Relationship between weight and height](images/weight-height-relationship.png) - -> More examples of correlation and covariance can be found in [accompanying notebook](notebook.ipynb). - -## Conclusion - -In this section, we have learnt: - -* basic statistical properties of data, such as mean, variance, mode and quartiles -* different distributions of random variables, including normal distribution -* how to find correlation between different properties -* how to use sound apparatus of math and statistics in order to prove some hypotheses, -* how to compute confidence intervals for random variable given data sample - -While this is definitely not exhaustive list of topics that exist within probability and statistics, it should be enough to give you a good start into this course. - -## 🚀 Challenge - -Use the sample code in the notebook to test other hypothesis that: -1. First basemen and older that second basemen -2. First basemen and taller than third basemen -3. Shortstops are taller than second basemen - -## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/7) - -## Review & Self Study - -Probability and statistics is such a broad topic that it deserves its own course. If you are interested to go deeper into theory, you may want to continue reading some of the following books: - -1. [Carlos Fernanderz-Granda](https://cims.nyu.edu/~cfgranda/) from New York University has great lecture notes [Probability and Statistics for Data Science](https://cims.nyu.edu/~cfgranda/pages/stuff/probability_stats_for_DS.pdf) (available online) -1. [Peter and Andrew Bruce. Practical Statistics for Data Scientists.](https://www.oreilly.com/library/view/practical-statistics-for/9781491952955/) [[sample code in R](https://github.com/andrewgbruce/statistics-for-data-scientists)]. -1. [James D. Miller. Statistics for Data Science](https://www.packtpub.com/product/statistics-for-data-science/9781788290678) [[sample code in R](https://github.com/PacktPublishing/Statistics-for-Data-Science)] - -## Assignment - -[Small Diabetes Study](assignment.md) - -## Credits - -This lesson has been authored with ♥️ by [Dmitry Soshnikov](http://soshnikov.com) From 1808d332d98e6090323738eba65956a2f48dbe7d Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sun, 10 Oct 2021 21:31:50 -0500 Subject: [PATCH 052/254] fix: (translation): Revert translation on module 1 * revert translations for sections 1 & 2 --- .../translations/README.es.md | 175 ------------ .../02-ethics/translations/README.es.md | 263 ------------------ 2 files changed, 438 deletions(-) diff --git a/1-Introduction/01-defining-data-science/translations/README.es.md b/1-Introduction/01-defining-data-science/translations/README.es.md index 20011f7c..e69de29b 100644 --- a/1-Introduction/01-defining-data-science/translations/README.es.md +++ b/1-Introduction/01-defining-data-science/translations/README.es.md @@ -1,175 +0,0 @@ -# Definiendo la Ciencia de Datos - -|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png)| -|:---:| -|Definiendo la Ciencia de Datos - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | - ---- - -[![Video definiendo la Ciencia de Datos](images/video-def-ds.png)](https://youtu.be/pqqsm5reGvs) - -## [Examen previo a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) - -## ¿Qué son los Datos? -En nuestra vida diaria, estamos constantemente rodeados por datos. El texto que estás leyendo ahora son datos, -la lista de números telefónicos de tus amigos en tu móvil son datos, también como la hora actual que se muestra en tu reloj. -Como seres humanos, operamos naturalmente con datos, contando el dinero que tenemos o escribiendo cartas a nuestros amigos. - -Sin embargo, los datos se vuelven más críticos con la creación de las computadoras. El rol principal de las computadoras -es realizar cálculos, pero éstas necesitan datos para operar. Por lo cual, necesitamos entender cómo las computadoras -almacenan y procesan los datos. - -Con el surgimiento de internet, el rol de las computadoras como dispositivos para la manipulación de datos incrementó. -Si lo piensas, ahora usamos computadoras mucho más para la comunicación y el procesamiento de datos, en lugar de para hacer cálculos. Cuando escribimos un correo electrónico a un amigo o buscamos alguna información en internet - estamos -creando, almacenando, transmitiendo y manipulando datos. - -> ¿Recuerdas la última vez que usaste una computadora para realmente calcular algo? - -## ¿Qué es Ciencia de Datos? - -En [Wikipedia](https://en.wikipedia.org/wiki/Data_science), se define la **Ciencia de Datos** como *un campo de las ciencias que usa métodos científicos para extraer conocimiento y perspectivas de datos estructurados y no estructurados, y -aplicar el conocimiento y conocimiento práctico de los datos a través de un amplio rango de dominios de aplicación*. - -Ésta definición destaca los siguientes aspectos importantes para la ciencia de datos: - -* El objetivo principal para la ciencia de datos es **extraer conocimiento** de los datos, en otras palabras - **entender** los datos, encontrar relaciones ocultas y construir un **modelo**. -* La ciencia de datos usa **métodos científicos**, como la probabilidad y estadística. De hecho, cuando el término **ciencia de datos** fue usado por primera vez, algunas personas argumentaron que la ciencia de datos era solo un nuevo nombre elegante para estadística. En estos días se ha vuelto evidente que es un campo mucho más amplio. -* El conocimiento obtenido puede ser aplicado para producir **conocimiento práctico**. -* Seremos capace de operar tanto datos **estructurados** y **no estructurados**. Más adelante en el curso discutiremos los diferentes tupos de datos. -* El **dominio de la aplicación** es un concepto importante, y un científico de datos necesita al menos cierta experiencia en el dominio del problema. - -> Otro aspecto importante de la Ciencia de Datos es que esta estudia como los datos son obtenidos, almacenados y operados usando computadoras. Mientras la estadística nos da los fundamentos matemáticos, la ciencia de datos aplica los conceptos matemáticos para realmente extraer conocimiento de los datos. - -Una de las formas (atribuidas a [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) de ver a la ciencia de datos es considerarla como un paradigma separado de la ciencia: -* **Empírica**, en la que confíamos mayormente en observaciones y resultados de experimientos -* **Teórica**, donde surgen nuevos conceptos desde el conocimiento científico existente -* **Computacional**, donde descubrimos nuevos principios basados en algunos experimentos computacionales -* **Dirigidos por datos**, basados en el descubrimiento de relaciones y patrones en los datos - -## Otros campos relacionados - -Ya que los datos son un concepto predominante, la ciencia de datos en sí misma también es un amplio campo, abarcando muchas otras disciplinas relacionadas. - -
-
Bases de datos
-
-La cosa más obvia a considerar es **cómo almacenar** los datos, por ejemplo como estructurarlos de tal formar que se procesen más rápido. Existen distintos tipos de bases de datos que almacenan datos estructurados y no estructurados, los -cuales [consideraremos en este curso] (../../2-Working-With-Data/README.md). -
-
Big Data
-
-Usualmente necesitamos almacenar y procesar enormes cantidades de datos con estructuras relativamente simples. Existen -formas especiales y herramientas para almacenar los datos en una forma distribuida on un clúster de computadoras, y procesarlas eficientemente. -
-
Aprendizaje automático
-
-Una de las formas de entender los datos es **construir un modelo** que será capaz de predecir el resultado deseado. Ser capaz de aprender esos modelos de los datos es el área de estudio del **aprendizaje automático**. Querrás dar un vistazo a nuestro currículum de [Aprendizaje automático para principiantes](https://github.com/microsoft/ML-For-Beginners/) para profundizar en ese campo. -
-
Inteligencia aritifcial
-
-Así como el aprendizaje automático, la inteligencia artificial también depende de los datos, e involucra la construcción de modelos altamente complejos que expondrán un comportamiento similar a un ser humano. Además, los métodos de AI usualmente nos permiten convertir datos no estructurados (por ejemplo, lenguaje natural) en datos estructurados extrayendo conocimiento útil. -
-
Visualización
-
-Cantidades descomunales de datos son incomprensibles para un ser humano, pero una vez que creamos visualizaciones útiles - podemos iniciar haciendo más sentido de los datos, y extrayendo algunas conclusiones. Por lo tanto, es importante conocer diversas formas de visualizar la información - lo cual cubriremos en la [Sección 3](../../3-Data-Visualization/README.md) de nuestro curso. Campos relacionados incluyen **infografías**, e **interacción humano-computadora** en general. -
-
- -## Tipos de datos - -Como ya se ha mencionado - los datos están en todas partes, ¡sólo necesitamos capturarlos en la forma correcta! Es útil distinguir entre datos **estructurados** y **no estructurados**. Los primeros típicamente son representados en una forma bien estructurada, usualmente como una tabla o conunto de tablas, mientras que los últimos es sólo una colección de archivos. Algunas veces podemos hablar de datos **semi-estructurados**, que tienen cierta estructura la cual podría variar mucho. - -| Estructurado | Semi-estructurado | No estructurado | -|------------- |-------------------|-----------------| -| Lista de personas con sus números telefónicos | Páginas de wikipedia con enlaces | Texto de la enciclopedia Británica | -| Temperatura en todas las habitaciones de un edificio a cada minuto por los últimos 20 años | Colección de documentos científicos en formato JSON con autores, fecha de publicación, y resumen | Recurso compartido de archivos con documentos corporativos | -| Datos por edad y género de todas las personas que entrar al edificio | Páginas de internet | Vídeo sin procesar de cámara de vigilancia | - -## Dónde obtener datos - -Hay múltiples fuentes de datos, y ¡sería imposible listarlas todas! Sin embargo, mencionemos algunos de los lugares típicos en dónde obtener datos: - -* **Estructurados** - - **Internet de las cosas**, incluyendo datos de distintos sensore, como sensores de temperatura o presión, proveen muchos datos útiles. Por ejemplo, si una oficina es equipada con sensores IoT, podemos controlar automáticamente la calefacción e iluminación para minimizar costos. - - **Encuestas** que realizamos a los usuarios después de pagar un producto o después de visitar un sitio web. - - **Análisis de comportamiento** podemos, por ejemplo, ayudarnos a entender que tanto profundiza un usuario en un sitio, y cuál es la razón típica por la cual lo deja. -* **No estructurados** - - Los **Textos** pueden ser una fuente rica en conocimiento práctico, empezando por el **sentimiento principal** generalizado, hasta la extracción de palabras clave e incluso algún significado semántico. - - **Imágenes** o **Video**. Un video de una cámara de vigilancia puede ser usado para estimar el tráfico en carretera, e informar a las personas acerca de posibles embotellamientos. - - **Bitácoras** de servidores web pueden ser usadas para entender qué páginas de nuestro sitio son las más visitadas y por cuánto tiempo. -* **Semi-estructurados** - - Grafos de **redes sociales** pueden ser una gran fuente de datos acerca de la la personalidad del usuario y efectividad potencial de difusión de la información. - - Cuando tenemos un conjunto de fotografías de una fiesta, podemos intentar extraer datos de la **dinámica de grupos** construyendo un grafo de personas tomándose fotos unas a otras. - -Conociendo posibles fuentes de datos diversas, puedes intentar pensar en distintos escenarios donde se pueden aplicar técnicas de ciencia de datos para conocer mejor la situación, y mejroar los procesos de negocio. - -## Qué puedes hacer con los datos - -En la ciencia de datos, nos enfocamos en los siguientes pasos del viaje de los datos: - -
-
1) Adquisición de datos
-
-El primer paso es reunir los datos. Mientras que en muchos casos esto puede ser un proceso simple, como datos obtenidos des una base de datos de una aplicación web. algunas veces necesitamos usar técnicas especiales. Por ejemplo, los datos obtenidos desde sensorres IoT pueden ser inmensos, y es una buena práctica el uso de endpoints búfer como IoT Hub para para reunir todos los datos antes de procesarlos. -
-
2) Almacenamiento de datos
-
-Almacenar los datos puede ser desafiante, especialmente si hablamos de big data. Al decidir cómo almacer datos, hace sentido anticiparse a la forma en la cual serán consultados. Existen varias formas de almacenar los datos: -
    -
  • Las bases de datos relacionales almacenan una colección de tabla, y usan un lenguaje especial llamado SQL para consultalos. Típicamente, las tablas estarían conectadas unas a otras mediante un esquema. En muchas ocasiones necesitamos convertir los datos desde la fuente original para que se ajusten al esquema.
  • -
  • Bases de datos NoSQL, como CosmosDB, no exigen un esquema de datos, y permiten almacenar datos más complejos, por ejemplo, documentos JSON jerárquicos o grafos. Sin embargo, Las bases de datos NoSQL no tienen capacidades de consulta SQL sofisticadas, y no requieren integridad referencial entre los datos.
  • -
  • El almacenamiento en lago de datos se usa para grandes colecciones de datos sin procesamiento. Los lagos de datos suelen ser usados con big data, donde todos los datos no pueden ser reunidos en un único equipo, y tienen que ser almacenados y procesados por un clúster. Parquet es un formato de datos que se utiliza comúnmente en conjunto con big data.
  • -
-
-
3) Procesamiento de datos
-
-Esta es la parte más emocionante del viaje de los datos, el cual involucra el procesamiento de los datos desde su forma original hasta la forma en que puede ser usada por visualizaciones/modelo de entrenamiento. Cuando tratamos con datos no estructurados como texto o imágenes, debemos usar algunas técnias de IA para extraer las **características** de los datos, y así convertirlos a su forma estructurada. -
-
4) Visualización / entendimiento humano
-
-Usualmente para entender los datos necesitamos visualizarlos. Teniendo diversas ténicas de visualización en nuestro arsenal podemos encontrar la visualización adecuada para comprenderla. Comúnmente, un científico de datos necesita "jugar con los datos", visualizádolos varias veces y buscando alguna relación. Además, debemos usar técnicas de estadística para probar algunas hipótesis o probar la correlación entre distintas porciones de datos. -
-
5) Entrenando modelos predictivos
-
-Ya que el principal objetivo de la ciencia de datos es ser capaz de tomar decisiones basándonos en los datos, debemos usar técnicas de aprendizaje automático para construir modelos predictivos que serán capces de resolver nuestros problemas. -
-
- -Por supuesto, dependiendo de los datos reales algunos pasos serán omitidos (por ejemplo, cuando ya tenemos los datos en la base de datos, o cuando no necesitamos modelo de entrenamiento), o algunos pasos deben ser repetidos varias veces (como el procesamiento de datos). - -## Digitalización y transformación digital - -En la última década, muchos negocios comenzaron a entender la importancia de los datos al tomar decisiones de negocio. Para aplicar los principios de ciencia de datos para dirigir un negocio primero necesitas reunir algunos datos, por ejemplo, de alguna forma digitalizar los procesos de negocio. Esto es conocido como **digitalización**, y seguido usar técnicas de ciencia de datos para guiar decisiones esto usualmente conlleva a un incremento significativo de la productividad (o incluso negocios pivote), llamado **transformación digital**. - -Consideremos el siguiente ejemplo. Supongaos, tenemos un curso de ciencia de datos (como éste), el cual ofrecemos en línea a los estudiante, y queremos usar ciencia de datos para mejorarl. ¿Cómo podemos hacerlo? - -Podemos comenzar pensando "¿qué puede ser digitalizado?". La forma más simple sería medir el tiempo que le toma a cada estuddiante completar cada módulo, y el conocimiento obtenido (por ejemplo, realizando exámenes de opción múltiple al final de cada módulo). Promediando el tiempo en concluir de todos los estudiantes, y trabajar en simplificarlos. - -> Argumentarás que este enfoque no es idóneo, porque los módulos pueden tener distinta duración. Problablemente es más justo dividir el tiempo por la longitud del módulo (en número de caracteres), y comparar esos valores en su lugar. - -Cuando comenzamos analizando los resultados de los exámenes de opción múltiple, intentamos encontrar conceptos específicos que los estudiantes entendieron vagamente,y mejorar el contenido. Para hacerlo, necesitamos diseñar exámenes de tal forma que cada pregunta se relacione a un concepto concreto o porción de conocimiento. - -Si queremos hacerlo aún más complejo, podemos trazar el tiempo invertido en cada módulo contra la categoría de edad de los estudiantes. Encontraremos que para algunas categorías de edad les toma ciertamente más tiempo el completar el módulo, o algunos estudiantes abandonan el curso en cierto punto. Esot nos puede ayudar a sugerir recomendaciones de módulos por edad, y así minimizar el descontengo de la gente por falsas expectativas. - -## 🚀 Desafío - -En este desafío, intentaremos encontrar los conceptos relevante para el campo de la Ciencia de Datos consultando algunos textos. Tomarermos un artículo de Wikipedia de Ciecnia de Datos, descargaremos y procesaremos el texto, y luego construiremos una nube de palabras como esta: - -![Nube de palabras para Ciencia de Datos](images/ds_wordcloud.png) - -Visita [`notebook.ipynb`](notebook.ipynb) para leer el código.También pueder ejecutarlo y ver como realiza todas las transformaciones de los datos en tiempo real. - -> Si no sabes como ejecutar el código en Jupyter Notebook, da un vistazo a [este artículo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). - - - -## [Cuestionario porterior a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/1) - -## Ejercicios - -* **Tarea 1**: Modifica el código anterior para encontrar conceptos relacionados para los campos de **Big Data** y **Machine Learning** -* **Tarea 2**: [Piensa en los escenarios para la Ciencia de Datos](assignment.md) - -## Créditos - -Esta lección ha sido escrita con ♥️ por [Dmitry Soshnikov](http://soshnikov.com) diff --git a/1-Introduction/02-ethics/translations/README.es.md b/1-Introduction/02-ethics/translations/README.es.md index 8d883b1b..e69de29b 100644 --- a/1-Introduction/02-ethics/translations/README.es.md +++ b/1-Introduction/02-ethics/translations/README.es.md @@ -1,263 +0,0 @@ -# Introducción a la ética de datos - -|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/02-Ethics.png)| -|:---:| -| Ética para ciencia de datos - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | - ---- - -Todos somos ciudadanos de datos viviendo en un gobernado por datos. - -Las tendencias de mercado nos dicen que para 2022, 1 de cada 3 grandes organizaciones comprará y venderá sus datos en línea a través de [mercados e intercambios](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/). Como **desarrolladores de Apps**, lo encontraremos más fácil y barato que integrar conocimientos dirigidos por datos y automatización dirigida por algoritmos en las experiencias de usuario del día a día. Pero como la AI se vuelve cada vez más presente, necesitarempos entender lso daños potenciales causados por el [armamentismo](https://www.youtube.com/watch?v=TQHs8SA1qpk) de dichos algoritmos a escala. - -Las tendencias también indican que crearemos y consumiremos más de [180 zettabytes](https://www.statista.com/statistics/871513/worldwide-data-created/) de datos para el 2025. Como **científicos de datos**, esto nos da niveles de acceso sin precedentes a datos personales. Esto significa que podemos construir perfiles conductuales de usuarios e influenciar en la toma de decisiones en formas que crea una [ilusión de libre elección](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) mientras empuja a los usuarios hacia los resultados que preferimos. También plantea preguntas más amplias respecto a la privacidad de datos y protección de los usuarios. - -La ética de datos son _barreras de seguridad necesarias_ para la ciencia de datos e ingeniería, ayudándonos a minimizar daños potenciales y consecuencias no deseadas de nuestras acciones dirigidas por datos. El [Hype Cycle de Gartner para AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) identifica tendencias relevantes en ética digital, AI responsable, y gobernanza de AI como factores clave para mega-tendencias mayores alrededor de la _democratización_ e _industrialización_ de la AI. - -![Hype Cycle de Gartner para AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) - -En esta lección, exploraremos la fascinante área de la ética de datos - desde los conceptos clave y desafíos, hasta los casos de estudio y conceptos de AI aplicados como gobernanza - que ayuda a establecer una cultura de ética en equipos y organizaciones que trabajan con datos y AI. - - - - -## [Examen previo a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/2) 🎯 - -## Definiciones básicas - -Empecemos entendiendo la terminología básica. - -La palabra "ética" proviene de la [palabra griega "ethikos"](https://en.wikipedia.org/wiki/Ethics) (y su raíz "ethos") lo cual significa _carácter o naturaleza moral_. - -La **ética** se trata de valores compartidos y principios morales que gobiernan nuestro comportamiento en sociedad. La ética se basa no en leyes sino en normas más ampliamente aceptadas de lo que es "correcto vs lo incorrecto". Sin embargo, las consideraciones éticas pueden influenciar iniciativas de gobernanza corporativa y regulaciones de gobernanza que crean más incentivos para el cumplimiento. - -La **ética de datos** es una [nueva rama de la ética](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) que "estudia y evalua problemas morales relacionados a _datos, algoritmos y prácticas correspondientes_"- Aquí, los **"datos"** se centran en acciones relacionadas a la generación, grabación, curación, procesamiento de difusión, intercambio y uso de **"algoritmos"** centrados en AI, agentes, aprendizaje automático, y robots, así como **"prácticas"** enfocadas en temas como inovación responsable, programación, hackeo y códigos de ética. - -**Ética aplicada** es la [aplicación práctica de consideraciones morales](https://en.wikipedia.org/wiki/Applied_ethics). Es el proceso de investigar activamente cuestiones éticas en el contexto de _acciones del mundo real, productos y procesos_, y tomar medidas correctivas para hacer que estos se alinean con nuestros valores éticos definidos. - -**Cultura ética** trata de [_operacionalizar_ la ética aplicada](https://hbr.org/2019/05/how-to-design-an-ethical-organization) para confirmar que nuestros principios éticos y prácticas son adoptados de forma consistente y escalable a través de toda la organización. Una cultura ética exitosa define principios éticos a nivel organización, provee incentivos significativos para el cumplimiento y refuerza las normas éticas alentando y amplificando los comportamientos deseados en cada nivel de la organización. - - -## Conceptos éticos - -En esta sección, duscutiremos conceptos como **valores compartidos** (principios) y **retos éticos** (problemas) para la ética de datos - y explora **casos de estudio** que te ayudan a entender estos conceptos en el contexto del mundo real. - -### 1. Principios éticos - -Cada estrategia de ética de datos comienza por la definición de _principios éticos_ - los "valores compartidos" que describen los comportamientos aceptables, y guían acciones de conformidad, en nuestros proyectos de datos y AI. Puedes definir estos a nivel individual o de equipo. Sin embargo, la mayoría de las grandes organizaciones describen estos en una misión _ética de AI_ o marco de trabajo que es definido a niveles corporativos y refuerza consistentement a través de todos los equipos. - -**Ejemplo:** La misión [responsable de AI](https://www.microsoft.com/en-us/ai/responsible-ai) de Microsoft se lee: _"Estamos comprometidos al avance de principios éticos dirigidos por AI que anteponen primero a la gente"_ - identificando 6 principios éticos en el marco de trabajo descrito a continuación: - -![AI responsable en Microsoft](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) - -Exploremos brevemente estos principios. La _transparencia_ y _responsabilidad_ son los valores fundamentales sobre los que se cimientan otros principios - iniciemos aquí: - -* [**Responsabilidad**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) hace a los practicantes _responsables_ por sus datos y operaciones de AI, en cumplimiento con estos principios éticos. -* [**Transparencia**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) asegura que los datos y acciones de AI sean _entendibles_ (interpretables) para los usuarios, explicando el qué y el porqué detrás de las decisiones. -* [**Justicia**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - se centra en asegurar que la AI trata a _todas las personas_ justamente, dirigiendo cualquier sesgo sistémico o social-ético implícito in datos y sistemas. -* [**Fiabilidad y seguridad**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - asegura que la AI se comporta _consistentemente_ con los valores definidos, minimizando daños potenciales o consecuencias no intencionadas. -* [**Privacidad & seguridad**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - se trata del entendimiento del linaje de datos, y provee _privacidad de datos y protecciones relacionadas_ a los usuarios. - -* [**Inclusión**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - trata del diseño de soluciones AI con la intención, adaptándolas para reunir un _amplio rango de necesidades humanas_ y capacidades. - -> 🚨 Piensa cual podría ser tu misión de ética de datos. Explorar marcos de trabajo éticos de AI de otras organizaciones - aquí tienes ejemplos de [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles) , y[Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). ¿Qué valores compartidos tienen en común? ¿Cómo se relacionan estos principios al producto de AI o industria en la cual operan? - -### 2. Desafíos éticos - -Una vez que tenemos pricipios éticos definidos, el siguiente paos es evaluar nuestros datos y acciones AI para ver si estos se alinean con los valores compartidos. Piensa en tus acciones en 2 categorías: _recolección de datos_ y _diseño de algoritmos_. - -Con la recolección de datos, las acciones probablemente involucren **datos personales** o información de identificación personal (PII) para individuos vivos identificables. Esto incluye [diversos artículos de datos no personales](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) que _colectivamente_ identifican a un individuo. Los desafíos éticos pueden relacionarse con _privacidad de datos_, _propiedad de los datos_, y temas relacionados como _consentimiento informado_ y _derechos de propiedad intelectual_ para los usuarios. - -Con el diseño de algoritmo, las acciones involucran la recolección y curación de **conjuntos de datos**, luego usarlos para entrenar y desplegar **modelos de datos** que predicen resultados o automatizan decisiones en contexto del mundo real. Los desafíos éticos pueden surgir de _conjuntos de datos sesgados_, problemas con la _calidad de los datos_, _injusticia_, y _malinterpretación_ in los algoritmo - incluyendo algunos problemas que son sistémicos por naturaleza. - -En ambos casos, los desafíos éticos destacan áreas donde nuestas acciones pueden encontrar conflictos con nuestros valores compartidos. Para detectar, mitigar, minimizar, o eliminar estas preocupaciones - necesitamos realizar preguntas morales de "sí/no" relacionadas a nuestas acciones, luego tomar acciones correctivas según sea necesario. Demos un vistazo a algunos desafíos éticos y las preguntas morales que plantean: - - -#### 2.1 Propiedad de los datos - -La recolección de datos suele involucrar datos que pueden identificar los sujetos de datos. La [propiedad de los datos](https://permission.io/blog/data-ownership) trata del _control_ y [_derechos de usuario_](https://permission.io/blog/data-ownership) relacionados a la creación, procesamiento y dispersión de los datos. - -Las preguntas morales que debemos hacer son: - * ¿Quién posea los datos? (usuario u organización) - * ¿Qué derechos tienen los sujetos de datos? (ejemplo: acceso, eliminación, portabilidad) - * ¿Qué derechos tienen las organizaciones? (ejemplo: rectificar revisiones de usuarios maliciosos) - -#### 2.2 Consentimiento informado - -[Consentimiento informado](https://legaldictionary.net/informed-consent/) define el acto de los usuarios al aceptar una acción (como la recolección de datos) con un _completo entendimiento_ de hechos relevantes incluyendo el propósito, riesgos potenciales y alternativas. - -Las preguntas a explorar son: - * ¿El usuario (sujeto de datos) otorgó el permiso para el uso y cpatura de datos? - * ¿El usuario entendió el propósito para el cual los datos fueron capturados? - * ¿EL usuario entendió los riesgos potenciales de su participación? - -#### 2.3 Propiedad intelectual - -La [propiedad intelectual](https://en.wikipedia.org/wiki/Intellectual_property) se refiere a creaciones intangibles resultado de la iniciativa humana, que puede _tener valor económico_ para individuos o negocios. - -Las preguntas a explorar son: - * ¿Los datos recolectados tiene valor económico para un usuario o negocio? - * ¿El **usuario** tiene propiedad intelectual en este ámbito? - * ¿La **organización** tiene propiedad intelectual en este ámbito? - * Si estos derechos existen, ¿cómo los protegemos? - -#### 2.4 Privacidad de datos - -La [privacidad de datos](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) o privacidad de la información se refiere a la preservación de la privacidad del usuario y la protección de la identidad del usuario respecto a información de identificación personal. - -Las preguntas a explorar son: - * ¿Están los datos (personales) de los usuarios seguros contra hackeos y filtraciones? - * ¿Están los datos de usuario accesibles sólo para usuarios y contextos autorizados? - * ¿Se preserva el anonimato de los usuarios cuando los datos son compartidos o esparcidos? - * ¿Puede un usuario ser desidentificado de conuntos de datos anonimizados? - - -#### 2.5 Derecho al olvido - -El [derecho al olvido](https://en.wikipedia.org/wiki/Right_to_be_forgotten) o [derecho a la eliminación](https://www.gdpreu.org/right-to-be-forgotten/) provee protección adicional a datos personales de los usuarios. Especialmente, brinda a los usuarios el derecho a solicitar la eliminación o remoción de datos personales de búsquedas de internet y otras ubicaciones, _bajo circunstancias específicas_ - permitiéndoles un nuevo comienzo en línea sin las acciones pasadas siendo retenidas contra él. - -Las preguntas a explorar son: - * ¿El sistema permite a los sujetos de datos solicitar eliminación? - * ¿La remoción del consentimiento del usuario debería disparar la eliminación automatizada? - * ¿Se recolectaron los datos sin consentimiento o por medios no legítimos? - * ¿Estamos de acuerdo con las regulaciones de gobierno para la privacidad de los datos? - - -#### 2.6 Sesgo del conjunto de datos - -Un conjunto de datos o [sesgo de recopilación](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) pretende seleccionar un subconjunto _no representativo_ de datos para el desarrollo de un algorítmo, creando una potencial injusticia en los resultados para distintos grupos. Los tipos de sesgos incluyen selección o muestreo de sesgo, sesgo voluntario y sesgo de instrumento. - -Las preguntas a explorar son: - * ¿Reclutamos un conjunto representativo de sujetos de datos? - * ¿Probamos nuestros conjuntos de datos recoletados o curados para distintos sesgos? - * ¿Podemos mitigar o eliminar los sesgos descubiertos? - -#### 2.7 Calidad de los datos - -[La calidad de los datos](https://lakefs.io/data-quality-testing/) se enfoca en la validez de los conjuntos de datos curados que se usan para desarrollar nuestros algoritmos, comprobando si las características y registros cumplen los requerimientos para el nivel de precisión necesario para nuestros propósitos de AI. - -Las preguntas a explorar son: - * ¿Capturamos _características_ válidas para nuestro caso de uso? - * ¿Los datos fueron capturados _consistentemente_ a través de las distintas fuentes de datos? - * ¿Están _completos_ los conjuntos de datos para las distintas condiciones o escenarios? - * ¿La información es capturada de forma _precisa_ reflejando la realidad? - -#### 2.8 Justicia del algoritmo - -[La justicia del algoritmo](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) verifica que el diseño del algoritmo discrimina sistemáticamente contra subgrupos específicos de sujetos de datos que conlleven a [daños potenciales](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) en _asignación_, (donde los recursos son negados o retenidos para ese grupo) y _calidad del servicio_ (donde la AI no es tan precisa para algunos subgrupos como lo es para otros). - -Las preguntas a explorar son: - * ¿Evaluamos la precisión del modelo para distintos subgrupos y condiciones? - * ¿Escrutinamos el sistema buscando daños potenciales (por ejemplo, estereotipos? - * ¿Podemos revisar los datos o retener re-entrenar modelos para mitigar daños potenciales? - -Explora recursos como [Listas de comprogación de justicia de AI](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) para aprender más. - -#### 2.9 Malinterpretación - -[La malinterpretación de datos](https://www.sciencedirect.com/topics/computer-science/misrepresentation) trata de preguntarse si estamos comunicando ideas honestamente de los datos reportados en una forma engañosa para soportar la narrativa deseada. - -Las preguntas a explorar son: - * ¿Estamos reportando datos incompletos o inexactos? - * ¿Estamos visualizando los datos de tal forma conllevan a conclusiones engañosas? - * ¿Estamos usando técnicas estadísticas selectivas para manipular los resultados? - * ¿Existen explicaciones alternativas par pueden ofrecer una conclusión distinta? - -#### 2.10 Libertad de elección -La [ilusión de libertad de elección](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) ocurre cuando un sistema "elige arquitecturas" usando algoritmos de toma de decisiones para empujar a la gente hacia la elección de un resultado preferido mientras aparenta darles opciones y control. Estos [patrones obscuros](https://www.darkpatterns.org/) pueden causar daño social y económico a los usuarios. Ya que las decisiones del usuario impactan en los perfiles de comportamiento, estas acciones dirigen potencialmente a futuras elecciones que pueden amplificar y extender el impacto de estos daños. - -Las preguntas a explorar son: - * ¿El usuario entendió las implicaciones de realizar dicha elección? - * ¿El usuario estaba conciente de las opciones (alternativas) y los pros y contrar de cada una? - * ¿El usuario puede revertir una elección influenciada o automatizada posteriormente? - -### 3. Casos de estudio - -Para poner estos desafíos éticos en contexto del mundo real, ayuda ver casos de estudio que destacan el daño potencial y las consecuencias a individuos y sociedad, cuando dichas violaciones éticas son pasadas por alto. - -Aquí hay algunos ejemplos: - -| Desafío de ética | Caso de estudio | -|--- |--- | -| **Consentimiento informado** | 1972 - [Estudio de sífilis Tuskegee](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - A los hombres afroamericanos que participaron en el estudio le fue prometido tratamiento médico gratuito _pero fueron engañados_ por los investigadores quienes fallaron al informar a los sujetos en sus diagnósticos o en la disponibilidad del tratamiento. Muchos sujetos murieron y los compañeros o hijos fueron afectados; el estudio duró 40 años. | -| **Privacidad de los datos** | 2007 - El [premio de datos de Netflix](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) otorgó a investigadores con _10M de clasificaciones anóminas de 50K clientes_ para ayudar a mejorar los algoritmos de recomendación. Sin embargo, los investigadores fueron capaces de correlacionar datos anónimos con datos personalmente identificables en _conjuntos de datos externos_ (por ejemplo, comentarios en IMDb) - efectivamente "des-anonimizando" a algunos subscriptores de Netflix.| -| **Sesgo de colección** | 2013 - La ciudad de Boston [desarrolló Street Bump](https://www.boston.gov/transportation/street-bump), una app que permite a los ciudadanos reportar baches, dando a la ciudad mejores datos de la carretera para encontrar y reparar desperfectos. Sin embargo, [la gente en los grupos con menores ingresos tuvieron menos acceso a autos y teléfonos](https://hbr.org/2013/04/the-hidden-biases-in-big-data), haciendo sus problemas de carretera invisibles para la app. Los desarrolladores trabajaron en conjunto con académicos para cambiar _el acceso equitativo y brecha digital_ y así fuese más justo. | -| **Justicia de algoritmos** | 2018 - El [estudio de tonos de género](http://gendershades.org/overview.html) del MIT evaluó la precisión de productos de clasificación de género , exponiendo brechas en la precisión para mujeres y personas de color. Una [tarjeta 2019 de Apple](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) parecía ofrecer menos crédit a mujeres que a hombres. Ambos ilustraron problemas en sesgos de algoritmos llevando a daños socio-económicos. -| **Malinterpretación de datos** | 2020 - El [departamento de salud pública de Georgia liberó gráficos de COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) que parecían malinformar a los ciudadanos acerca de las tendencias en los casos confirmados sin orden cronológico en el eje x. Esto ilustra la malinterpretación a través de visualizaciones engañosas. | -| **Ilusión de libertad de elección** | 2020 - La aplicación de aprendizaje [ABCmouse pagó $10M para asentar una queja FTC](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) donde los padres fueron engañados para pagar subscripciones que no podían cancelar. Esto ilustra los patrones obscuros en arquitecturas de elección, donde los usuarios fueron empujados hacia elecciones potencialmente dañinas. | -| **Privacidad de los datos y derechos de usuario** | 2021 - La [infracción de datos](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) de Facebook expuso datos de 530M de usuarios, resultando en un acuerdo de $5B para la FTC. Sin embargo, esto rechazó notificar a los usuarios de la brecha violando los derechos de usuarios alrededor de la transparencia y acceso de datos. | - -¿Quieres explorar más casos de estudio? Revisa los siguientes recursos: -* [Ética desenvuelta](https://ethicsunwrapped.utexas.edu/case-studies) - dilemas éticos en diversas industrias. -* [Curso de ética en ciencia de datos](https://www.coursera.org/learn/data-science-ethics#syllabus) - referencía los casos de estudio explorados. -* [Donde las cosas han ido mal](https://deon.drivendata.org/examples/) - lista de comprobación de deon con ejemplos - -> 🚨 Piensa en los casos de estudio que has visto - ¿has experimentado o sido afectado por un desafío ético similar en tu vida? ¿Puedes pensar en al menos otro caso de estudio que ilustre uno de los desafíos éticos que discutimos en esta sección? - -## Ética aplicada - -Hemos hablado de conceptos éticos, desafíos y casos de estudio en contextos del mundo real. Pero ¿cómo podemos _aplicar_ los principios éticos y prácticas en nuestros proyectos? y ¿cómo _aplicamos_ estas prácticas para una mejor gobernanza? Exploremos algunas soluciones del mundo real: - -### 1. Códigos profesionales - -Los códigos profesionales ofrecen una opción para que las organizaciones "incentiven" a los miembros a apoyar sus principios éticos y su misión. Los códigos son _guías morales_ para el comportamiento profesional, que ayudan a los empleados o miembros a tomar decisiones que se alinea con sus principios de organización. Estas son tan buenas como el cumplimiento voluntario de los miembros; sin embargo, muchas organizaciones ofrecen incentivos adicionales y penalizaciones para motivar el cumplimiento de los miembros. - -Los ejemplos incluyen: - - * Código de ética de [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) - * Código de conducta de la [Asociación de ciencia de datos](http://datascienceassn.org/code-of-conduct.html) (creado en 2013) - * [Código de ética y conducta profesional de ACM](https://www.acm.org/code-of-ethics) (desde 1993) - -> 🚨 ¿Perteneces a una organización profesional de ingeniería o ciencia de datos? Explora su sitio para ver si definen un código de ética profesional. ¿Qué te dice acerca de sus principios éticos? ¿Cómo "incentivan" a los miembros para que sigan el código? - -### 2. Listas de comprobación de ética - -Mientras los códigos profesionales defiene los _comportamientos éticos_ requerido por sus practicantes, estos tienen [limitaciones conocidas](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) en su aplicación, particularmente en proyectos a gran escala. En su lugar, muchos expertos en ciencia de datos [abogan por listas de comprobación](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), que pueden **conectar principios a prácticas** en formas más determinísticas y accionables. - -Las listas de comprobación convierten preguntas en tareas de "sí/no" que pueden ser operadas, permitiendo darles seguimiento como parte de flujos de trabajo de liberación de productos estándar. - -Los ejemplos incluyen: - * [Deon](https://deon.drivendata.org/) - una lista de comprobación de ética de datos de propósito general creada a partir de [recomendaciones de la industria](https://deon.drivendata.org/#checklist-citations) con una herramienta de línea de comandos para su fácil integración. - * [Lista de comprobación de auditoría de privacidad](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - provee orientación general para prácticas de manejo de la información desde perspectivas legales y sociales. - * [Lista de comprobación de justicia de AI](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - creada por practicantes de AI para soportar la adopción e integración de controles justos en los ciclos de desarrollo de AI. - * [22 preguntas para ética en datos y AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - marcos de trabajo más abiertos, estructurados para la exploración inicial de problemas éticos en contextos de diseño, implementación y organización. - -### 3. Regulaciones éticas - -La ética trata de definir valores compartidos y hacer lo correcto _voluntariamente_. El **cumplimiento** trata de _seguir la ley_ donde se define. La **gobernanza** cubre ampliamente todas las formas en las cuales las organizaciones operan para hacer cumplir los principios éticos y seguir las leyes establecidas. - -Hoy en día, la gobernanza toma dos formas dentro de la organización. Primero, define los principios **éticos de AI** y establece prácticas para promover la adopción en todos los proyectos relacionados a AI en la organización. Segundo, trata de cumplir con todoso los mandatos de gobierno en **regulaciones de protección de datos** para las regiones en las cuales opera. - -Ejemplos de protección de datos y regulaciones de privacidad: - - * `1974`, [Ley de privacidad de EE.UU.](https://www.justice.gov/opcl/privacy-act-1974) - regula al _gobierno federal_ la recolección, uso y divulgación de información personal. - * `1996`, [Ley de responsabilidad y portabilidad de seguro de salud de EE.UU. (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - protege los datos de salud personales. - * `1998`, [Ley de protección de la privacidad en línea para niños de EE.UU. (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - protege la privacidad de los datos para menores de 13 años. - * `2018`, [Regulación de protección general de los datos (GDPR)](https://gdpr-info.eu/) - provee derechos de usuario, protección de datos y privacidad. - * `2018`, [Ley de privacidad para los consumidores de California (CCPA)](https://www.oag.ca.gov/privacy/ccpa) da a los consumidores más _derechos_ sobre sus datos (personales). - * `2021`, [Ley China de protección de la información personal](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) recién establecida, crea una de las regulaciones más grandes a nivel mundial respecto a privacidad de los datos. - -> 🚨 La Unión Europea definió la GDPR (regulación general de protección de datos) quedando como una de las regulaciones a la privacidad de los datos más influyentes de hoy en día. ¿Sabías que también define [8 derechos de usuario](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) para la protección de la privacidad digital de los ciudadanos y datos personales? Aprende más acerca de qué son y porqué importan. - - -### 4. Cultura ética - -Nota que existe una brecha intangible entre _cumplimiento_ (hacer suficiente para cumplir "lo designado por ley") y atender [problemas sistémicos](https://www.coursera.org/learn/data-science-ethics/home/week/4) (como la osificación, asimetría de la información e injusticia distribucional) que acelera el armamento de la AI. - -Lo último requier [enfoques colaborativos para definir culturas de ética](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) que construyan conexiones emocionales y valores compartidos consistentes _a través de las organizaciones_ en la industria. Esto hace un llamado a [culturas de ética de datos más formalizadas](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) en las organizaciones - permitiendo a _cualquiera_ tirar del [cordón de Andon](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (para plantear cuestiones éticas desde el principio en el proceso) y hacer de las _evaluaciones éticas_ (por ejemplo, en la contratación) un criterio principal en la formación de equipos en proyectos de AI. - ---- -## [Examen posterior a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/3) 🎯 -## Revisión y auto-estudio - -Los siguientes cursos y libros te facilitarán el entendimiento de conceptos éticos principales y desafíos, mientras que los casos de estudio y herramientas te ayudarán con las prácticas éticas aplicadas en contextos del mundo real. Aquí tienes algunos recursos con los que comenzar. - -* [Aprendizaje automático para principiantes](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - lecciones de justicia, de Microsoft. -* [Principios de AI responsable](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - ruta de aprendizaje gratuito de Microsoft Learn. -* [Ética y Ciencia de Datos](https://resources.oreilly.com/examples/0636920203964) - Libro electrónico de O'Reilly (M. Loukides, H. Mason et. al) -* [Ética de Ciencia de Datos](https://www.coursera.org/learn/data-science-ethics#syllabus) - curso en línea de la Universidad de Michigan. -* [Ética desenvuelta](https://ethicsunwrapped.utexas.edu/case-studies) - casos de estudio de la Universidad de Texas. - -# Asignación - -[Escribe un caso de estudio de ética de datos](assignment.md) From b68683d233501d2f39ec7748f49a08d6846c8a14 Mon Sep 17 00:00:00 2001 From: Heril Changwal <76246330+Heril18@users.noreply.github.com> Date: Mon, 11 Oct 2021 11:07:11 +0530 Subject: [PATCH 053/254] Update README.hi.md --- .../16-communication/translations/README.hi.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md index 234072d7..fcfab7f7 100644 --- a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md +++ b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md @@ -1,7 +1,8 @@ # डेटा विज्ञान के जीवनचक्र: संचार -|![ द्वारा स्केचनोट [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/16-Communicating.png)| + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)| |:---:| -| डेटा विज्ञान के जीवनचक्र: संचार - [@nitya](https://twitter.com/nitya)_द्वारा स्केचनोट _ | +| डेटा विज्ञान के जीवनचक्र: संचार - _[@nitya](https://twitter.com/nitya) द्वारा स्केचनोट_| ## [प्री-लेक्चर क्विज ](https://red-water-0103e7a0f.azurestaticapps.net/quiz/30) ऊपर दिए गए प्री-लेक्चर क्विज़ के साथ क्या करना है, इसके बारे में अपने ज्ञान का परीक्षण करें! @@ -37,7 +38,7 @@ ### 1. अपने दर्शकों, अपने चैनल और अपनी संचार पद्धति को समझें जिस तरह से आप परिवार के सदस्यों के साथ संवाद करते हैं, वह आपके दोस्तों के साथ संवाद करने के तरीके से अलग होने की संभावना है। आप शायद अलग-अलग शब्दों और वाक्यांशों का उपयोग करते हैं जिन्हें आप जिन लोगों से बात कर रहे हैं, उनके समझने की अधिक संभावना है। डेटा संचार करते समय आपको वही दृष्टिकोण अपनाना चाहिए। इस बारे में सोचें कि आप किससे संवाद कर रहे हैं। उनके लक्ष्यों और उस संदर्भ के बारे में सोचें जो उनके पास उस स्थिति के आसपास है जो आप उन्हें समझा रहे हैं। -आप संभावित रूप से अपने अधिकांश दर्शकों को एक श्रेणी में समूहित कर सकते हैं। एक _Harvard Business Review_ लेख में, "[डेटा के साथ कहानी कैसे सुनाएं] (http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/)," डेल कार्यकारी रणनीतिकार जिम स्टिकलेदर दर्शकों की पांच श्रेणियों की पहचान करता है। +आप संभावित रूप से अपने अधिकांश दर्शकों को एक श्रेणी में समूहित कर सकते हैं। एक _Harvard Business Review_ लेख में, “[डेटा के साथ कहानी कैसे बताएं](http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/),” डेल कार्यकारी रणनीतिकार जिम स्टिकलेदर दर्शकों की पांच श्रेणियों की पहचान करता है। - **नौसिखिया**: विषय के लिए पहला प्रदर्शन, लेकिन नहीं चाहता अति सरलीकरण @@ -66,9 +67,9 @@ आप अंत को ध्यान में रखकर कैसे शुरू करते हैं? अपने डेटा को संप्रेषित करने से पहले, अपने मुख्य निष्कर्ष लिख लें। फिर, जिस तरह से आप कहानी तैयार कर रहे हैं, जिस तरह से आप अपने डेटा के साथ बताना चाहते हैं, अपने आप से पूछें, "यह मेरे द्वारा बताई जा रही कहानी में कैसे एकीकृत होता है?" -सावधान रहें - अंत को ध्यान में रखते हुए शुरुआत करना आदर्श है, आप केवल उस डेटा को संप्रेषित नहीं करना चाहते जो आपके इच्छित takeaways का समर्थन करता है। ऐसा करने को चेरी-पिकिंग कहा जाता है, जो तब होता है जब एक संचारक केवल उस डेटा का संचार करता है जो उस बिंदु का समर्थन करता है जिसे वे बनाने के लिए बांध रहे हैं और अन्य सभी डेटा को अनदेखा करते हैं। +सावधान रहें - अंत को ध्यान में रखते हुए शुरुआत करना आदर्श है, आप केवल उस डेटा को संप्रेषित नहीं करना चाहते जो आपके इच्छित टेकअवे का समर्थन करता है। ऐसा करने को चेरी-पिकिंग कहा जाता है, जो तब होता है जब एक संचारक केवल उस डेटा का संचार करता है जो उस बिंदु का समर्थन करता है जिसे वे बनाने के लिए बांध रहे हैं और अन्य सभी डेटा को अनदेखा करते हैं। -यदि आपके द्वारा एकत्र किया गया सभी डेटा स्पष्ट रूप से आपके इच्छित टेकअवे का समर्थन करता है, तो बढ़िया। लेकिन अगर आपके द्वारा एकत्र किया गया डेटा है जो आपके टेकअवे का समर्थन नहीं करता है, या यहां तक ​​​​कि आपके प्रमुख टेकअवे के खिलाफ तर्क का समर्थन करता है, तो आपको उस डेटा को भी संप्रेषित करना चाहिए। अगर ऐसा होता है, तो अपने दर्शकों के साथ खुलकर बात करें और उन्हें बताएं कि आप अपनी कहानी के साथ बने रहने का विकल्प क्यों चुन रहे हैं, भले ही सभी डेटा इसका समर्थन न करें। +यदि आपके द्वारा एकत्र किया गया सभी डेटा स्पष्ट रूप से आपके इच्छित टेकअवे का समर्थन करता है, तो बढ़िया। लेकिन अगर आपके द्वारा एकत्र किया गया डेटा है जो आपके टेकअवे का समर्थन नहीं करता है, या यहां तक कि आपके प्रमुख टेकअवे के खिलाफ तर्क का समर्थन करता है, तो आपको उस डेटा को भी संप्रेषित करना चाहिए। अगर ऐसा होता है, तो अपने दर्शकों के साथ खुलकर बात करें और उन्हें बताएं कि आप अपनी कहानी के साथ बने रहने का विकल्प क्यों चुन रहे हैं, भले ही सभी डेटा इसका समर्थन न करें। ### 3. इसे एक वास्तविक कहानी की तरह देखें @@ -208,4 +209,4 @@ ## कार्यभार -[एक कहानी बताओ] (assignment.md) \ No newline at end of file +[एक कहानी बताओ](assignment.md) From 2011504c98059a6d5540ad45b39a9aa51374c7c6 Mon Sep 17 00:00:00 2001 From: Heril Changwal <76246330+Heril18@users.noreply.github.com> Date: Mon, 11 Oct 2021 11:16:09 +0530 Subject: [PATCH 054/254] Update README.hi.md --- .../16-communication/translations/README.hi.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md index fcfab7f7..85ae92d4 100644 --- a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md +++ b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md @@ -1,6 +1,6 @@ # डेटा विज्ञान के जीवनचक्र: संचार -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev)](https://github.com/Heril18/Data-Science-For-Beginners/raw/main/sketchnotes/16-Communicating.png)| |:---:| | डेटा विज्ञान के जीवनचक्र: संचार - _[@nitya](https://twitter.com/nitya) द्वारा स्केचनोट_| @@ -147,7 +147,7 @@ **क्लाइमेक्स** आधार तैयार करने के बाद, इमर्सन 5 या इतने मिनट के लिए चरमोत्कर्ष पर जा सकता था। -इमर्सन प्रस्तावित समाधानों को पेश कर सकता है, यह बता सकता है कि वे समाधान कैसे उल्लिखित मुद्दों को संबोधित करेंगे, उन समाधानों को मौजूदा वर्कफ़्लो में कैसे लागू किया जा सकता है, समाधानों की लागत कितनी है, समाधानों का आरओआई क्या होगा, और शायद कुछ स्क्रीनशॉट भी दिखा सकते हैं या लागू होने पर समाधान कैसे दिखेंगे, इसके वायरफ्रेम। एमर्सन उन उपयोगकर्ताओं के प्रशंसापत्र भी साझा कर सकते हैं, जिन्होंने अपनी शिकायत को संबोधित करने में 48 घंटे से अधिक समय लिया, और यहां तक ​​कि कंपनी के भीतर एक मौजूदा ग्राहक सेवा प्रतिनिधि से एक प्रशंसापत्र भी, जिसने वर्तमान टिकट प्रणाली पर टिप्पणी की है। +इमर्सन प्रस्तावित समाधानों को पेश कर सकता है, यह बता सकता है कि वे समाधान कैसे उल्लिखित मुद्दों को संबोधित करेंगे, उन समाधानों को मौजूदा वर्कफ़्लो में कैसे लागू किया जा सकता है, समाधानों की लागत कितनी है, समाधानों का आरओआई क्या होगा, और शायद कुछ स्क्रीनशॉट भी दिखा सकते हैं या लागू होने पर समाधान कैसे दिखेंगे, इसके वायरफ्रेम। एमर्सन उन उपयोगकर्ताओं के प्रशंसापत्र भी साझा कर सकते हैं, जिन्होंने अपनी शिकायत को संबोधित करने में 48 घंटे से अधिक समय लिया, और यहां तक कि कंपनी के भीतर एक मौजूदा ग्राहक सेवा प्रतिनिधि से एक प्रशंसापत्र भी, जिसने वर्तमान टिकट प्रणाली पर टिप्पणी की है। **क्लोजर** अब इमर्सन कंपनी के सामने आने वाली समस्याओं को दूर करने में 5 मिनट बिता सकता है, प्रस्तावित समाधानों पर फिर से विचार कर सकता है और समीक्षा कर सकता है कि वे समाधान सही क्यों हैं। @@ -175,7 +175,7 @@ [डेटा के साथ कहानी कैसे सुनाएं (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data) -[टू-वे कम्युनिकेशन: अधिक व्यस्त कार्यस्थल के लिए 4 टिप्स (yourविचारपार्टनर.कॉम)](https://www.your Thoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through- दो तरफ से संचार) +[टू-वे कम्युनिकेशन: अधिक व्यस्त कार्यस्थल के लिए 4 टिप्स (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication) [महान डेटा स्टोरीटेलिंग के लिए 6 संक्षिप्त चरण - बार्नराइज़र, एलएलसी (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/) From f9218ecd3029e4ec2d4e02315ec899a23cc07f8b Mon Sep 17 00:00:00 2001 From: Dhruv Krishna Vaid Date: Mon, 11 Oct 2021 13:08:02 +0530 Subject: [PATCH 055/254] Added Hindi translation --- .../translations/README.hi.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 5-Data-Science-In-Cloud/translations/README.hi.md diff --git a/5-Data-Science-In-Cloud/translations/README.hi.md b/5-Data-Science-In-Cloud/translations/README.hi.md new file mode 100644 index 00000000..552ea6ee --- /dev/null +++ b/5-Data-Science-In-Cloud/translations/README.hi.md @@ -0,0 +1,20 @@ +# क्लाउड में डेटा साइंस + +![क्लाउड-चित्र](../images/cloud-picture.jpg) + +> [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape) से [जेलेके वनूटेघम](https://unsplash.com/@ilumire) द्वारा फोटो। + +जब बड़े डेटा के साथ डेटा साइंस करने की बात आती है, तो क्लाउड गेम चेंजर हो सकता है। अगले तीन पाठों में हम यह देखने जा रहे हैं कि क्लाउड क्या है और यह इतना मददगार क्यों हो सकता है। हम हृद्पात (दिल की धड़कन रुकना) के डेटासेट का भी पता लगाने जा रहे हैं और किसी के हृद्पात की संभावना का आकलन करने में मदद करने के लिए एक मॉडल का निर्माण करने जा रहे हैं। हम दो अलग-अलग तरीकों से एक मॉडल को प्रशिक्षित करने, डिप्लॉय करने और उपभोग करने के लिए क्लाउड की शक्ति का उपयोग करेंगे। एक तरीका कम कोड/नो कोड फैशन में केवल यूजर इंटरफेस का उपयोग करके, दूसरा तरीका एज़ूर मशीन लर्निंग सॉफ्टवेयर डेवलपर किट (एज़ूर एमएल एस.डी.के) का उपयोग करके। + +![प्रॉजेक्ट-स्कीमा](../19-Azure/images/project-schema.PNG) + +### विषय + +1. [डेटा साइंस के लिए क्लाउड का उपयोग क्यों करें?](../17-Introduction/README.md) +2. [क्लाउड में डेटा साइंस: "लो कोड/नो कोड" तरीका](../18-Low-Code/README.md) +3. [क्लाउड में डेटा साइंस: "एज़ूर एमएल एस.डी.के" तरीका](../19-Azure/README.md) + +### आभार सूची +ये पाठ [मौड लेवी](https://twitter.com/maudstweets) और [टिफ़नी सॉटर्रे](https://twitter.com/TiffanySouterre) द्वारा ☁️ और 💕 के साथ लिखे गए थे। + +हार्ट फेल्योर प्रेडिक्शन प्रोजेक्ट के लिए डेटा [कागल](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) पर [लारक्सेल](https://www.kaggle.com/andrewmvd) से प्राप्त किया गया है। इसे [एट्रिब्यूशन 4.0 इंटरनेशनल (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस दिया गया है। \ No newline at end of file From ce293650bddd05f67f9b44b2b1aa047e234f8764 Mon Sep 17 00:00:00 2001 From: Izael Date: Mon, 11 Oct 2021 10:25:55 -0300 Subject: [PATCH 056/254] Translated Introduction -> Ethics to PT-BR --- .../02-ethics/translations/RAEDME.pt-br.md | 262 ++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 1-Introduction/02-ethics/translations/RAEDME.pt-br.md diff --git a/1-Introduction/02-ethics/translations/RAEDME.pt-br.md b/1-Introduction/02-ethics/translations/RAEDME.pt-br.md new file mode 100644 index 00000000..ec921d8f --- /dev/null +++ b/1-Introduction/02-ethics/translations/RAEDME.pt-br.md @@ -0,0 +1,262 @@ +# Introdução a Ética de Dados + +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/02-Ethics.png)| +|:---:| +| Ética em Ciência de Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +--- + +Nós somos todos cidadãos dos dados vivendo em um mundo de dados. + +Tendências do mercado nos mostram que até 2022, 1 em 3 grandes organizações irá comprar e vender seus dados através de [Marketplaces e Exchanges](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/) online. Como **Desenvolvedores de Aplicativos**, nós vamos achar mais fácil e mais barato integrar insights baseados em dados e automações baseadas em algoritmos nas experiências diárias dos usuário. Mas conforme IA se torna mais difundida, nós também vamos precisar entender os danos potenciais causado pelo uso desses algoritmos [como uma arma](https://www.youtube.com/watch?v=TQHs8SA1qpk). + +Tendências também indicam que nós vamos criar e consumir mais de [180 zettabytes](https://www.statista.com/statistics/871513/worldwide-data-created/) de dados em 2025. Como **Cientistas de Dados**, isso nos dará níveis de acesso sem precedentes à dados pessoais. Isso significa que poderemos construir perfis comportamentais dos usuário e influenciar tomadas de decisão de uma forma que crie a [ilusão da livre escolha](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) enquanto potencialmente direcionando os usuários na direção do resultado que nós preferimos. Isso também levanta questões mais amplas sobre privacidade dos dados e proteção dos usuários. + +Ética dos dados é agora um _guarda-corpos necessário_ para ciẽncia de dados e engenharia, nos ajudando a minimizar potenciais danos e consequências não intencionas das nossas ações realizadas com base em dados. O [Gartner Hype Cycle for AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) identifica tendências relevantes ná ética digital, IAs responsáveis, e governanças de IA como principais impulsionadores para grandes mega tendências sobre _democratização_ e _industrialização_ da IA. + +![Gartner's Hype Cycle for AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +Nessa aula, nós vamos explorar a área fascinante de ética dos dados - desde conceitos essenciais e desafios, para estudos de caso e conceitos de IA aplicados como governança - isso ajuda a estabelecer a cultura da ética nos times e organizações que trabalham com dados e IA. + + + + +## [Quiz pré aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/2) 🎯 + +## Definição Básica + +Vamos começar entendendo o básico da terminologia. + +A palavra "ética" vem da [palavra Grega "ethikos"](https://en.wikipedia.org/wiki/Ethics) (e sua raíz "ethos") que significa _caráter ou natureza moral_. + +**Ética** é sobre os valores e princípios morais compartilhados que governam o nosso comportamento em sociedade. Ética é baseada não nas leis mas nas normas amplamente aceitas sobre o que é "certo vs. errado". No entanto, considerações éticas podem influenciar iniciativas de governança corporativa e regulamentações governamentais que criam mais incentivos para conformidade (compliance). + +**Ética de Dados** é uma [nova ramificação da ética](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) que "estuda e avalia problemas morais relacionados a _dados, algoritmos e práticas correspondentes_". Aqui, **"dados"** focam nas ações relacionadas a geração, gravação, curadoria, disseminação de processamento, compartilhamento, e uso, **"algoritmos"** focam em IA, agentes, aprendizado de máquina, e robôs, e **"práticas"** focam em tópicos como inovação responsável, programação, hacking e códigos de ética. + +**Ética Aplicada** é a [aplicação prática de considerações morais](https://en.wikipedia.org/wiki/Applied_ethics). É o processo de investigar ativamente problemáticas éticas no contexto de _ações do mundo real, produtos e processos_, e tomar medidas corretivas para fazer com que esses permanecam alianhados com o nossos valores éticos definidos. + +**Cultura Ética** é sobre [operacionalizar a ética aplicada](https://hbr.org/2019/05/how-to-design-an-ethical-organization) para garantir que nossos princípios e práticas éticas sejam adotados de maneira consistente e escalável em toda a organização. Culturas éticas de sucesso definem princípios éticos em toda a organização, fornecem incentivos significativos para consistência, e reinforça as normas éticas encorajando e amplificando comportmentos desejados em todos os níveis da organização. + + +## Conceitos Éticos + +Nessa seção, nós vamos discutir conceitos como **valores compartilhados** (princípios) e **desafios éticos** (problemas) para a ética de dados - e explorar **estudos de caso** que ajudam você a entender esses conceitos em contextos do mundo real. + +### 1. Princípios Éticos + +Toda estratégia de ética de dados começa definindo _pricípios éticos_ - os "valores compartilhados" que descrevem comportamentos aceitáveis, e guia ações complacentes, nos nossos dados e nos projetos de IA. Você pode definir eles individualmente ou com um time. No entando, a maioria das grandes organizações descreve eles em uma declaração de missão ou de estrutura de _IA ética_ que é definida em níveis corporativos e aplicadas consistentemente em todos os times. + +**Exemplo:** a declaração de missão da [IA responsável](https://www.microsoft.com/pt-br/ai/responsible-ai?activetab=pivot1:primaryr6) da Microsoft afirma: _"Estamos comprometidos com o avanço da AI impulsionados por princípios éticos que colocam as pessoas em primeiro lugar."_ - identificando 6 princípios éticos na estrutura abaixo: + +![IA Responśavel na Microsoft](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +Vamos explorar brevemente esses princípios. _Transparência_ e _responsabilidade_ são valores fundamentais nos quais outros princípios construíram sobre - então vamos começar aí: + +* [**Responsabilidade**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) torna os profissionais _responsáveis_ pelos seus dados e operações da IA, e conformidade (compliance) com esses princípios éticos. +* [**Transparência**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) garante que os dados e as ações da IA são _compreesíveis_ (interpretáveis) para os usuários, explicando o que e o porquê por trás de cada decisão. +* [**Justiça**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - foca em garantir que a IA _trate_ todas as pessoas de forma justa, abordando quaisquer preconceitos sociotécnicos implícitos ou sistêmicos nos dados e sistemas. +* [**Confiabilidade e Segurança**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - garante que a IA comporte de maneira _consistente_ com os valores definidos, minimizando potenciais danos ou consequências não pretendidas. +* [**Segurança e Privacidade**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - é sobre compreender as linhagem dos dados, e fornecer _privacidade de dados e proteções relacionadas_ aos usuários. +* [**Inclusão**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - é sobre projetar soluções de IA com intenção, adaptando elas para atender uma _vasta game de necessidades humanas_ & capacidades. + +> 🚨 Pense sobre qual poderia ser a frase de missão da sua ética de dados. Explore estruturas éticas de IA de outras organizações - aqui estão alguns exemplos da [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles), e [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). Quais valores compartilhados vocês tem em comum? Como esses princípios se relacionam ao produto de IA ou à indústria na qual eles operam? + +### 2. Desafios de Ética + +Uma vez que nossos princípios éticos estão definidos, o próximo passo é avaliar nossos dados e ações da IA para ver se eles estão alinhados com aqueles valores compartilhados. Pense sobre suas ações em duas categorias: _coleção de dados_ e _design de algoritmo_. + +Com coleções dados, ações irão, provavelmente, envolver **dados pessoais** ou informação pessoalmente identificável (do Inglês, personally identifiable information, ou PII) para indivíduos vivos identificáveis. Isso inclui [itens diversos de dados não pessoais](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) que _coletivamente_ identificam um indivíduo. Desafios éticos podem estar relacionados à _privacidade dos dados_, _qualidade dos dados_, e tópicos relacionados como _consentimento informado_ e _direitos de propriedades intelectuais_ para os usuários. + +Com o design de algoritmo, as ações envolverão coleta e curadoria dos **datasets**, e então o uso deles para treinar e implantar **modelos de dados** que predizem resultados ou automatizam decisões em contextos do mundo real. Desafios éticos podem surgir de _vieses do dataset_ (biases), problemas com a _qualidade de dados_, _injustiça_, e _má representação_ nos algoritmos - incluindo alguns problemas que são sistêmicos na natureza. + +Em ambos os casos, desafios de ética destacam áreas onde nossas ações podem conflitar com nossos valores compartilhados. Para detectar, mitigar, minimizar, ou eliminar, essas preocupações - nós precisamos perguntar questões morais de "sim ou não" relacionadas as nossas ações, e então tomar uma ação corretiva conforme necessário. Vamos olhar alguns desafios éticos e as questões morais que eles levantam: + + +#### 2.1 Propriedade de Dados + +A coleta de dados geralmente envolve dados pessoais que podem identificar os titulares dos dados. [Propriedade de dados](https://permission.io/blog/data-ownership) é sobre o _controle_ e [_direitos dos usuários_](https://permission.io/blog/data-ownership) relacionados à criação, processamento, e disseminação dos dados. + +As questões morais que precisamos nos perguntar são: + * Quem detêm/possui os dados? (usuário ou organização) + * Quais direitos os titulares dos dados tem? (ex: acesso, apagar, portabilidade) + * Quais direitos as organizações tem? (ex: retificar reviews maliciosas de usuários) + +#### 2.2 Consentimento Informado + +[Consentimento Informado](https://legaldictionary.net/informed-consent/) define o ato dos usuários aceitar uma ação (como a coleta de dados) com um _compreendimento total_ de fatos relevantes incluindo propósito, potenciais riscos, e alternativas. + +Questões a se explorar aqui são: + * O usuário (titular dos dados) deu permissão para a captação e uso dos dados? + * O usuário entendeu o propósito para o qual aqueles dados foram coletados? + * O usuário entendeu os potenciais riscos de sua participação? + +#### 2.3 Propriedade Intelectual + +[Propriedade intelectual](https://en.wikipedia.org/wiki/Intellectual_property) se refere a criações intangíveis que foram resultados das iniciativas humanas, que podem _ter valor econômico_ para indivíduos ou negócios. + +Questões a se explorar aqui são: + * Os dados coletados tem valor econômicos para um usuário ou negócio? + * O **usuário** tem propriedade intelectual aqui? + * As **organizações** tem propriedade intelectual aqui? + * Se esses direitos existem, como estamos protejendo eles? + +#### 2.4 Privacidade de Dados + +[Privacidade de dados](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) ou privacidade da informação se refere a preservação da privacidade do usuário e proteção da identidade do usuário com relação as informações de indentificação pessoal. + +Questões a se explorar aqui são: + * Os dados (pessoais) dos usuários estão protegidos contra hacks e vazamentos? + * Os dados do usuário são acessíveis somente a usuários e contextos autorizados? + * A anonimidade do usuário são preservados quando os dados são compartilhados ou disseminados? + * Um usuário podem ser desindentificado de datasets anônimos? + + +#### 2.5 Direito a Ser Esquecido + +o [Direito a Ser Esquecido](https://en.wikipedia.org/wiki/Right_to_be_forgotten) ou [Direito de Apagar](https://www.gdpreu.org/right-to-be-forgotten/) fornecem proteções de dados adicionais para os usuários. Especificamente, dá aos usuários o direito de pedir deleção ou remoção dos dados pessoais das buscas da Internet e outros locais, _sobre circunstâncias específicas_ - permitindo a eles um novo começo online sem que as ações passadas sejam colocadas contra eles. + +Questões a se explorar aqui são: + * O sistema permite que os titulares dos dados peçam o apagamento dos mesmos? + * A retirada do consentimento do usuário deve acionar um apagamento automático? + * Dados foram colocados sem o consentimento ou por meios ilegais? + * Estamos de acordo com regulações governamentais para a privacidade de dados? + + +#### 2.6 Viéses dos Datasets + +Dataset ou [Viéses da Coleção](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) é sobre selecionar um subset de dados _não representativos_ para o desenvolvimento de um algoritmo, criando potenciais injustiças nos resultados para grupos diversos. Os tipos de viéses incluem seleção ou viés da amostra, viés voluntário, e viés do instrumento. + +Questões a se explorar aqui são: + * Recrutamos um conjunto representativo de titulares de dados? + * Nós testamos nossos datasets colecionados ou com curadoria para diversos viéses? + * Nós podemos mitigar ou remover quaisquer viéses descobertos? + +#### 2.7 Qualidade de Dados + +[Qualidade de Dados](https://lakefs.io/data-quality-testing/) procura pela validade do dataset com curadoria usado para desenvolver nossos algoritmos, checando para ver se recursos e registros atendem os requisitos para o nível de acurácia e consistência necessários para o propósito da nossa IA. + +Questões a se explorar aqui são: + * Nós coletamos _features_ válidos para nosso caso de uso? + * Os dados foram coletados _consistentemente_ em diversas fontes de dados? + * O dataset é _completo_ para diversas condições e cenários? + * As informações capturadas refletem _com precisão_ a realidade? + +#### 2.8 Justiça do Algoritmo + +[Justiça do Algoritmo](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) checa para ver se o design do algoritmo discrimina sistematicamente subgrupos específicos dos titulares dos dados levando a [potenciais danos](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) em _alocação_ (onde recursos são negados ou detidos daquele grupo) e _qualidade de serviço_ (onde IA não é tão acurada para alguns subgrupos quanto é para outros). + +Questões a se explorar aqui são: + * Nós avaliamos a acurácia do modelo para diversos subgrupos e condições? + * Nós examinamos o sistema em busca de danos potenciais (ex. estereótipos)? + * Nós podemos revisar os dados ou retreinar os modelos para mitigar danos identificados? + +Explore recursos como [Checklist de Justiça de IA](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) para saber mais. + +#### 2.9 Má Representação + +[Má Representação dos Dados](https://www.sciencedirect.com/topics/computer-science/misrepresentation) é sobre perguntar se nós estamos comunicando insights de dados honestamente relatados de uma maneira enganosa para suportar uma narrativa desejada. + +Questões a se explorar aqui são: + * Estamos relatando dados completos ou inacurados? + * Estamos visualizando dados de uma maneira que conduz a uma conclusão errada? + * Estamos usando técnicas estatísticas seletivas para manipular os resultados? + * Existem explicações alternativas que podem oferecer uma conclusão diferente? + +#### 2.10 Livre Escolha +A [Ilusão da Livre Escolha](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) ocorre quando as "arquiteturas de escolha" do sistema utiliza algoritmos de tomada de decisão para incentivar as pessoas a obterem um resultado preferido enquanto parece lhe dar opções e controle. Esses [dark patterns](https://www.darkpatterns.org/) podem causar danos sociais e econômicos aos usuários. Já que as decisões do usuário impactam perfis de comportamento, essas ações potencialmente conduzem as escolhas futuras que podem aplificar ou extender o impacto desses danos. + +Questões a se explorar aqui são: + * O usuário entende as implicações de fazer aquela escolha? + * O usuário estava ciente das escolhas (alternativas) e dos prós e contras de cada uma? + * O usuário pode reverter um escolha automatizada ou influenciada depois? + +### 3. Estudo de Casos + +Para colocar esses desafios éticos em contextos do mundo real, ajuda olhar para estudo de casos que destacam potenciais danos e consequências para indivíduos e sociedade, quando essas violações éticas são negligenciadas. + +Aqui estão alguns exemplos: + +| Desafios de Éticas | Estudo de Caso | +|--- |--- | +| **Consentimento Informado** | 1972 - [Tuskegee Syphillis Study](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - Homens afro-americanos que participaram no estudo foram prometidos cuidados médicos livres de custo _mas foram enganados_ pelos pesquisadores que não informaram os participantes de seus diagnósticos ou sobre a avaliabilidade de tratamentos. Muitos participantes morreram e parceiros e ciranças foram afetados; oe studo durou por 40 anos. | +| **Privacidade de Dados** | 2007 - O [Netflix data prize](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) forneceu a pesquisadores _10M de avaliações anônimas de filmes de 50K clientes_ para ajudar a melhorar os algoritmos de recomendação. No entanto, os pesquisadores conseguiram correlacionar os dados anônimos com dados de identificação pessoal em _datasets externos_ (ex. comentários no IMDb) - "desanonimizando" efetivamente alguns assinates da Netflix.| +| **Viéses dos Datasets** | 2013 - A Cidade de Boston [desenvolveu Street Bump](https://www.boston.gov/transportation/street-bump), um aplicativo que deixa os usuários relatarem burcos nas ruas, dando à cidade melhores dados rodoviários para encontrar e consertar problemas. No entanto, [pessoas que faziam parte de grupos de baixa renda tinham menos acesso a carros e celulares](https://hbr.org/2013/04/the-hidden-biases-in-big-data), fazendo com que os seus problema rodoviários fossem invisíveis nesse aplicativo. Desenvolvedores trabalharm com acadêmicos para questões de _acesso equitativo e divisões digitais_ para justiça. | +| **Justiça do Algoritmo** | 2018 - [O Gender Shades Study do MIT](http://gendershades.org/overview.html) avaliou a acurácia de produtos de IA de classificação de gêneros, expondo lacunas na acurácia para mulheres e pessoas não brancas. Um [Apple Card de 2019](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) parece oferecer menos créditos para mulheres do que oferece para homens. Ambos ilustraram questões de viés algorítmico levando a danos socioeconômicos.| +| **Má Representação de Dados** | 2020 - O [Departamento de Sáude Pública da Georgia (Georgia Department of Public Health) liberou gráficos da COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) que aparentam a levar os cidadãos a conclusões errôneas sobre as tendências em casos confirmados em uma ordem não cronológica no eixo x. Isso ilustra a má representação atráves de truques de visualização. | +| **Ilusão da Livre Escolha** | 2020 - Aplicativo de aprendizado [ABCmouse pagou $10M para resolver uma reclamação do FTC](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) onde os pais foram enganados a pagar assinaturas que eles não podiam cancelar. Isso ilustra "dark patterns" em arquiteturas de escolha, onde usuários foram direcionados a escolhas potencialmente prejudiciais. | +| **Privacidade de Dados & Direitos do Usuário** | 2021 - [Violação de Dados do facebook](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) expôs dados de mais de 530M de usuários, resultando em um acordo de $5B com o FTC (Federal Trade Commission). No entanto, o Facebook se recusou a notificar os usuários sobre a violação dos dados violando os direitos dos usuários de transparência e acesso de dados. | + +Gostaria de explorar mais estudos de caso? Confira: +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - dilemas éticos em indústrias diversas. +* [Data Science Ethics course](https://www.coursera.org/learn/data-science-ethics#syllabus) - estudos de caso marcantes explorados. +* [Where things have gone wrong](https://deon.drivendata.org/examples/) - checklists da deon com exemplos + +> 🚨 Pense sobre estudos de caso que você ja viu - você ja experienciou, ou foi afetado por, um desafio ético similar em sua vida? Voce consegue pensar em pelo menos um estudo de caso que ilustre um ou mais desafios éticos que discutimos nessa seção? + +## Ética aplicada + +Nós falamos sobre conceitos de éticas, desafios, e casos de estudo em contextos do mundo real. Mas como nós começamos a _aplicar_ esses princípios éticos em nossos projetos? E como nós _operacionalizamos_ essas práticas para melhor governância? Vamos explorar algumas soluções do mundo real: + +### 1. Códigos Profissionais + +Códigos Profisionais oferecem uma opção para organizações para "incentivar" membros a apoiar os princípios éticos e frase de missão. Códigos são _diretrizes morais_ para comportamento profissional, ajudando funcionários ou membros a tomar decisões que alinhem com os princípios da sua organização. Eles são tão bons quanto a conformidade voluntária dos membros; no entanto, muitas organizações oferecem recompensas e penalidades adicionais para motivar a conformidade dos membros. + +Exemplos incluem: + + * [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) Código de Ética + * [Data Science Association](http://datascienceassn.org/code-of-conduct.html) Código de Conduta (criado em 2013) + * [ACM Code of Ethics and Professional Conduct](https://www.acm.org/code-of-ethics) (desde 1993) + +> 🚨 Você faz parte de uma organização profissional de engenharia ou de ciências de dados? Explore o site deles para ver se eles definem um código de ética profissional. O que diz sobre os princípios éticos deles? Como eles estão "incentivando" os membros a seguir o código? + +### 2. Checklists de Éticas + +Enquanto códigos profissionais definem _comportamentos ético_ requiridos de seus praticantes, eles [tem limitações conhecidas](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) na execução, particularmente em projetos de larga escala. Ao invés disso, muitos experts em Ciência de Dados [defendem as checklists](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), que podem **conectar princípios a práticas** de maneiras para determinísticas e acionáveis. + +Checklists convertem as questões em tarefas de "sim/não" que podem ser operacionalizadas, permitindo eles serem rastreados como parte dos fluxos de trabalho de liberação de produtos padrão. + +Exemplos incluem: + * [Deon](https://deon.drivendata.org/) - uma checklist de propósito gerak criado a partir de [recomendações da insústria](https://deon.drivendata.org/#checklist-citations) com uma ferramenta de linha de comando para fácil integração. + * [Privacy Audit Checklist](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - fornece orientação geral para práticas de manipulação de informação a partir de perspectivas de exposição legal e social. + * [AI Fairness Checklist](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - criado por praticantes de IA para apoiar a adoção e integração de verificações de justiça dentro dos ciclos de desenvolvimento de IA. + * [22 questions for ethics in data and AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - estrutura mais aberto-fechado, estrturado para exploração inicial de problemas éticos em contextos de design, implementação, e organizacional. + +### 3. Regulações Éticas + +Ética é sobre definir valores compartilhados e fazer a coisa certa _voluntariamente_. **Compliance (Conformidade)** é sobre _seguir a lei_ se e onde definida. **Governância** abrange amplamente todos as formas de como as organizações operam para garantir princípios éticos e cumprir as leis estabelecidas. + +Hoje, governância assume duas formas dentro das organizações. Primeira, é sobre definir princípios de **IA ética** e estabelecer práticas para operacionalizar a adoção em todos os projetos de IA na organização. Segundo, trata-se de cumprir com todos os **regulamentos de proteção de dados** para as regiões em que operam. + +Exemplos de proteção de dados e regulamentos de privacidade: + + * `1974`, [US Privacy Act](https://www.justice.gov/opcl/privacy-act-1974) - regula a coleta, o uso, e divulgação de informações pessoais por parte do _governo federal_. + * `1996`, [US Health Insurance Portability & Accountability Act (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - protege dados de sáude pessoais. + * `1998`, [US Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - protege a privacidade de dados de crianças menores de 13 anos de idade. + * `2018`, [General Data Protection Regulation (GDPR)](https://gdpr-info.eu/) - fornece direitos aos usuário, proteção de dados, e privacidade. + * `2018`, [California Consumer Privacy Act (CCPA)](https://www.oag.ca.gov/privacy/ccpa) dá aos consumidores mais _direitos_ sobre seus dados (pessoais). + * `2021`, [A Lei de Proteção de Informação Pessoal](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) da China acabou de ser passado, criando uma das regulações de privacidade de dados online mais forte do mundo. + +> 🚨 A GDPR (General Data Protection Regulation) da União Europia continua sendo umas das regulações de privacidade de dados mais influentes hoje em dia. Você sabia que a mesma também define [8 direitos dos usuário](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) para proteger a privacidade dos cidadãos e dados pessoais? Saiba mais sobre o que são e porque eles importam. + + +### 4. Cultura Ética + +Note que existe uma lacuna intangível entre _compliance_ (fazer o suficiente para cumprir a "a carta da lei") e abordar [problemas sistêmicos](https://www.coursera.org/learn/data-science-ethics/home/week/4) (como ossificação, assimetria informacional, e injustiça distribucional) que podem acelerar o uso da IA como uma arma. + +Este último requere [abordagens colaborativas para definir culturas éticas](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) que constrói conexões emocionais e valores compartilhados consistentes _em todas as organizações_ na indústria. Isso requere mais [culturas de ética de dados formalizadas](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) nas organizações - permitindo _qualquer um_ a [puxar o cordão Andom](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (para aumentar as preocupações éticas mais cedo no processo) e fazendo _avaliações éticas_ (ex. na contratação) um critério fundamental na formação de times em projetos de IA. + +--- +## [Quiz pós aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/3) 🎯 +## Revisão e Autoestudo + +Cursos e livros ajudam a entender os conceitos essencias da ética, enquanto estudos de caso e ferramentas ajudam com práticas da ética aplicado em contextos do mundo real. Aqui estão alguns recursos para começar. + +* [Machine Learning For Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - aula sobre Justiça, da Microsoft. +* [Principles of Responsible AI](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - programa de aprendizado gratuito da Microsoft Learn. +* [Ethics and Data Science](https://resources.oreilly.com/examples/0636920203964) - O'Reilly EBook (M. Loukides, H. Mason et. al) +* [Data Science Ethics](https://www.coursera.org/learn/data-science-ethics#syllabus) - curso online da Universidade de Michigan. +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - estudos de caso da Universidade do Texas. + +# Tarefa + +[Escreva um Caso de Uso de Ética de Dados](assignment.md) From 27898fa02ffa2479953ada0d367509a1ac0be629 Mon Sep 17 00:00:00 2001 From: Izael Date: Mon, 11 Oct 2021 12:00:53 -0300 Subject: [PATCH 057/254] Translated Introduction -> Defining Data to PT-BR --- .../translations/README.pt-br.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 1-Introduction/03-defining-data/translations/README.pt-br.md diff --git a/1-Introduction/03-defining-data/translations/README.pt-br.md b/1-Introduction/03-defining-data/translations/README.pt-br.md new file mode 100644 index 00000000..f76deed3 --- /dev/null +++ b/1-Introduction/03-defining-data/translations/README.pt-br.md @@ -0,0 +1,67 @@ +# Definindo Dados + +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/03-DefiningData.png)| +|:---:| +|Definindo Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +Dados são fatos, informações, observações e medidas que são usadas para fazer descobertas e apoiar decisões informadas. Um ponto de dado é uma unidade única dentro de um dataset, que é uma coleção de pontos de dados. Datasets podem vir em diferentes formatos e estruturas, e normalmente será baseado em sua fonte, ou de onde os dados vieram. Por exemplo, os ganhos mensais de uma empresa podem estar em uma planilha mas a frequência cardíaca (por hora) de um smartwatch pode estar em formato [JSON](https://stackoverflow.com/a/383699). É comum para cientistas de dados terem que trabalhar com diferentes tupos de dados em um dataset. + +Essa aula irá focar em identificar e classificar dados baseados em sua características e fontes. + +## [Quiz Pré Aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) +## Como Dados são Descritos +**Dados Brutos (Raw data)** são dados que vieram em seu estado inicial de sua fonte e não foram analisados ou organizados. Para entender o que está acontecendo com um conjunto de dados, é necessário organizar os dados em uma formato que possa ser entendido pelos humanos e também pela tecnologia que pode ser usada para analisar os mesmos. A estrutura do dataset descreve como estão organizados e pode ser classificada em estruturada, não estruturada e semi estruturada. Esses tipos de estruturas irão variar, dependendo da fonte mas irão ultimamente se encaixar nessas categorias. + +### Dados Qualitativos +Dados qualitativos, também conhecidos como dados categóricos são dados que não podem ser medidos objetivamente como observações de dados quantitativos. São geralmente vários formatos de dados subjetivos que coletam a qualidade de algo, como um produto ou processo. Algumas vezes, dados qualitativos são numéricos e tipicamente não seriam usados matematicamente, como números de telefones e marcas de tempo. Alguns exemplos de dados qualitativos são: comentários de vídeos, a marca e modelo de um carro e a cor favorita do seu melhor amigo. Dados qualitativos podem ser usados para entender quais produtos os consumidores mais gostam ou identificar palavras-chaves populares em cúrriculos para aplicação em uma vaga de trabalho. + +### Dados Estruturados +Dados estruturados são dados que estão organizados em linhas e colunas, onde cada linha tem a mesma quantidade de colunas. Colunas representam um valor de um tipo particular e são identificadas com um nome descrevendo o que aquele valor representa, enquanto cada linha contém o valor. Colunas geralmente vão possuir um conjunto específico de regras e restrições nesses valores, para garantir que os valores representam precisamente a coluna. Por exemplo, imagine uma planilha de clientes onde cada linha deve ter um número de telefone e o mesmo nunca pode conter caractéres alfabéticos. Podem existir regras aplicadas na coluna do número de telefone para garantir que nunca esteja vazio e contenha apenas números. + +Um benefício de dados estruturados é que podem ser organizados de uma forma que pode ser relacionada a um outro dado estruturado. No entanto, devido ao fato dos dados serem feitos para serem organizados de uma forma específica, fazer mudanças na estrutura em geral pode requerer muito esforço. Por exemplo, adicionar uma coluna de email na planilha de clientes que não pode ser vazia, significa que você terá que decidir como você irá adicionar os valores nas linhas já existentes no dataset. + +Exemplos de dados estruturados: planilhas/spreadsheets, bancos de dados relacionais, números de telefone, extratos bancários + +### Dados Não Estruturados +Dados não estruturados tipicamente não podem ser categorizado em linhas e colunas e não possuem um formato ou um conjunto de regras a ser seguido. Devido ao fato de dados não estruturados possuirem menos restrições na sua estrutura é mais fácil adicionar novas informações quando comparados com um dataset estruturado. Se um sensor que coleta dados de pressão bariométrica a cada 2 minutos recebeu uma atualização que agora permite que o mesmo meça e grave a temperatura, não é preciso alterar os dados já existentes se eles são não estruturados. No entanto, isso pode fazer com que a análise ou investigação desses dados leve mais tempo. Por exemplo, um cientista que quer descobrir a temperatura média do mês passado a partir dos dados do sensor, mas descobre que o sensor gravou um "e" em alguns dados gravados indicando que estava quebrado ao invés de um número típico, o que significa que os dados estão incompletos. + +Exemplos de dados não estruturados: arquivos de texto, mensagens de texto, arquivo de vídeo + +### Dados Semi Estruturados +Dados semi estruturados possui recursos que o fazem ser uma combinação de dados estruturados e não estruturados. Tipicamente não está em conformidade com linhas e colunas mas estão organizados de uma forma que são considerados estruturados e podem seguir um formato fizo ou um conjunto de regras. A estrutura pode variar entre as fontes, desde uma hierarquia bem definida até algo mais flexível que permite uma fácil integração de novas informação. Metadados são indicadores que ajudam a decidir como os dados são organizados e armazenados e terão vários nomes, baseado no tipo de dado. Alguns nomes comuns para metadados são tags, elementos, entidades e atributos. Por exemplo, uma mensaem de email típica terá um assunto, corpo e um conjunto de recipientes e podem ser organizados por quem ou quando foi mandado. + +Exemplos de dados não estruturados: HTML, arquivos CSV, JavaScript Object Notation (JSON) + +## Fontes de Dados + +Uma fonte de dados é o local inicial onde os dados foram gerados, ou onde "vivem" e irá variar com base em como e quando foram coletados. Dados gerados por seus usuários são conhecidos como dados primários enquanto dados secundários vem de uma fonte que coletou os dados para uso geral. Por exemplo, um grupo de cientistas fazendo observações em uma floresta tropical seriam considerados dados primários e se eles decidirem compartilhar com outros cientistas seriam considerados dados secundários para aqueles que usarem. + +Banco de dados são fontes comuns e dependem de um sistema de gerenciamente de banco de dados para hospedar e manter os dados onde usuários usam comandos chamados de "queries" para explorar os dados. Arquivos como fonte de dados podem ser aúdio, imagens, e arquivos de vídeo assim como planilhas como o Excel. Fontes da internet são lugares comuns para hospedar dados, onde banco de dados e arquivos podem ser encontrados. Application programming interfaces, ou APIs, permitem programadores a criarem formas de compartilhar dados com usuários externos através da interet, enquanto processos de "web scraping" extrai dados de uma página da web. As [tarefas em Trabalhando com Dados](/2-Working-With) focam em como usar várias fontes de dados. + +## Conclusão + +Nessa aula nós aprendemos: + +- O que são dados +- Como dados são descritos +- Como dados são classificados e categorizados +- Onde os dados podem ser encontrados + +## 🚀 Desafio + +O Kaggle é uma excelente fonte para datasets abertos. Use a [ferramenta de busca de dataset](https://www.kaggle.com/datasets) para encontrar alguns datasets interessantes e classificar de três a cinco datasets com esses critérios: + +- Os dados são quantitativos ou qualitativos? +- Os dados são estruturados, não estruturados, ou semi estruturados? + +## [Quiz Pós Aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/5) + + + +## Revisão e Auto Estudo + +- Essa unidade do Microsoft Lean, entitulada [Classifique seus Dados (Classify your Data)](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) tem uma análise detalhada de dados estruturados, semi estruturados, e não estruturados. + +## Tarefa + +[Classificando Datasets](assignment.md) From f49f9312e170d95e8da23baa652399e711a22f90 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Mon, 11 Oct 2021 15:33:27 -0400 Subject: [PATCH 058/254] editing tracking code for Dmitry to 'academic' --- .../01-defining-data-science/README.md | 18 ++-- 2-Working-With-Data/07-python/README.md | 90 +++++++++---------- .../07-python/notebook-papers.ipynb | 2 +- 3 files changed, 55 insertions(+), 55 deletions(-) diff --git a/1-Introduction/01-defining-data-science/README.md b/1-Introduction/01-defining-data-science/README.md index bedbb1e7..ca25810d 100644 --- a/1-Introduction/01-defining-data-science/README.md +++ b/1-Introduction/01-defining-data-science/README.md @@ -1,8 +1,8 @@ # Defining Data Science -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png)| -|:---:| -|Defining Data Science - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png) | +| :----------------------------------------------------------------------------------------------------: | +| Defining Data Science - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | --- @@ -69,11 +69,11 @@ Vast amounts of data are incomprehensible for a human being, but once we create As we have already mentioned - data is everywhere, we just need to capture it in the right way! It is useful to distinguish between **structured** and **unstructured** data. The former are typically represented in some well-structured form, often as a table or number of tables, while latter is just a collection of files. Sometimes we can also talk about **semistructured** data, that have some sort of a structure that may vary greatly. -| Structured | Semi-structured | Unstructured | -|----------- |-----------------|--------------| -| List of people with their phone numbers | Wikipedia pages with links | Text of Encyclopaedia Britannica | -| Temperature in all rooms of a building at every minute for the last 20 years | Collection of scientific papers in JSON format with authors, data of publication, and abstract | File share with corporate documents | -| Data for age and gender of all people entering the building | Internet pages | Raw video feed from surveillance camera | +| Structured | Semi-structured | Unstructured | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------- | +| List of people with their phone numbers | Wikipedia pages with links | Text of Encyclopaedia Britannica | +| Temperature in all rooms of a building at every minute for the last 20 years | Collection of scientific papers in JSON format with authors, data of publication, and abstract | File share with corporate documents | +| Data for age and gender of all people entering the building | Internet pages | Raw video feed from surveillance camera | ## Where to get Data @@ -107,7 +107,7 @@ First step is to collect the data. While in many cases it can be a straightforwa Storing the data can be challenging, especially if we are talking about big data. When deciding how to store data, it makes sense to anticipate the way you would want later on to query them. There are several ways data can be stored:
  • Relational database stores a collection of tables, and uses a special language called SQL to query them. Typically, tables would be connected to each other using some schema. In many cases we need to convert the data from original form to fit the schema.
  • -
  • NoSQL database, such as CosmosDB, does not enforce schema on data, and allows storing more complex data, for example, hierarchical JSON documents or graphs. However, NoSQL database does not have rich querying capabilities of SQL, and cannot enforce referential integrity between data.
  • +
  • NoSQL database, such as CosmosDB, does not enforce schema on data, and allows storing more complex data, for example, hierarchical JSON documents or graphs. However, NoSQL database does not have rich querying capabilities of SQL, and cannot enforce referential integrity between data.
  • Data Lake storage is used for large collections of data in raw form. Data lakes are often used with big data, where all data cannot fit into one machine, and has to be stored and processed by a cluster. Parquet is the data format that is often used in conjunction with big data.
diff --git a/2-Working-With-Data/07-python/README.md b/2-Working-With-Data/07-python/README.md index 53e4bc84..ab1d209b 100644 --- a/2-Working-With-Data/07-python/README.md +++ b/2-Working-With-Data/07-python/README.md @@ -1,8 +1,8 @@ # Working with Data: Python and the Pandas Library -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png)| -|:---:| -|Working With Python - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | +| :-------------------------------------------------------------------------------------------------------: | +| Working With Python - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | [![Intro Video](images/video-ds-python.png)](https://youtu.be/dZjWOGbsN4Y) @@ -16,7 +16,7 @@ Data processing can be programmed in any programming language, but there are cer In this lesson, we will focus on using Python for simple data processing. We will assume basic familiarity with the language. If you want a deeper tour of Python, you can refer to one of the following resources: * [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - GitHub-based quick intro course into Python Programming -* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=acad-31812-dmitryso) Learning Path on [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=acad-31812-dmitryso) +* [Take your First Steps with Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-31812-dmitryso) Learning Path on [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-31812-dmitryso) Data can come in many forms. In this lesson, we will consider three forms of data - **tabular data**, **text** and **images**. @@ -97,10 +97,10 @@ b = pd.Series(["I","like","to","play","games","and","will","not","change"],index df = pd.DataFrame([a,b]) ``` This will create a horizontal table like this: -| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -|---|---|---|---|---|---|---|---|---|---| -| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -| 1 | I | like | to | use | Python | and | Pandas | very | much | +| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +| 1 | I | like | to | use | Python | and | Pandas | very | much | We can also use Series as columns, and specify column names using dictionary: ```python @@ -108,17 +108,17 @@ df = pd.DataFrame({ 'A' : a, 'B' : b }) ``` This will give us a table like this: -| | A | B | -|---|---|---| -| 0 | 1 | I | -| 1 | 2 | like | -| 2 | 3 | to | -| 3 | 4 | use | -| 4 | 5 | Python | -| 5 | 6 | and | -| 6 | 7 | Pandas | -| 7 | 8 | very | -| 8 | 9 | much | +| | A | B | +| --- | --- | ------ | +| 0 | 1 | I | +| 1 | 2 | like | +| 2 | 3 | to | +| 3 | 4 | use | +| 4 | 5 | Python | +| 5 | 6 | and | +| 6 | 7 | Pandas | +| 7 | 8 | very | +| 8 | 9 | much | **Note** that we can also get this table layout by transposing the previous table, eg. by writing ```python @@ -154,17 +154,17 @@ df['LenB'] = df['B'].apply(len) After operations above, we will end up with the following DataFrame: -| | A | B | DivA | LenB | -|---|---|---|---|---| -| 0 | 1 | I | -4.0 | 1 | -| 1 | 2 | like | -3.0 | 4 | -| 2 | 3 | to | -2.0 | 2 | -| 3 | 4 | use | -1.0 | 3 | -| 4 | 5 | Python | 0.0 | 6 | -| 5 | 6 | and | 1.0 | 3 | -| 6 | 7 | Pandas | 2.0 | 6 | -| 7 | 8 | very | 3.0 | 4 | -| 8 | 9 | much | 4.0 | 4 | +| | A | B | DivA | LenB | +| --- | --- | ------ | ---- | ---- | +| 0 | 1 | I | -4.0 | 1 | +| 1 | 2 | like | -3.0 | 4 | +| 2 | 3 | to | -2.0 | 2 | +| 3 | 4 | use | -1.0 | 3 | +| 4 | 5 | Python | 0.0 | 6 | +| 5 | 6 | and | 1.0 | 3 | +| 6 | 7 | Pandas | 2.0 | 6 | +| 7 | 8 | very | 3.0 | 4 | +| 8 | 9 | much | 4.0 | 4 | **Selecting rows based on numbers** can be done using `iloc` construct. For example, to select first 5 rows from the DataFrame: ```python @@ -183,13 +183,13 @@ df.groupby(by='LenB') \ ``` This gives us the following table: -| LenB | Count | Mean | -|------|-------|------| -| 1 | 1 | 1.000000 | -| 2 | 1 | 3.000000 | -| 3 | 2 | 5.000000 | -| 4 | 3 | 6.333333 | -| 6 | 2 | 6.000000 | +| LenB | Count | Mean | +| ---- | ----- | -------- | +| 1 | 1 | 1.000000 | +| 2 | 1 | 3.000000 | +| 3 | 2 | 5.000000 | +| 4 | 3 | 6.333333 | +| 6 | 2 | 6.000000 | ### Getting Data @@ -230,7 +230,7 @@ While data very often comes in tabular form, in some cases we need to deal with In this challenge, we will continue with the topic of COVID pandemic, and focus on processing scientific papers on the subject. There is [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) with more than 7000 (at the time of writing) papers on COVID, available with metadata and abstracts (and for about half of them there is also full text provided). -A full example of analyzing this dataset using [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=acad-31812-dmitryso) cognitive service is described [in this blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). We will discuss simplified version of this analysis. +A full example of analyzing this dataset using [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-31812-dmitryso) cognitive service is described [in this blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). We will discuss simplified version of this analysis. > **NOTE**: We do not provide a copy of the dataset as part of this repository. You may first need to download the [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) file from [this dataset on Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registration with Kaggle may be required. You may also download the dataset without registration [from here](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), but it will include all full texts in addition to metadata file. @@ -242,15 +242,15 @@ Open [`notebook-papers.ipynb`](notebook-papers.ipynb) and read it from top to bo Recently, very powerful AI models have been developed that allow us to understand images. There are many tasks that can be solved using pre-trained neural networks, or cloud services. Some examples include: -* **Image Classification**, which can help you categorize the image into one of the pre-defined classes. You can easily train your own image classifiers using services such as [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=acad-31812-dmitryso) -* **Object Detection** to detect different objects in the image. Services such as [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=acad-31812-dmitryso) can detect a number of common objects, and you can train [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=acad-31812-dmitryso) model to detect some specific objects of interest. -* **Face Detection**, including Age, Gender and Emotion detection. This can be done via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=acad-31812-dmitryso). +* **Image Classification**, which can help you categorize the image into one of the pre-defined classes. You can easily train your own image classifiers using services such as [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-31812-dmitryso) +* **Object Detection** to detect different objects in the image. Services such as [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-31812-dmitryso) can detect a number of common objects, and you can train [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-31812-dmitryso) model to detect some specific objects of interest. +* **Face Detection**, including Age, Gender and Emotion detection. This can be done via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-31812-dmitryso). -All those cloud services can be called using [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=acad-31812-dmitryso), and thus can be easily incorporated into your data exploration workflow. +All those cloud services can be called using [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-31812-dmitryso), and thus can be easily incorporated into your data exploration workflow. Here are some examples of exploring data from Image data sources: -* In the blog post [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) we explore Instagram photos, trying to understand what makes people give more likes to a photo. We first extract as much information from pictures as possible using [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=acad-31812-dmitryso), and then use [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=acad-31812-dmitryso) to build interpretable model. -* In [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) we use [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=acad-31812-dmitryso) to extract emotions on people on photographs from events, in order to try to understand what makes people happy. +* In the blog post [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) we explore Instagram photos, trying to understand what makes people give more likes to a photo. We first extract as much information from pictures as possible using [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-31812-dmitryso), and then use [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-31812-dmitryso) to build interpretable model. +* In [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) we use [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-31812-dmitryso) to extract emotions on people on photographs from events, in order to try to understand what makes people happy. ## Conclusion @@ -271,7 +271,7 @@ Whether you already have structured or unstructured data, using Python you can p **Learning Python** * [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) -* [Take your First Steps with Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=acad-31812-dmitryso) Learning Path on [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=acad-31812-dmitryso) +* [Take your First Steps with Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-31812-dmitryso) Learning Path on [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-31812-dmitryso) ## Assignment diff --git a/2-Working-With-Data/07-python/notebook-papers.ipynb b/2-Working-With-Data/07-python/notebook-papers.ipynb index 6bcd7053..c08b60eb 100644 --- a/2-Working-With-Data/07-python/notebook-papers.ipynb +++ b/2-Working-With-Data/07-python/notebook-papers.ipynb @@ -7,7 +7,7 @@ "\r\n", "In this challenge, we will continue with the topic of COVID pandemic, and focus on processing scientific papers on the subject. There is [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) with more than 7000 (at the time of writing) papers on COVID, available with metadata and abstracts (and for about half of them there is also full text provided).\r\n", "\r\n", - "A full example of analyzing this dataset using [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=acad-31812-dmitryso) cognitive service is described [in this blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). We will discuss simplified version of this analysis." + "A full example of analyzing this dataset using [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-31812-dmitryso) cognitive service is described [in this blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). We will discuss simplified version of this analysis." ], "metadata": {} }, From c61b3810a40ed66ce26b373a23f49ffe2d6dbaa1 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Mon, 11 Oct 2021 13:59:27 -0700 Subject: [PATCH 059/254] Delete pandas.ipynb --- 2-Working-With-Data/R/pandas.ipynb | 978 ----------------------------- 1 file changed, 978 deletions(-) delete mode 100644 2-Working-With-Data/R/pandas.ipynb diff --git a/2-Working-With-Data/R/pandas.ipynb b/2-Working-With-Data/R/pandas.ipynb deleted file mode 100644 index cb928833..00000000 --- a/2-Working-With-Data/R/pandas.ipynb +++ /dev/null @@ -1,978 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "304296e3", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Attaching package: 'dplyr'\n", - "\n", - "\n", - "The following objects are masked from 'package:stats':\n", - "\n", - " filter, lag\n", - "\n", - "\n", - "The following objects are masked from 'package:base':\n", - "\n", - " intersect, setdiff, setequal, union\n", - "\n", - "\n", - "-- \u001b[1mAttaching packages\u001b[22m ------------------------------------------------------------------------------- tidyverse 1.3.1 --\n", - "\n", - "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.5 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n", - "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.1.5 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n", - "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.4 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 0.5.1\n", - "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 2.0.2 \n", - "\n", - "-- \u001b[1mConflicts\u001b[22m ---------------------------------------------------------------------------------- tidyverse_conflicts() --\n", - "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n", - "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n", - "\n" - ] - } - ], - "source": [ - "library(dplyr)\n", - "library(tidyverse)" - ] - }, - { - "cell_type": "markdown", - "id": "d786e051", - "metadata": {}, - "source": [ - "## Series" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "f659f553", - "metadata": {}, - "outputs": [], - "source": [ - "a<- 1:9" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "9acc193d", - "metadata": {}, - "outputs": [], - "source": [ - "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f577ec14", - "metadata": {}, - "outputs": [], - "source": [ - "a1 = length(a)\n", - "b1 = length(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "31e069a0", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "29ce166e", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "markdown", - "id": "945feffd", - "metadata": {}, - "source": [ - "## DataFrame" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "88a435ec", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c4e2a6c1", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "2bb5177c", - "metadata": {}, - "outputs": [], - "source": [ - "df<- data.frame(a,b)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "8f45d3a5", - "metadata": {}, - "outputs": [], - "source": [ - "df = \n", - " rename(df,\n", - " A = a,\n", - " B = b,\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "0efbf2d4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" - ], - "text/latex": [ - "A data.frame: 9 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like \\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\t5 & 5 & Python\\\\\n", - "\t6 & 6 & and \\\\\n", - "\t7 & 7 & Pandas\\\\\n", - "\t8 & 8 & very \\\\\n", - "\t9 & 9 & much \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "| 5 | 5 | Python |\n", - "| 6 | 6 | and |\n", - "| 7 | 7 | Pandas |\n", - "| 8 | 8 | very |\n", - "| 9 | 9 | much |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like \n", - "3 3 to \n", - "4 4 use \n", - "5 5 Python\n", - "6 6 and \n", - "7 7 Pandas\n", - "8 8 very \n", - "9 9 much " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "88b51fdc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Column A (series):\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" - ], - "text/latex": [ - "A data.frame: 9 × 1\n", - "\\begin{tabular}{r|l}\n", - " & A\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t1 & 1\\\\\n", - "\t2 & 2\\\\\n", - "\t3 & 3\\\\\n", - "\t4 & 4\\\\\n", - "\t5 & 5\\\\\n", - "\t6 & 6\\\\\n", - "\t7 & 7\\\\\n", - "\t8 & 8\\\\\n", - "\t9 & 9\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 1\n", - "\n", - "| | A <int> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 5 | 5 |\n", - "| 6 | 6 |\n", - "| 7 | 7 |\n", - "| 8 | 8 |\n", - "| 9 | 9 |\n", - "\n" - ], - "text/plain": [ - " A\n", - "1 1\n", - "2 2\n", - "3 3\n", - "4 4\n", - "5 5\n", - "6 6\n", - "7 7\n", - "8 8\n", - "9 9" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cat(\"Column A (series):\\n\")\n", - "select(df,'A')" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "010bcba8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" - ], - "text/latex": [ - "A data.frame: 4 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like\\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 4 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like\n", - "3 3 to \n", - "4 4 use " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A<5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "082277db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\n", - "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" - ], - "text/latex": [ - "A data.frame: 1 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t6 & 6 & and\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 1 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 6 | 6 | and |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "6 6 and" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A>5 & df$A<7,]" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "0bbd19f8", - "metadata": {}, - "outputs": [], - "source": [ - "df$DivA <- df$A - mean(df$A)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "f36d96af", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" - ], - "text/latex": [ - "A data.frame: 9 × 3\n", - "\\begin{tabular}{r|lll}\n", - " & A & B & DivA\\\\\n", - " & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4\\\\\n", - "\t2 & 2 & like & -3\\\\\n", - "\t3 & 3 & to & -2\\\\\n", - "\t4 & 4 & use & -1\\\\\n", - "\t5 & 5 & Python & 0\\\\\n", - "\t6 & 6 & and & 1\\\\\n", - "\t7 & 7 & Pandas & 2\\\\\n", - "\t8 & 8 & very & 3\\\\\n", - "\t9 & 9 & much & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 3\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> |\n", - "|---|---|---|---|\n", - "| 1 | 1 | I | -4 |\n", - "| 2 | 2 | like | -3 |\n", - "| 3 | 3 | to | -2 |\n", - "| 4 | 4 | use | -1 |\n", - "| 5 | 5 | Python | 0 |\n", - "| 6 | 6 | and | 1 |\n", - "| 7 | 7 | Pandas | 2 |\n", - "| 8 | 8 | very | 3 |\n", - "| 9 | 9 | much | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA\n", - "1 1 I -4 \n", - "2 2 like -3 \n", - "3 3 to -2 \n", - "4 4 use -1 \n", - "5 5 Python 0 \n", - "6 6 and 1 \n", - "7 7 Pandas 2 \n", - "8 8 very 3 \n", - "9 9 much 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "c67f2bd0", - "metadata": {}, - "outputs": [], - "source": [ - "df$LenB <- str_length(df$B)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "cef214b2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" - ], - "text/latex": [ - "A data.frame: 9 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\t7 & 7 & Pandas & 2 & 6\\\\\n", - "\t8 & 8 & very & 3 & 4\\\\\n", - "\t9 & 9 & much & 4 & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "| 7 | 7 | Pandas | 2 | 6 |\n", - "| 8 | 8 | very | 3 | 4 |\n", - "| 9 | 9 | much | 4 | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 \n", - "7 7 Pandas 2 6 \n", - "8 8 very 3 4 \n", - "9 9 much 4 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "59fe5316", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" - ], - "text/latex": [ - "A data.frame: 5 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 5 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[0:5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "f944a949", - "metadata": {}, - "outputs": [], - "source": [ - " df1 = group_by(df,LenB)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "8ffd39cd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A tibble: 5 × 2
LenBmymean
<int><dbl>
11
22
33
44
66
\n" - ], - "text/latex": [ - "A tibble: 5 × 2\n", - "\\begin{tabular}{ll}\n", - " LenB & mymean\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t 1 & 1\\\\\n", - "\t 2 & 2\\\\\n", - "\t 3 & 3\\\\\n", - "\t 4 & 4\\\\\n", - "\t 6 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A tibble: 5 × 2\n", - "\n", - "| LenB <int> | mymean <dbl> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 6 | 6 |\n", - "\n" - ], - "text/plain": [ - " LenB mymean\n", - "1 1 1 \n", - "2 2 2 \n", - "3 3 3 \n", - "4 4 4 \n", - "5 6 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "summarise(df1,mymean =mean(LenB))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3b859950", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "5d3f0287", - "metadata": {}, - "source": [ - "## Printing and Plotting" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "69946dc7", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning message in file(file, \"rt\"):\n", - "\"cannot open file 'file name': No such file or directory\"\n" - ] - }, - { - "ename": "ERROR", - "evalue": "Error in file(file, \"rt\"): cannot open the connection\n", - "output_type": "error", - "traceback": [ - "Error in file(file, \"rt\"): cannot open the connection\nTraceback:\n", - "1. read.csv(\"file name\")", - "2. read.table(file = file, header = header, sep = sep, quote = quote, \n . dec = dec, fill = fill, comment.char = comment.char, ...)", - "3. file(file, \"rt\")" - ] - } - ], - "source": [ - "dataset = read.csv(\"file name\")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "009af652", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" - ], - "text/latex": [ - "A data.frame: 6 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 6 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "head(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "515c95b2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\n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\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "41b872c9", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\n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\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "barplot(df$A, ylab = 'A',xlab = 'no')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "11001454", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "670db495", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "4.1.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From ce53eb68b59c5609395e4b2bb00da85e8ffbaa70 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Mon, 11 Oct 2021 14:00:20 -0700 Subject: [PATCH 060/254] Create Notebook.ipynb --- 2-Working-With-Data/R/Notebook.ipynb | 2249 ++++++++++++++++++++++++++ 1 file changed, 2249 insertions(+) create mode 100644 2-Working-With-Data/R/Notebook.ipynb diff --git a/2-Working-With-Data/R/Notebook.ipynb b/2-Working-With-Data/R/Notebook.ipynb new file mode 100644 index 00000000..eec49104 --- /dev/null +++ b/2-Working-With-Data/R/Notebook.ipynb @@ -0,0 +1,2249 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "304296e3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Attaching package: 'dplyr'\n", + "\n", + "\n", + "The following objects are masked from 'package:stats':\n", + "\n", + " filter, lag\n", + "\n", + "\n", + "The following objects are masked from 'package:base':\n", + "\n", + " intersect, setdiff, setequal, union\n", + "\n", + "\n", + "-- \u001b[1mAttaching packages\u001b[22m ------------------------------------------------------------------------------- tidyverse 1.3.1 --\n", + "\n", + "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.5 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n", + "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.1.5 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n", + "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.4 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 0.5.1\n", + "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 2.0.2 \n", + "\n", + "-- \u001b[1mConflicts\u001b[22m ---------------------------------------------------------------------------------- tidyverse_conflicts() --\n", + "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n", + "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n", + "\n", + "\n", + "Attaching package: 'lubridate'\n", + "\n", + "\n", + "The following objects are masked from 'package:base':\n", + "\n", + " date, intersect, setdiff, union\n", + "\n", + "\n", + "\n", + "Attaching package: 'zoo'\n", + "\n", + "\n", + "The following objects are masked from 'package:base':\n", + "\n", + " as.Date, as.Date.numeric\n", + "\n", + "\n", + "\n", + "Attaching package: 'xts'\n", + "\n", + "\n", + "The following objects are masked from 'package:dplyr':\n", + "\n", + " first, last\n", + "\n", + "\n" + ] + } + ], + "source": [ + "library(dplyr)\n", + "library(tidyverse)\n", + "library('lubridate')\n", + "library('zoo')\n", + "library('xts')" + ] + }, + { + "cell_type": "markdown", + "id": "d786e051", + "metadata": {}, + "source": [ + "## Series" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f659f553", + "metadata": {}, + "outputs": [], + "source": [ + "a<- 1:9" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9acc193d", + "metadata": {}, + "outputs": [], + "source": [ + "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f577ec14", + "metadata": {}, + "outputs": [], + "source": [ + "a1 = length(a)\n", + "b1 = length(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "31e069a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " a\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 6\n", + "7 7\n", + "8 8\n", + "9 9\n" + ] + } + ], + "source": [ + "a = data.frame(a,row.names = c(1:a1))\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29ce166e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " b\n", + "1 I\n", + "2 like\n", + "3 to\n", + "4 use\n", + "5 Python\n", + "6 and\n", + "7 Pandas\n", + "8 very\n", + "9 much\n" + ] + } + ], + "source": [ + "b = data.frame(b,row.names = c(1:b1))\n", + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "eeb683c7", + "metadata": {}, + "outputs": [], + "source": [ + "library('ggplot2')" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "e7788ca1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] \"length of index is 366\"\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "start_date <- mdy(\"Jan 1, 2020\")\n", + "end_date <- mdy(\"Dec 31, 2020\")\n", + "idx = seq(start_date,end_date,by ='day')\n", + "print(paste(\"length of index is \",length(idx)))\n", + "size = length(idx)\n", + "sales = runif(366,min=25,max=50)\n", + "sold_items <- data.frame(row.names=idx[0:size],sales)\n", + "ggplot(sold_items,aes(x=idx,y=sales)) + geom_point(color = \"firebrick\", shape = \"diamond\", size = 2) +\n", + " geom_line(color = \"firebrick\", size = .3)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "30747f7c", + "metadata": {}, + "outputs": [], + "source": [ + "library(repr)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "48f3e762", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "366" + ], + "text/latex": [ + "366" + ], + "text/markdown": [ + "366" + ], + "text/plain": [ + "[1] 366" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#changing plot size\n", + "options(repr.plot.width = 12,repr.plot.height=6)\n", + "size" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "abe41544", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 53 × 1
additional_product
<dbl>
2020-01-0110
2020-01-0810
2020-01-1510
2020-01-2210
2020-01-2910
2020-02-0510
2020-02-1210
2020-02-1910
2020-02-2610
2020-03-0410
2020-03-1110
2020-03-1810
2020-03-2510
2020-04-0110
2020-04-0810
2020-04-1510
2020-04-2210
2020-04-2910
2020-05-0610
2020-05-1310
2020-05-2010
2020-05-2710
2020-06-0310
2020-06-1010
2020-06-1710
2020-06-2410
2020-07-0110
2020-07-0810
2020-07-1510
2020-07-2210
2020-07-2910
2020-08-0510
2020-08-1210
2020-08-1910
2020-08-2610
2020-09-0210
2020-09-0910
2020-09-1610
2020-09-2310
2020-09-3010
2020-10-0710
2020-10-1410
2020-10-2110
2020-10-2810
2020-11-0410
2020-11-1110
2020-11-1810
2020-11-2510
2020-12-0210
2020-12-0910
2020-12-1610
2020-12-2310
2020-12-3010
\n" + ], + "text/latex": [ + "A data.frame: 53 × 1\n", + "\\begin{tabular}{r|l}\n", + " & additional\\_product\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t2020-01-01 & 10\\\\\n", + "\t2020-01-08 & 10\\\\\n", + "\t2020-01-15 & 10\\\\\n", + "\t2020-01-22 & 10\\\\\n", + "\t2020-01-29 & 10\\\\\n", + "\t2020-02-05 & 10\\\\\n", + "\t2020-02-12 & 10\\\\\n", + "\t2020-02-19 & 10\\\\\n", + "\t2020-02-26 & 10\\\\\n", + "\t2020-03-04 & 10\\\\\n", + "\t2020-03-11 & 10\\\\\n", + "\t2020-03-18 & 10\\\\\n", + "\t2020-03-25 & 10\\\\\n", + "\t2020-04-01 & 10\\\\\n", + "\t2020-04-08 & 10\\\\\n", + "\t2020-04-15 & 10\\\\\n", + "\t2020-04-22 & 10\\\\\n", + "\t2020-04-29 & 10\\\\\n", + "\t2020-05-06 & 10\\\\\n", + "\t2020-05-13 & 10\\\\\n", + "\t2020-05-20 & 10\\\\\n", + "\t2020-05-27 & 10\\\\\n", + "\t2020-06-03 & 10\\\\\n", + "\t2020-06-10 & 10\\\\\n", + "\t2020-06-17 & 10\\\\\n", + "\t2020-06-24 & 10\\\\\n", + "\t2020-07-01 & 10\\\\\n", + "\t2020-07-08 & 10\\\\\n", + "\t2020-07-15 & 10\\\\\n", + "\t2020-07-22 & 10\\\\\n", + "\t2020-07-29 & 10\\\\\n", + "\t2020-08-05 & 10\\\\\n", + "\t2020-08-12 & 10\\\\\n", + "\t2020-08-19 & 10\\\\\n", + "\t2020-08-26 & 10\\\\\n", + "\t2020-09-02 & 10\\\\\n", + "\t2020-09-09 & 10\\\\\n", + "\t2020-09-16 & 10\\\\\n", + "\t2020-09-23 & 10\\\\\n", + "\t2020-09-30 & 10\\\\\n", + "\t2020-10-07 & 10\\\\\n", + "\t2020-10-14 & 10\\\\\n", + "\t2020-10-21 & 10\\\\\n", + "\t2020-10-28 & 10\\\\\n", + "\t2020-11-04 & 10\\\\\n", + "\t2020-11-11 & 10\\\\\n", + "\t2020-11-18 & 10\\\\\n", + "\t2020-11-25 & 10\\\\\n", + "\t2020-12-02 & 10\\\\\n", + "\t2020-12-09 & 10\\\\\n", + "\t2020-12-16 & 10\\\\\n", + "\t2020-12-23 & 10\\\\\n", + "\t2020-12-30 & 10\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 53 × 1\n", + "\n", + "| | additional_product <dbl> |\n", + "|---|---|\n", + "| 2020-01-01 | 10 |\n", + "| 2020-01-08 | 10 |\n", + "| 2020-01-15 | 10 |\n", + "| 2020-01-22 | 10 |\n", + "| 2020-01-29 | 10 |\n", + "| 2020-02-05 | 10 |\n", + "| 2020-02-12 | 10 |\n", + "| 2020-02-19 | 10 |\n", + "| 2020-02-26 | 10 |\n", + "| 2020-03-04 | 10 |\n", + "| 2020-03-11 | 10 |\n", + "| 2020-03-18 | 10 |\n", + "| 2020-03-25 | 10 |\n", + "| 2020-04-01 | 10 |\n", + "| 2020-04-08 | 10 |\n", + "| 2020-04-15 | 10 |\n", + "| 2020-04-22 | 10 |\n", + "| 2020-04-29 | 10 |\n", + "| 2020-05-06 | 10 |\n", + "| 2020-05-13 | 10 |\n", + "| 2020-05-20 | 10 |\n", + "| 2020-05-27 | 10 |\n", + "| 2020-06-03 | 10 |\n", + "| 2020-06-10 | 10 |\n", + "| 2020-06-17 | 10 |\n", + "| 2020-06-24 | 10 |\n", + "| 2020-07-01 | 10 |\n", + "| 2020-07-08 | 10 |\n", + "| 2020-07-15 | 10 |\n", + "| 2020-07-22 | 10 |\n", + "| 2020-07-29 | 10 |\n", + "| 2020-08-05 | 10 |\n", + "| 2020-08-12 | 10 |\n", + "| 2020-08-19 | 10 |\n", + "| 2020-08-26 | 10 |\n", + "| 2020-09-02 | 10 |\n", + "| 2020-09-09 | 10 |\n", + "| 2020-09-16 | 10 |\n", + "| 2020-09-23 | 10 |\n", + "| 2020-09-30 | 10 |\n", + "| 2020-10-07 | 10 |\n", + "| 2020-10-14 | 10 |\n", + "| 2020-10-21 | 10 |\n", + "| 2020-10-28 | 10 |\n", + "| 2020-11-04 | 10 |\n", + "| 2020-11-11 | 10 |\n", + "| 2020-11-18 | 10 |\n", + "| 2020-11-25 | 10 |\n", + "| 2020-12-02 | 10 |\n", + "| 2020-12-09 | 10 |\n", + "| 2020-12-16 | 10 |\n", + "| 2020-12-23 | 10 |\n", + "| 2020-12-30 | 10 |\n", + "\n" + ], + "text/plain": [ + " additional_product\n", + "2020-01-01 10 \n", + "2020-01-08 10 \n", + "2020-01-15 10 \n", + "2020-01-22 10 \n", + "2020-01-29 10 \n", + "2020-02-05 10 \n", + "2020-02-12 10 \n", + "2020-02-19 10 \n", + "2020-02-26 10 \n", + "2020-03-04 10 \n", + "2020-03-11 10 \n", + "2020-03-18 10 \n", + "2020-03-25 10 \n", + "2020-04-01 10 \n", + "2020-04-08 10 \n", + "2020-04-15 10 \n", + "2020-04-22 10 \n", + "2020-04-29 10 \n", + "2020-05-06 10 \n", + "2020-05-13 10 \n", + "2020-05-20 10 \n", + "2020-05-27 10 \n", + "2020-06-03 10 \n", + "2020-06-10 10 \n", + "2020-06-17 10 \n", + "2020-06-24 10 \n", + "2020-07-01 10 \n", + "2020-07-08 10 \n", + "2020-07-15 10 \n", + "2020-07-22 10 \n", + "2020-07-29 10 \n", + "2020-08-05 10 \n", + "2020-08-12 10 \n", + "2020-08-19 10 \n", + "2020-08-26 10 \n", + "2020-09-02 10 \n", + "2020-09-09 10 \n", + "2020-09-16 10 \n", + "2020-09-23 10 \n", + "2020-09-30 10 \n", + "2020-10-07 10 \n", + "2020-10-14 10 \n", + "2020-10-21 10 \n", + "2020-10-28 10 \n", + "2020-11-04 10 \n", + "2020-11-11 10 \n", + "2020-11-18 10 \n", + "2020-11-25 10 \n", + "2020-12-02 10 \n", + "2020-12-09 10 \n", + "2020-12-16 10 \n", + "2020-12-23 10 \n", + "2020-12-30 10 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 366 × 1
total
<dbl>
2020-01-0154.37099
2020-01-02 NA
2020-01-03 NA
2020-01-04 NA
2020-01-05 NA
2020-01-06 NA
2020-01-07 NA
2020-01-0851.99181
2020-01-09 NA
2020-01-10 NA
2020-01-11 NA
2020-01-12 NA
2020-01-13 NA
2020-01-14 NA
2020-01-1547.57204
2020-01-16 NA
2020-01-17 NA
2020-01-18 NA
2020-01-19 NA
2020-01-20 NA
2020-01-21 NA
2020-01-2250.46082
2020-01-23 NA
2020-01-24 NA
2020-01-25 NA
2020-01-26 NA
2020-01-27 NA
2020-01-28 NA
2020-01-2955.32913
2020-01-30 NA
......
2020-12-0247.63211
2020-12-03 NA
2020-12-04 NA
2020-12-05 NA
2020-12-06 NA
2020-12-07 NA
2020-12-08 NA
2020-12-0949.09786
2020-12-10 NA
2020-12-11 NA
2020-12-12 NA
2020-12-13 NA
2020-12-14 NA
2020-12-15 NA
2020-12-1655.27396
2020-12-17 NA
2020-12-18 NA
2020-12-19 NA
2020-12-20 NA
2020-12-21 NA
2020-12-22 NA
2020-12-2346.30954
2020-12-24 NA
2020-12-25 NA
2020-12-26 NA
2020-12-27 NA
2020-12-28 NA
2020-12-29 NA
2020-12-3043.08600
2020-12-31 NA
\n" + ], + "text/latex": [ + "A data.frame: 366 × 1\n", + "\\begin{tabular}{r|l}\n", + " & total\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t2020-01-01 & 54.37099\\\\\n", + "\t2020-01-02 & NA\\\\\n", + "\t2020-01-03 & NA\\\\\n", + "\t2020-01-04 & NA\\\\\n", + "\t2020-01-05 & NA\\\\\n", + "\t2020-01-06 & NA\\\\\n", + "\t2020-01-07 & NA\\\\\n", + "\t2020-01-08 & 51.99181\\\\\n", + "\t2020-01-09 & NA\\\\\n", + "\t2020-01-10 & NA\\\\\n", + "\t2020-01-11 & NA\\\\\n", + "\t2020-01-12 & NA\\\\\n", + "\t2020-01-13 & NA\\\\\n", + "\t2020-01-14 & NA\\\\\n", + "\t2020-01-15 & 47.57204\\\\\n", + "\t2020-01-16 & NA\\\\\n", + "\t2020-01-17 & NA\\\\\n", + "\t2020-01-18 & NA\\\\\n", + "\t2020-01-19 & NA\\\\\n", + "\t2020-01-20 & NA\\\\\n", + "\t2020-01-21 & NA\\\\\n", + "\t2020-01-22 & 50.46082\\\\\n", + "\t2020-01-23 & NA\\\\\n", + "\t2020-01-24 & NA\\\\\n", + "\t2020-01-25 & NA\\\\\n", + "\t2020-01-26 & NA\\\\\n", + "\t2020-01-27 & NA\\\\\n", + "\t2020-01-28 & NA\\\\\n", + "\t2020-01-29 & 55.32913\\\\\n", + "\t2020-01-30 & NA\\\\\n", + "\t... & ...\\\\\n", + "\t2020-12-02 & 47.63211\\\\\n", + "\t2020-12-03 & NA\\\\\n", + "\t2020-12-04 & NA\\\\\n", + "\t2020-12-05 & NA\\\\\n", + "\t2020-12-06 & NA\\\\\n", + "\t2020-12-07 & NA\\\\\n", + "\t2020-12-08 & NA\\\\\n", + "\t2020-12-09 & 49.09786\\\\\n", + "\t2020-12-10 & NA\\\\\n", + "\t2020-12-11 & NA\\\\\n", + "\t2020-12-12 & NA\\\\\n", + "\t2020-12-13 & NA\\\\\n", + "\t2020-12-14 & NA\\\\\n", + "\t2020-12-15 & NA\\\\\n", + "\t2020-12-16 & 55.27396\\\\\n", + "\t2020-12-17 & NA\\\\\n", + "\t2020-12-18 & NA\\\\\n", + "\t2020-12-19 & NA\\\\\n", + "\t2020-12-20 & NA\\\\\n", + "\t2020-12-21 & NA\\\\\n", + "\t2020-12-22 & NA\\\\\n", + "\t2020-12-23 & 46.30954\\\\\n", + "\t2020-12-24 & NA\\\\\n", + "\t2020-12-25 & NA\\\\\n", + "\t2020-12-26 & NA\\\\\n", + "\t2020-12-27 & NA\\\\\n", + "\t2020-12-28 & NA\\\\\n", + "\t2020-12-29 & NA\\\\\n", + "\t2020-12-30 & 43.08600\\\\\n", + "\t2020-12-31 & NA\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 366 × 1\n", + "\n", + "| | total <dbl> |\n", + "|---|---|\n", + "| 2020-01-01 | 54.37099 |\n", + "| 2020-01-02 | NA |\n", + "| 2020-01-03 | NA |\n", + "| 2020-01-04 | NA |\n", + "| 2020-01-05 | NA |\n", + "| 2020-01-06 | NA |\n", + "| 2020-01-07 | NA |\n", + "| 2020-01-08 | 51.99181 |\n", + "| 2020-01-09 | NA |\n", + "| 2020-01-10 | NA |\n", + "| 2020-01-11 | NA |\n", + "| 2020-01-12 | NA |\n", + "| 2020-01-13 | NA |\n", + "| 2020-01-14 | NA |\n", + "| 2020-01-15 | 47.57204 |\n", + "| 2020-01-16 | NA |\n", + "| 2020-01-17 | NA |\n", + "| 2020-01-18 | NA |\n", + "| 2020-01-19 | NA |\n", + "| 2020-01-20 | NA |\n", + "| 2020-01-21 | NA |\n", + "| 2020-01-22 | 50.46082 |\n", + "| 2020-01-23 | NA |\n", + "| 2020-01-24 | NA |\n", + "| 2020-01-25 | NA |\n", + "| 2020-01-26 | NA |\n", + "| 2020-01-27 | NA |\n", + "| 2020-01-28 | NA |\n", + "| 2020-01-29 | 55.32913 |\n", + "| 2020-01-30 | NA |\n", + "| ... | ... |\n", + "| 2020-12-02 | 47.63211 |\n", + "| 2020-12-03 | NA |\n", + "| 2020-12-04 | NA |\n", + "| 2020-12-05 | NA |\n", + "| 2020-12-06 | NA |\n", + "| 2020-12-07 | NA |\n", + "| 2020-12-08 | NA |\n", + "| 2020-12-09 | 49.09786 |\n", + "| 2020-12-10 | NA |\n", + "| 2020-12-11 | NA |\n", + "| 2020-12-12 | NA |\n", + "| 2020-12-13 | NA |\n", + "| 2020-12-14 | NA |\n", + "| 2020-12-15 | NA |\n", + "| 2020-12-16 | 55.27396 |\n", + "| 2020-12-17 | NA |\n", + "| 2020-12-18 | NA |\n", + "| 2020-12-19 | NA |\n", + "| 2020-12-20 | NA |\n", + "| 2020-12-21 | NA |\n", + "| 2020-12-22 | NA |\n", + "| 2020-12-23 | 46.30954 |\n", + "| 2020-12-24 | NA |\n", + "| 2020-12-25 | NA |\n", + "| 2020-12-26 | NA |\n", + "| 2020-12-27 | NA |\n", + "| 2020-12-28 | NA |\n", + "| 2020-12-29 | NA |\n", + "| 2020-12-30 | 43.08600 |\n", + "| 2020-12-31 | NA |\n", + "\n" + ], + "text/plain": [ + " total \n", + "2020-01-01 54.37099\n", + "2020-01-02 NA\n", + "2020-01-03 NA\n", + "2020-01-04 NA\n", + "2020-01-05 NA\n", + "2020-01-06 NA\n", + "2020-01-07 NA\n", + "2020-01-08 51.99181\n", + "2020-01-09 NA\n", + "2020-01-10 NA\n", + "2020-01-11 NA\n", + "2020-01-12 NA\n", + "2020-01-13 NA\n", + "2020-01-14 NA\n", + "2020-01-15 47.57204\n", + "2020-01-16 NA\n", + "2020-01-17 NA\n", + "2020-01-18 NA\n", + "2020-01-19 NA\n", + "2020-01-20 NA\n", + "2020-01-21 NA\n", + "2020-01-22 50.46082\n", + "2020-01-23 NA\n", + "2020-01-24 NA\n", + "2020-01-25 NA\n", + "2020-01-26 NA\n", + "2020-01-27 NA\n", + "2020-01-28 NA\n", + "2020-01-29 55.32913\n", + "2020-01-30 NA\n", + "... ... \n", + "2020-12-02 47.63211\n", + "2020-12-03 NA\n", + "2020-12-04 NA\n", + "2020-12-05 NA\n", + "2020-12-06 NA\n", + "2020-12-07 NA\n", + "2020-12-08 NA\n", + "2020-12-09 49.09786\n", + "2020-12-10 NA\n", + "2020-12-11 NA\n", + "2020-12-12 NA\n", + "2020-12-13 NA\n", + "2020-12-14 NA\n", + "2020-12-15 NA\n", + "2020-12-16 55.27396\n", + "2020-12-17 NA\n", + "2020-12-18 NA\n", + "2020-12-19 NA\n", + "2020-12-20 NA\n", + "2020-12-21 NA\n", + "2020-12-22 NA\n", + "2020-12-23 46.30954\n", + "2020-12-24 NA\n", + "2020-12-25 NA\n", + "2020-12-26 NA\n", + "2020-12-27 NA\n", + "2020-12-28 NA\n", + "2020-12-29 NA\n", + "2020-12-30 43.08600\n", + "2020-12-31 NA" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "index = seq(start_date,end_date,by = 'week')\n", + "sz = length(index)\n", + "additional_product <- rep(10,53)\n", + "additional_items <- data.frame(row.names = index[0:sz],additional_product)\n", + "additional_items\n", + "# we are merging two dataframe so that we can add\n", + "additional_item = merge(additional_items,sold_items, by = 0, all = TRUE)[-1] \n", + "total = data.frame(row.names=idx[0:size],additional_item$additional_product + additional_item$sales)\n", + "colnames(total) = c('total')\n", + "total" + ] + }, + { + "cell_type": "markdown", + "id": "cb00ff6e", + "metadata": {}, + "source": [ + "\n", + "### As you can see, we are having problems here, because in the weekly series non-mentioned days are considered to be missing (NaN), if we add NaN to a number gives us NaN. In order todo addition, we need to fill the value 0 of additional_items while adding series: \n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "387cb4c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 366 × 1
total
<dbl>
2020-01-0154.37099
2020-01-0227.85566
2020-01-0338.29037
2020-01-0426.72367
2020-01-0537.93330
2020-01-0638.70961
2020-01-0728.36133
2020-01-0851.99181
2020-01-0944.76469
2020-01-1026.54058
2020-01-1131.70327
2020-01-1237.83133
2020-01-1347.45717
2020-01-1431.78909
2020-01-1547.57204
2020-01-1643.79414
2020-01-1746.35117
2020-01-1840.18666
2020-01-1934.65751
2020-01-2038.09664
2020-01-2136.76733
2020-01-2250.46082
2020-01-2339.62032
2020-01-2444.56143
2020-01-2526.45657
2020-01-2645.48089
2020-01-2749.03699
2020-01-2846.05290
2020-01-2955.32913
2020-01-3044.83293
......
2020-12-0247.63211
2020-12-0349.44946
2020-12-0428.07843
2020-12-0549.80941
2020-12-0637.43425
2020-12-0732.36442
2020-12-0837.96258
2020-12-0949.09786
2020-12-1043.08738
2020-12-1136.93554
2020-12-1233.44147
2020-12-1335.24588
2020-12-1447.67855
2020-12-1541.84728
2020-12-1655.27396
2020-12-1732.23195
2020-12-1830.18391
2020-12-1939.27033
2020-12-2045.13756
2020-12-2143.00961
2020-12-2243.69411
2020-12-2346.30954
2020-12-2437.42397
2020-12-2535.94406
2020-12-2645.00482
2020-12-2731.81550
2020-12-2832.69022
2020-12-2931.52063
2020-12-3043.08600
2020-12-3139.28333
\n" + ], + "text/latex": [ + "A data.frame: 366 × 1\n", + "\\begin{tabular}{r|l}\n", + " & total\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t2020-01-01 & 54.37099\\\\\n", + "\t2020-01-02 & 27.85566\\\\\n", + "\t2020-01-03 & 38.29037\\\\\n", + "\t2020-01-04 & 26.72367\\\\\n", + "\t2020-01-05 & 37.93330\\\\\n", + "\t2020-01-06 & 38.70961\\\\\n", + "\t2020-01-07 & 28.36133\\\\\n", + "\t2020-01-08 & 51.99181\\\\\n", + "\t2020-01-09 & 44.76469\\\\\n", + "\t2020-01-10 & 26.54058\\\\\n", + "\t2020-01-11 & 31.70327\\\\\n", + "\t2020-01-12 & 37.83133\\\\\n", + "\t2020-01-13 & 47.45717\\\\\n", + "\t2020-01-14 & 31.78909\\\\\n", + "\t2020-01-15 & 47.57204\\\\\n", + "\t2020-01-16 & 43.79414\\\\\n", + "\t2020-01-17 & 46.35117\\\\\n", + "\t2020-01-18 & 40.18666\\\\\n", + "\t2020-01-19 & 34.65751\\\\\n", + "\t2020-01-20 & 38.09664\\\\\n", + "\t2020-01-21 & 36.76733\\\\\n", + "\t2020-01-22 & 50.46082\\\\\n", + "\t2020-01-23 & 39.62032\\\\\n", + "\t2020-01-24 & 44.56143\\\\\n", + "\t2020-01-25 & 26.45657\\\\\n", + "\t2020-01-26 & 45.48089\\\\\n", + "\t2020-01-27 & 49.03699\\\\\n", + "\t2020-01-28 & 46.05290\\\\\n", + "\t2020-01-29 & 55.32913\\\\\n", + "\t2020-01-30 & 44.83293\\\\\n", + "\t... & ...\\\\\n", + "\t2020-12-02 & 47.63211\\\\\n", + "\t2020-12-03 & 49.44946\\\\\n", + "\t2020-12-04 & 28.07843\\\\\n", + "\t2020-12-05 & 49.80941\\\\\n", + "\t2020-12-06 & 37.43425\\\\\n", + "\t2020-12-07 & 32.36442\\\\\n", + "\t2020-12-08 & 37.96258\\\\\n", + "\t2020-12-09 & 49.09786\\\\\n", + "\t2020-12-10 & 43.08738\\\\\n", + "\t2020-12-11 & 36.93554\\\\\n", + "\t2020-12-12 & 33.44147\\\\\n", + "\t2020-12-13 & 35.24588\\\\\n", + "\t2020-12-14 & 47.67855\\\\\n", + "\t2020-12-15 & 41.84728\\\\\n", + "\t2020-12-16 & 55.27396\\\\\n", + "\t2020-12-17 & 32.23195\\\\\n", + "\t2020-12-18 & 30.18391\\\\\n", + "\t2020-12-19 & 39.27033\\\\\n", + "\t2020-12-20 & 45.13756\\\\\n", + "\t2020-12-21 & 43.00961\\\\\n", + "\t2020-12-22 & 43.69411\\\\\n", + "\t2020-12-23 & 46.30954\\\\\n", + "\t2020-12-24 & 37.42397\\\\\n", + "\t2020-12-25 & 35.94406\\\\\n", + "\t2020-12-26 & 45.00482\\\\\n", + "\t2020-12-27 & 31.81550\\\\\n", + "\t2020-12-28 & 32.69022\\\\\n", + "\t2020-12-29 & 31.52063\\\\\n", + "\t2020-12-30 & 43.08600\\\\\n", + "\t2020-12-31 & 39.28333\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 366 × 1\n", + "\n", + "| | total <dbl> |\n", + "|---|---|\n", + "| 2020-01-01 | 54.37099 |\n", + "| 2020-01-02 | 27.85566 |\n", + "| 2020-01-03 | 38.29037 |\n", + "| 2020-01-04 | 26.72367 |\n", + "| 2020-01-05 | 37.93330 |\n", + "| 2020-01-06 | 38.70961 |\n", + "| 2020-01-07 | 28.36133 |\n", + "| 2020-01-08 | 51.99181 |\n", + "| 2020-01-09 | 44.76469 |\n", + "| 2020-01-10 | 26.54058 |\n", + "| 2020-01-11 | 31.70327 |\n", + "| 2020-01-12 | 37.83133 |\n", + "| 2020-01-13 | 47.45717 |\n", + "| 2020-01-14 | 31.78909 |\n", + "| 2020-01-15 | 47.57204 |\n", + "| 2020-01-16 | 43.79414 |\n", + "| 2020-01-17 | 46.35117 |\n", + "| 2020-01-18 | 40.18666 |\n", + "| 2020-01-19 | 34.65751 |\n", + "| 2020-01-20 | 38.09664 |\n", + "| 2020-01-21 | 36.76733 |\n", + "| 2020-01-22 | 50.46082 |\n", + "| 2020-01-23 | 39.62032 |\n", + "| 2020-01-24 | 44.56143 |\n", + "| 2020-01-25 | 26.45657 |\n", + "| 2020-01-26 | 45.48089 |\n", + "| 2020-01-27 | 49.03699 |\n", + "| 2020-01-28 | 46.05290 |\n", + "| 2020-01-29 | 55.32913 |\n", + "| 2020-01-30 | 44.83293 |\n", + "| ... | ... |\n", + "| 2020-12-02 | 47.63211 |\n", + "| 2020-12-03 | 49.44946 |\n", + "| 2020-12-04 | 28.07843 |\n", + "| 2020-12-05 | 49.80941 |\n", + "| 2020-12-06 | 37.43425 |\n", + "| 2020-12-07 | 32.36442 |\n", + "| 2020-12-08 | 37.96258 |\n", + "| 2020-12-09 | 49.09786 |\n", + "| 2020-12-10 | 43.08738 |\n", + "| 2020-12-11 | 36.93554 |\n", + "| 2020-12-12 | 33.44147 |\n", + "| 2020-12-13 | 35.24588 |\n", + "| 2020-12-14 | 47.67855 |\n", + "| 2020-12-15 | 41.84728 |\n", + "| 2020-12-16 | 55.27396 |\n", + "| 2020-12-17 | 32.23195 |\n", + "| 2020-12-18 | 30.18391 |\n", + "| 2020-12-19 | 39.27033 |\n", + "| 2020-12-20 | 45.13756 |\n", + "| 2020-12-21 | 43.00961 |\n", + "| 2020-12-22 | 43.69411 |\n", + "| 2020-12-23 | 46.30954 |\n", + "| 2020-12-24 | 37.42397 |\n", + "| 2020-12-25 | 35.94406 |\n", + "| 2020-12-26 | 45.00482 |\n", + "| 2020-12-27 | 31.81550 |\n", + "| 2020-12-28 | 32.69022 |\n", + "| 2020-12-29 | 31.52063 |\n", + "| 2020-12-30 | 43.08600 |\n", + "| 2020-12-31 | 39.28333 |\n", + "\n" + ], + "text/plain": [ + " total \n", + "2020-01-01 54.37099\n", + "2020-01-02 27.85566\n", + "2020-01-03 38.29037\n", + "2020-01-04 26.72367\n", + "2020-01-05 37.93330\n", + "2020-01-06 38.70961\n", + "2020-01-07 28.36133\n", + "2020-01-08 51.99181\n", + "2020-01-09 44.76469\n", + "2020-01-10 26.54058\n", + "2020-01-11 31.70327\n", + "2020-01-12 37.83133\n", + "2020-01-13 47.45717\n", + "2020-01-14 31.78909\n", + "2020-01-15 47.57204\n", + "2020-01-16 43.79414\n", + "2020-01-17 46.35117\n", + "2020-01-18 40.18666\n", + "2020-01-19 34.65751\n", + "2020-01-20 38.09664\n", + "2020-01-21 36.76733\n", + "2020-01-22 50.46082\n", + "2020-01-23 39.62032\n", + "2020-01-24 44.56143\n", + "2020-01-25 26.45657\n", + "2020-01-26 45.48089\n", + "2020-01-27 49.03699\n", + "2020-01-28 46.05290\n", + "2020-01-29 55.32913\n", + "2020-01-30 44.83293\n", + "... ... \n", + "2020-12-02 47.63211\n", + "2020-12-03 49.44946\n", + "2020-12-04 28.07843\n", + "2020-12-05 49.80941\n", + "2020-12-06 37.43425\n", + "2020-12-07 32.36442\n", + "2020-12-08 37.96258\n", + "2020-12-09 49.09786\n", + "2020-12-10 43.08738\n", + "2020-12-11 36.93554\n", + "2020-12-12 33.44147\n", + "2020-12-13 35.24588\n", + "2020-12-14 47.67855\n", + "2020-12-15 41.84728\n", + "2020-12-16 55.27396\n", + "2020-12-17 32.23195\n", + "2020-12-18 30.18391\n", + "2020-12-19 39.27033\n", + "2020-12-20 45.13756\n", + "2020-12-21 43.00961\n", + "2020-12-22 43.69411\n", + "2020-12-23 46.30954\n", + "2020-12-24 37.42397\n", + "2020-12-25 35.94406\n", + "2020-12-26 45.00482\n", + "2020-12-27 31.81550\n", + "2020-12-28 32.69022\n", + "2020-12-29 31.52063\n", + "2020-12-30 43.08600\n", + "2020-12-31 39.28333" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "additional_item[is.na(additional_item)] = 0\n", + "total = data.frame(row.names=idx[0:size],additional_item$additional_product + additional_item$sales)\n", + "colnames(total) = c('total')\n", + "total" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "bdb60236", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAMAAABR+ye1AAAAOVBMVEUAAAAzMzNNTU1oaGh8\nfHyMjIyampqnp6eyIiKysrK9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PD///+vl18TAAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO19ibbjOI5sdlb1tGam37TL//+xr64XWSKxBEBQ\nImXEOVVpSyQIbkEwROv+uicSiURiSPw624FEIpFI0EiCTiQSiUGRBJ1IJBKDIgk6kUgkBkUS\ndCKRSAyKJOhEIpEYFEnQiUQiMSiSoBOJRGJQeAn61oTG7F2RvvmQvjkxtHPpnR8NziVB80jf\nfEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTO\njyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjf\nnBjaufTOj4MI+vff2P6bBH0e0jcfRvZtbOfSOz+OIejfr//9Xr8kQZ+G9M2HkX0b27n0zo8k\n6C5I33xI35wY2rn0zo8DCfqeBD0E0jcfRvZtbOfSOz+OIuin9vwh6H/8QMuWSCQSiUboBP1i\n54ygB0D65sPIvo3tXHrnR2rQXZC++ZC+OTG0c+mdH0nQXZC++ZC+OTG0c+mdH0nQXZC++ZC+\nOTG0c+mdH0nQXZC++ZC+OTG0c+mdH/lLwi5I33xI35wY2rn0zo98F0cXpG8+pG9ODO1ceudH\nEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9O\nDO1ceudHEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9ODO0c6d2yHO4Gg6HbLgm6C9I3H9I3J4Z2\njvJuWYZh6KHbLgm6C9I3H9I3J4Z2jvBuWcZh6KHbLgm6C9I3H9I3J4Z2rvJueeMUb0oM3XZJ\n0F2QvvmQvjkxtHO1d0nQKJKguyB98yF9c2Jo51Li8CMJugvSNx/SNyeGdi4fEvqRBN0F6ZsP\n6ZsTQzuXx+z8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdo71L\niQNBEnQXpG8+pG9ODO1cErQfSdBdkL75kL45MbRz6Z0fSdBdkL75kL45MbRz6Z0fSdBdkL75\n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\n9y4JugscvrWSzxcQdN+D5BrOHW+dj9n1RUocbiRBd4Hdt4p8Jpc4OmjQvX/qo2Dk8Ta2c0nQ\nfiRBd4HZt5p8JifoeA26w28x55E4NAztXHrnRxJ0FwRE0GYDaMKUOD4GLYlHHm9jO5fe+ZEE\n3QWpQftw7EPC6/wMfWznUuLwIwm6C9pPcfSTWi0SR4MX4x+zM9L9yONtbOeSoP1Igu6CgFcj\ndGNoA0G3eNGFoCNhFUxGHm9jO5fe+ZEE3QWtvjnU1iaJgy7r+EMTB/ap+ZHjyONtbOfSOz+S\noLug0TfPeYUWgibLajw1kRH0kRjauZQ4/EiC7oITImgYtW9caU387Mp4aJ+mBn0UkqDdSILu\ngpk0aCFSbuJnT9Zj+zRPcRwE1LtzfoU0dNslQXdBu2/2v3mLpqx8E6SMJn52ZL52n3bE0M6h\n3p30O9Gh2y4JugsO980wtHGJo8mbJOgjMbRzoHfhPxQFMXTbJUF3wdG+WYY2+pDwKH+2yD51\nYmjnMO/ankk3YOi2S4LugoN9M41t/JhdA5wzLfvUiaGdM0XQnV0hMHTbnUrQiSg8x/bZXmwx\nljeJGTDaGL4MMoIuMZcGPQ7SNyeGds5wiqOrGwyGbruUOLrgeN8aTnEMhPTNiaGdS+/8SILu\ngvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGd\nS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTN\nh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8\nSILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TN\niaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILu\ngvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGd\nS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTN\nh/TNiaGdS+/8OJWg2/CPU0qdH9luPmS7uZFN50ZI0yVBz4RsNx+y3dzIpnMjCfrrkO3mQ7ab\nG9l0biRBfx2y3XzIdnMjm86NiQk6kUgkEiqSoBOJRGJQJEEnEonEoEiCTiQSiUGRBJ1IJBKD\nIgk6kUgkBkVXgv7NXf8b0r/fjmw3N37XH7PVdPBtka2nwTpb+RwUziDo36//cf9+O34zjZDt\npqMm6Gw1FW8C2V7a/putJ8HIckVDa0iCHg9J0H4kQTtABHZJ0DCsBM1NbxrdCfoV2P++F1ui\nspOz01f8frfEp+m2N7PdBJQzor5Mfv9q/N5+eM7XvYCRrSfByHJ3W7v1Juh1tjz9J++R378X\n75Z6N1kubAYkQduxJWiq8bL1RBhZ7m5rt0MkDqJD15r8pr9/MX7f981RzpVsNwE0x2SrSagI\n+r5vmGw9EUaWu9varT9Bv/ZM6/fPrex0CusimwTtQBK0HUnQTTCy3N3Wbv016Du1tvze/6/6\n/sX4/QRN0NluCsh2y1YToRB0tp4MI8vdbe3Wi6B3s6Ryne7p7PQfSBF0tpsAcsitN7LVeJSR\n8X3bMNl6PDwsd7e12xEEXQX/v/dpqu/fjE8brQ8Jy3vZbiTIIXfPVtOxOQfNrG7ZeiQ8LHe3\ntVs3iWPz+5lybXnv4e+bf7bfvxobgl6P2b0vZbuJoIZcthqEza/c1sZZv2brsfCw3CAEnWhF\njv9E4tuRBD0skqATiW9HEvSwSIJOJL4dSdCJRCIxKJKgE4lEYlAkQScSicSgSIJOJBKJQZEE\nnUgkEoMiCTqRSCQGRRJ04rr49av+lEhMhBy3iesiCToxOXLcJr4BSdCJKZHjNnFdPGj5P3/+\n+ufPp3/++r/7/f9+/Xm2U4kEjiToxHXxQ9B//f7169c///70168/7vc/f1g6kZgFSdCJ6+KH\noP/1d8z8158/n/7717//99e/zvYpkTAgCTpxXfzQ8h+//nO//+chduQ7jBOzIQk6cV380PLz\n8eDj///769f/nuxRImFCEnTiukiCTkyOJOjEdVFKHH/8kRJHYiokQSeui+ejwT//ur8fEv77\n13+f7VMiYUASdOK6qI/Z/fHrr7OdSiRwJEEnrovnD1X+ufuhyj/PdiqRwJEEnUgkEoMiCTqR\nSCQGRRJ0IpFIDIok6EQikRgUSdCJRCIxKJKgE4lEYlAkQScSicSgSIJOJBKJQZEEnUgkEoMi\nCTqRSCQGRRJ0IpFIDIok6EQikRgU/x+22CwvTrb4CQAAAABJRU5ErkJggg==", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "ggplot(total,aes(x=idx,y=total)) + geom_point(color = \"firebrick\", shape = \"diamond\", size = 2) +\n", + " geom_line(color = \"firebrick\", linetype = \"dotted\", size = .3)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "294dde87", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n" + ], + "text/latex": [ + "\\begin{enumerate*}\n", + "\\item 2020-01-01\n", + "\\item 2020-02-01\n", + "\\item 2020-03-01\n", + "\\item 2020-04-01\n", + "\\item 2020-05-01\n", + "\\item 2020-06-01\n", + "\\item 2020-07-01\n", + "\\item 2020-08-01\n", + "\\item 2020-09-01\n", + "\\item 2020-10-01\n", + "\\item 2020-11-01\n", + "\\item 2020-12-01\n", + "\\end{enumerate*}\n" + ], + "text/markdown": [ + "1. 2020-01-01\n", + "2. 2020-02-01\n", + "3. 2020-03-01\n", + "4. 2020-04-01\n", + "5. 2020-05-01\n", + "6. 2020-06-01\n", + "7. 2020-07-01\n", + "8. 2020-08-01\n", + "9. 2020-09-01\n", + "10. 2020-10-01\n", + "11. 2020-11-01\n", + "12. 2020-12-01\n", + "\n", + "\n" + ], + "text/plain": [ + " [1] \"2020-01-01\" \"2020-02-01\" \"2020-03-01\" \"2020-04-01\" \"2020-05-01\"\n", + " [6] \"2020-06-01\" \"2020-07-01\" \"2020-08-01\" \"2020-09-01\" \"2020-10-01\"\n", + "[11] \"2020-11-01\" \"2020-12-01\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "index = seq(start_date,end_date,by ='month')\n", + "index" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "7542d95e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " total\n", + "2020-01-31 40.12725\n", + "2020-02-29 36.38809\n", + "2020-03-31 36.63476\n", + "2020-04-30 36.69513\n", + "2020-05-31 40.12267\n", + "2020-06-30 38.04770\n", + "2020-07-31 39.38036\n", + "2020-08-31 37.60016\n", + "2020-09-30 37.76963\n", + "2020-10-31 38.57457\n", + "2020-11-30 38.38480\n", + "2020-12-31 39.73959" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nycRWwgAAAABJRU5ErkJggg==", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "x<- as.xts(total, dateFormat =\"Date\")\n", + "(monthly<-apply.monthly(x,mean))\n", + "ggplot(monthly, aes(x=index, y=total)) + \n", + " geom_bar(stat = \"identity\", width=5) " + ] + }, + { + "cell_type": "markdown", + "id": "945feffd", + "metadata": {}, + "source": [ + "## DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "id": "d38f1754", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning message in seq_len(head.end.idx):\n", + "\"first element used of 'length.out' argument\"\n", + "ERROR while rich displaying an object: Error in seq_len(head.end.idx): argument must be coercible to non-negative integer\n", + "\n", + "Traceback:\n", + "1. FUN(X[[i]], ...)\n", + "2. tryCatch(withCallingHandlers({\n", + " . if (!mime %in% names(repr::mime2repr)) \n", + " . stop(\"No repr_* for mimetype \", mime, \" in repr::mime2repr\")\n", + " . rpr <- repr::mime2repr[[mime]](obj)\n", + " . if (is.null(rpr)) \n", + " . return(NULL)\n", + " . prepare_content(is.raw(rpr), rpr)\n", + " . }, error = error_handler), error = outer_handler)\n", + "3. tryCatchList(expr, classes, parentenv, handlers)\n", + "4. tryCatchOne(expr, names, parentenv, handlers[[1L]])\n", + "5. doTryCatch(return(expr), name, parentenv, handler)\n", + "6. withCallingHandlers({\n", + " . if (!mime %in% names(repr::mime2repr)) \n", + " . stop(\"No repr_* for mimetype \", mime, \" in repr::mime2repr\")\n", + " . rpr <- repr::mime2repr[[mime]](obj)\n", + " . if (is.null(rpr)) \n", + " . return(NULL)\n", + " . prepare_content(is.raw(rpr), rpr)\n", + " . }, error = error_handler)\n", + "7. repr::mime2repr[[mime]](obj)\n", + "8. repr_html.help_files_with_topic(obj)\n", + "9. repr_help_files_with_topic_generic(obj, Rd2HTML)\n" + ] + } + ], + "source": [ + "?vector" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "88a435ec", + "metadata": {}, + "outputs": [], + "source": [ + "a = data.frame(a,row.names = c(1:a1))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c4e2a6c1", + "metadata": {}, + "outputs": [], + "source": [ + "b = data.frame(b,row.names = c(1:b1))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "2bb5177c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 2
ab
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" + ], + "text/latex": [ + "A data.frame: 9 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & a & b\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like \\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\t5 & 5 & Python\\\\\n", + "\t6 & 6 & and \\\\\n", + "\t7 & 7 & Pandas\\\\\n", + "\t8 & 8 & very \\\\\n", + "\t9 & 9 & much \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 2\n", + "\n", + "| | a <int> | b <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "| 5 | 5 | Python |\n", + "| 6 | 6 | and |\n", + "| 7 | 7 | Pandas |\n", + "| 8 | 8 | very |\n", + "| 9 | 9 | much |\n", + "\n" + ], + "text/plain": [ + " a b \n", + "1 1 I \n", + "2 2 like \n", + "3 3 to \n", + "4 4 use \n", + "5 5 Python\n", + "6 6 and \n", + "7 7 Pandas\n", + "8 8 very \n", + "9 9 much " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df<- data.frame(a,b)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8f45d3a5", + "metadata": {}, + "outputs": [], + "source": [ + "df = \n", + " rename(df,\n", + " A = a,\n", + " B = b,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "0efbf2d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" + ], + "text/latex": [ + "A data.frame: 9 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like \\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\t5 & 5 & Python\\\\\n", + "\t6 & 6 & and \\\\\n", + "\t7 & 7 & Pandas\\\\\n", + "\t8 & 8 & very \\\\\n", + "\t9 & 9 & much \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "| 5 | 5 | Python |\n", + "| 6 | 6 | and |\n", + "| 7 | 7 | Pandas |\n", + "| 8 | 8 | very |\n", + "| 9 | 9 | much |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like \n", + "3 3 to \n", + "4 4 use \n", + "5 5 Python\n", + "6 6 and \n", + "7 7 Pandas\n", + "8 8 very \n", + "9 9 much " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "88b51fdc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column A (series):\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" + ], + "text/latex": [ + "A data.frame: 9 × 1\n", + "\\begin{tabular}{r|l}\n", + " & A\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t1 & 1\\\\\n", + "\t2 & 2\\\\\n", + "\t3 & 3\\\\\n", + "\t4 & 4\\\\\n", + "\t5 & 5\\\\\n", + "\t6 & 6\\\\\n", + "\t7 & 7\\\\\n", + "\t8 & 8\\\\\n", + "\t9 & 9\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 1\n", + "\n", + "| | A <int> |\n", + "|---|---|\n", + "| 1 | 1 |\n", + "| 2 | 2 |\n", + "| 3 | 3 |\n", + "| 4 | 4 |\n", + "| 5 | 5 |\n", + "| 6 | 6 |\n", + "| 7 | 7 |\n", + "| 8 | 8 |\n", + "| 9 | 9 |\n", + "\n" + ], + "text/plain": [ + " A\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 6\n", + "7 7\n", + "8 8\n", + "9 9" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cat(\"Column A (series):\\n\")\n", + "select(df,'A')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "010bcba8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" + ], + "text/latex": [ + "A data.frame: 4 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like\\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 4 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like\n", + "3 3 to \n", + "4 4 use " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A<5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "082277db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\n", + "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" + ], + "text/latex": [ + "A data.frame: 1 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t6 & 6 & and\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 1 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 6 | 6 | and |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "6 6 and" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A>5 & df$A<7,]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "0bbd19f8", + "metadata": {}, + "outputs": [], + "source": [ + "df$DivA <- df$A - mean(df$A)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f36d96af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" + ], + "text/latex": [ + "A data.frame: 9 × 3\n", + "\\begin{tabular}{r|lll}\n", + " & A & B & DivA\\\\\n", + " & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4\\\\\n", + "\t2 & 2 & like & -3\\\\\n", + "\t3 & 3 & to & -2\\\\\n", + "\t4 & 4 & use & -1\\\\\n", + "\t5 & 5 & Python & 0\\\\\n", + "\t6 & 6 & and & 1\\\\\n", + "\t7 & 7 & Pandas & 2\\\\\n", + "\t8 & 8 & very & 3\\\\\n", + "\t9 & 9 & much & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 3\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> |\n", + "|---|---|---|---|\n", + "| 1 | 1 | I | -4 |\n", + "| 2 | 2 | like | -3 |\n", + "| 3 | 3 | to | -2 |\n", + "| 4 | 4 | use | -1 |\n", + "| 5 | 5 | Python | 0 |\n", + "| 6 | 6 | and | 1 |\n", + "| 7 | 7 | Pandas | 2 |\n", + "| 8 | 8 | very | 3 |\n", + "| 9 | 9 | much | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA\n", + "1 1 I -4 \n", + "2 2 like -3 \n", + "3 3 to -2 \n", + "4 4 use -1 \n", + "5 5 Python 0 \n", + "6 6 and 1 \n", + "7 7 Pandas 2 \n", + "8 8 very 3 \n", + "9 9 much 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "c67f2bd0", + "metadata": {}, + "outputs": [], + "source": [ + "df$LenB <- str_length(df$B)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "cef214b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" + ], + "text/latex": [ + "A data.frame: 9 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\t7 & 7 & Pandas & 2 & 6\\\\\n", + "\t8 & 8 & very & 3 & 4\\\\\n", + "\t9 & 9 & much & 4 & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "| 7 | 7 | Pandas | 2 | 6 |\n", + "| 8 | 8 | very | 3 | 4 |\n", + "| 9 | 9 | much | 4 | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 \n", + "7 7 Pandas 2 6 \n", + "8 8 very 3 4 \n", + "9 9 much 4 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "59fe5316", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" + ], + "text/latex": [ + "A data.frame: 5 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 5 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[0:5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "f944a949", + "metadata": {}, + "outputs": [], + "source": [ + "df1 = df %>% group_by(LenB) %>% summarise(a = mean(A))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "8ffd39cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
LenBa
<int><dbl>
11.000000
23.000000
35.000000
46.333333
66.000000
\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " LenB & a\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t 1 & 1.000000\\\\\n", + "\t 2 & 3.000000\\\\\n", + "\t 3 & 5.000000\\\\\n", + "\t 4 & 6.333333\\\\\n", + "\t 6 & 6.000000\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| LenB <int> | a <dbl> |\n", + "|---|---|\n", + "| 1 | 1.000000 |\n", + "| 2 | 3.000000 |\n", + "| 3 | 5.000000 |\n", + "| 4 | 6.333333 |\n", + "| 6 | 6.000000 |\n", + "\n" + ], + "text/plain": [ + " LenB a \n", + "1 1 1.000000\n", + "2 2 3.000000\n", + "3 3 5.000000\n", + "4 4 6.333333\n", + "5 6 6.000000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "3b859950", + "metadata": {}, + "outputs": [], + "source": [ + "df2 = df %>% group_by(LenB) %>%\n", + "summarise(MEAN = mean(A),count =length(DivA))" + ] + }, + { + "cell_type": "markdown", + "id": "5d3f0287", + "metadata": {}, + "source": [ + "## Printing and Plotting" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "69946dc7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning message in file(file, \"rt\"):\n", + "\"cannot open file 'file name': No such file or directory\"\n" + ] + }, + { + "ename": "ERROR", + "evalue": "Error in file(file, \"rt\"): cannot open the connection\n", + "output_type": "error", + "traceback": [ + "Error in file(file, \"rt\"): cannot open the connection\nTraceback:\n", + "1. read.csv(\"file name\")", + "2. read.table(file = file, header = header, sep = sep, quote = quote, \n . dec = dec, fill = fill, comment.char = comment.char, ...)", + "3. file(file, \"rt\")" + ] + } + ], + "source": [ + "dataset = read.csv(\"file name\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "009af652", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" + ], + "text/latex": [ + "A data.frame: 6 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 6 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "head(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "515c95b2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\n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\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "41b872c9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\nKldwNYpUuYKrUaTKFVyNIlWu4GoUqXIFV6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1Gk\nyhVcjSJVruBqFKlyBVejSJUruBpFqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSp\ncgVXo0iVK7gaRapcwdUoUuUKrkaRKldwNYpUuYKrUaTKFVyNIlWu4GoUqXIFV6NIlSu4GkWq\nXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpFqlzB1ShS5QquRpEq\nV3A1ilS5gqtRpMoVXI0iVa7gahSpcgUPsgz5fZAiNa7gQUZye0gBFIkrUqTVl0kOO20FD6JI\nqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2GkreBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWS\nw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JIqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2Gkr\neBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWSw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JI\nqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2GkreBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWS\nw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JIqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2Gkr\neBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWSw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JI\nqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2GkreBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWS\nw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JIqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2Gkr\neBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWSw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JI\nqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2GkreBBFWn2Z5LDTVvAgirT6Mslhp63gQRRp9WWS\nw05bwYMo0urLJIedtoIHUaTVl0kOO20FD6JIqy+THHbaCh5EkVZfJjnstBU8iCKtvkxy2Gkr\neBBFWn2Z5LDTVvAgirT6Mq/9wucPT98/fnyzLG8/H7SCOoq0+jKv/LpvT8vy8vz9ww9vD1lB\nH0VafZlXft375d3z9w/vv33v1PvlwxEr6KNIqy/z2q9bnv/88P2/5S1PR6ygjyKtvsxrv+7H\nFz4tv/3N//cf/+b11xGyjPh9zkBuFemfvF++vrx8/PHhx0+k//qLJEU6X0NuFemffF2ePnx9\neff0vUlf3ixfjlhBTkNuFekffXn662f/x2NWENOQW0Va8fn9mx8tevfx22ErCGnIrSL1r2BD\nQ24VqX8FGxpyq0j9K9jQkFtF6l/BhobcKlL/CjY05FaR+lewoSG3itS/gg0NuVWk/hVsaMit\nIvWvYENDbhWpfwUbGnKrSP0r2NCQW0XqX8GGhtwqUv8KNjTkVpH6V7ChIbeK1L+CDQ25VaT+\nFWxoyK0i9a9gQ0NuFal/BRsacqtI/SvY0JBbRepfwYaG3CpS/wo2NORWkfpXsKEht4rUv4IN\nDblVpP4VbGjIrSL1r2BDQ24VqX8FGxpyq0j9K9jQkFtF6l/BhobcKlL/CjY05FaR+lewoSG3\nitS/gg0NuVWk/hVsaMitIvWvYENDbhWpfwUbGnKrSP0r2NCQW0XqX8GGhtwqUv8KNjTkVpH6\nV7ChIbeK1L+CDQ25VaT+FWxoyK0i9a9gQ0NuFal/BRsacqtI/SvY0JBbRepfwYaG3CpS/wo2\nNORWkfpXsKEht4rUv4INDblVpP4VbGjIrSL1r2BDQ24VqX8FGxpyq0j9K9jQkFtF6l/Bhobc\nKlL/CjY05FaR+lewoSG3itS/gg0NuVWk/hVsaMitIvWvYENDbhWpfwUbGnKrSP0r2NCQW0Xq\nX8GGhtwqUv8KNjTkVpH6V7ChIbeK1L+CDQ25VaT+FbNahvw+qCC3itS/YlZT5bbuIEW6jaly\nW3eQIt3GVLmtO0iRbmOq3NYdpEi3MVVu6w5SpNuYKrd1BynSbUyV27qDFOk2pspt3UGKdBtT\n5bbuIEW6jalyW3eQIt3GVLmtO0iRbmOq3NYdpEi3MVVu6w5SpNuYKrd1BynSbUyV27qDFOk2\npspt3UGKdBtT5bbuIEW6jalyW3eQIt3GVLmtO0iRbmOq3NYdpEi3MVVu6w5SpNuYKrd1BynS\nbUyV27qDFOk2pspt3UGKdBtT5bbuIEW6jalyW3eQIt3GVLmtO0iRbmOq3NYdpEi3MVVu6w5S\npNuYKrd1Bx1epK8fno5ewb8yVW7rDjq2SN8+vlkWReowVW7rDjqwSM+fv7doefsluUGRXm+q\n3NYddFiRPr/9+X/09i05/0WRBkyV27qDjinSl/ffO/T04esSz70ivdpUua076JAiPf1o0R8/\n/oEi9Zgqt3UHHVKkZfnw65Pk+N9XsNtUua07yE+k25gqt3UHHfprpD8UqchUua07yL+1u42p\nclt30OG/j/TO7yOVmCq3dQf5kw23MVVu6w7yZ+1uY6rc1h3kT3/fxlS5rTtIkW5jqtzWHaRI\ntzFVbusOUqTbmCq3dQcp0m1Mldu6gxTpNqbKbd1BinQbU+W27iBFuo2pclt3kCLdxlS5rTtI\nkW5jqtzWHaRItzFVbusOUqTbmCq3dQcp0m1Mldu6gxTpNqbKbd1BinQbU+W27iBFuo2pclt3\nkCLdxlS5rTtIkW5jqtzWHaRItzFVbusOUqTbmCq3dQeVFWnzf1FSkV5tqtzWHaRItzFVbusO\nqijS8n8dsYK5clt3UEWR/nhSpONNldu6gyqK9PL8bnn7838l/B9b9K9bNqdlxO9zBmJSl9u6\ngzqK9PLyeVk+v/g10j9piEldbusOainSy7e3y7tnRfoHDTGpy23dQTVFenn5uDx9UaS/a4hJ\nXW7rDioq0svXN9u/BlKkU2JSl9u6g5qK9PLyXpH+riEmdbmtO6irSBUr2jTEpC63dQcpUr2G\nmNTltu4gRarXEJO63NYdpEj1GmJSl9u6gxSpXkNM6nJbd5Ai1WuISV1u6w5SpHoNManLbd1B\nilSvISZ1ua07SJHqNcSkLrd1BylSvYaY1OW27iBFqtcQk7rc1h2kSPUaYlKX27qDFKleQ0zq\nclt3kCLVa4hJXW7rDlKkeg0xqctt3UGKVK8hJnW5rTtIkeo1xKQut3UHKVK9hpjU5bbuIEWq\n1xCTutzWHaRI9RpiUpfbuoMUqV5DTOpyW3eQItVriEldbusOUqR6DTGpy23dQYpUryEmdbmt\nO0iR6jXEpC63dQcpUr2GmNTltu4gRarXEJO63NYdpEj1GmJSl9u6gxSpXkNM6nJbd5Ai1WuI\nSV1u6w5SpHoNManLbd1BilSvISZ1ua07SJHqNcSkLrd1BylSvYaY1OW27iBFqtcQk7rc1h2k\nSPUaYlKX27qDFKleQ0zqclt3kCLVa4hJXW7rDlKkeg0xqctt3UGKVK8hJnW5rTtIkeo1xKQu\nt3UHKVK9hpjU5bbuIEWq1xCTutzWHaRI9RpiUpfbuoMUqV5DTOpyW3eQItVriEldbusOUqR6\nDTGpy23dQYpUryEmdbmtO0iR6jXEpC63dQcpUr2GmNTltu4gRarXEJO63NYdpEj1GmJSl9u6\ngxSpXkNM6nJbd5Ai1WuISV1u6w5SpHoNManLbd1BilSvISZ1ua07SJHqNcSkLrd1BylSvYaY\n1OW27iBFqtcQk7rc1h2kSPUaYlKX27qDFKleQ0zqclt3kCLVa4hJXW7rDlKkeg0xqctt3UGK\ndJRlyO+DCmJSl9u6gxTpKFPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc5\n7LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxn\nJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvm\njGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRB\ne+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPF\nxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUh\nU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0\nFSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc5\n7LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxn\nJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvm\njGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRB\ne+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPF\nxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUh\nU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0\nFSFTxcRBe+aMZyc57LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc5\n7LQVIVPFxEF75oxnJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZyc57LQVIVPFxEF75oxn\nJznstBUhU8XEQXvmjGcnOey0FSFTxcRBe+aMZ+e1X/j8flnefvlzyH+dokinzHHQnjnj2Xnl\n1z0/LT+8+88QReqLiYP2zBnPziu/7sPy6XubPj29/TlEkfpi4qA9c8az88qve/rPF357evNN\nkQ779jroUXPGs/Par/vzC5/fvv2nIi2/Gzjv3x4z4Pc5A9+Vupg4aM+cYa8d9mZ5/vXZ29N/\nIjV8V+pi4qA9c4a9dtin5f2fn31b3ipScJCDzpgz7NXDPvxve75s/Lc3RXJQ5UEdRXr5+u7X\nZ9/eK1JfTBy0Z86wKf5kQ8N3pS4mDtozZ5gihebUxcRBe+YMU6TQnLqYOGjPnGGKFJpTFxMH\n7ZkzTJFCc+pi4qA9c4YpUmhOXUwctGfOMEUKzamLiYP2zBmmSKE5dTFx0J45wxQpNKcuJg7a\nM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcTB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRn\nzjBFCs2pi4mD9swZpkihOXUxcdCeOcMUKTSnLiYO2jNnmCKF5tTFxEF75gxTpNCcupg4aM+c\nYYoUmlMXEwftmTNMkUJz6mLioD1zhilSaE5dTBy0Z84wRQrNqYuJg/bMGaZIoTl1MXHQnjnD\nFCk0py4mDtozZ5gihebUxcRBe+YMU6TQnLqYOGjPnGGKFJpTFxMH7ZkzTJFCc+pi4qA9c4Yp\nUmhOXUwctGfOMEUKzamLiYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk\n0Jy6mDhoz5xhihSaUxcTB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZpkih\nOXUxcdCeOcMUKTSnLiYO2jNnmCKF5tTFxEF75gxTpNCcupg4aM+cYYoUmlMXEwftmTNMkUJz\n6mLioD1zhilSaE5dTBy0Z84wRQrNqYuJg/bMGaZIoTl1MXHQnjnDFCk0py4mDtozZ5gihebU\nxcRBe+YMU6TQnLqYOGjPnGGKFJpTFxMH7ZkzTJFCc+pi4qA9c4YpUmhOXUwctGfOMEUKzamL\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 420, + "width": 420 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "barplot(df$A, ylab = 'A',xlab = 'no')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11001454", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "670db495", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 69b9b4d2cf36bfe2badf6a959c1fc2b9967b82f5 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:09:21 -0500 Subject: [PATCH 061/254] fix: Solve issue with broken reference on sketchdoc image --- 1-Introduction/03-defining-data/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/03-defining-data/translations/README.es.md b/1-Introduction/03-defining-data/translations/README.es.md index 16d11409..c30a37d7 100644 --- a/1-Introduction/03-defining-data/translations/README.es.md +++ b/1-Introduction/03-defining-data/translations/README.es.md @@ -1,6 +1,6 @@ # Definiendo datos -|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/03-DefiningData.png)| +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/03-DefiningData.png)| |:---:| |Definiendo datos - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | From ef2294e698452233a9c917e4e04806f6bf56afd3 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:10:59 -0500 Subject: [PATCH 062/254] feat:(translation) Improve title for module 1 section 3 --- 1-Introduction/03-defining-data/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/03-defining-data/translations/README.es.md b/1-Introduction/03-defining-data/translations/README.es.md index c30a37d7..4f709ece 100644 --- a/1-Introduction/03-defining-data/translations/README.es.md +++ b/1-Introduction/03-defining-data/translations/README.es.md @@ -1,4 +1,4 @@ -# Definiendo datos +# Definiendo los datos |![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/03-DefiningData.png)| |:---:| From 1466c6fbfbfe12bf1e3189ca0970a05bb0b7f595 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:31:34 -0500 Subject: [PATCH 063/254] fix(translation): Fix broken link on assignment reference --- 1-Introduction/03-defining-data/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/03-defining-data/translations/README.es.md b/1-Introduction/03-defining-data/translations/README.es.md index 4f709ece..c59b5718 100644 --- a/1-Introduction/03-defining-data/translations/README.es.md +++ b/1-Introduction/03-defining-data/translations/README.es.md @@ -66,4 +66,4 @@ Kaggle es una fuente excelente de conjuntos de datos abiertos. Usa los [conjunto ## Assignación -[Clasificación de conjuntos de datos](assignment.md) +[Clasificación de los conjuntos de datos](../assignment.md) From 0998692372bce42a7b12329bed6b01351e8ca139 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:36:46 -0500 Subject: [PATCH 064/254] fix(translation): Translate title on main readme --- 1-Introduction/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/translations/README.es.md b/1-Introduction/translations/README.es.md index e905bf11..9e29302b 100644 --- a/1-Introduction/translations/README.es.md +++ b/1-Introduction/translations/README.es.md @@ -1,4 +1,4 @@ -# Introduction to Data Science +# Introducción a la Ciencia de Datos ![Datos en acción](images/data.jpg) > Fotografía de Stephen Dawson en Unsplash From 7ac9533ebbd21677c827317e6a5e77736f0e5156 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:38:35 -0500 Subject: [PATCH 065/254] fix:(translation): Add missing word (article) on link's label --- 1-Introduction/03-defining-data/translations/README.es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-Introduction/03-defining-data/translations/README.es.md b/1-Introduction/03-defining-data/translations/README.es.md index c59b5718..656be467 100644 --- a/1-Introduction/03-defining-data/translations/README.es.md +++ b/1-Introduction/03-defining-data/translations/README.es.md @@ -2,14 +2,14 @@ |![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/03-DefiningData.png)| |:---:| -|Definiendo datos - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | +|Definiendo los datos - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | Los datos son hechos, información, observaciones y mediciones que son usados para realizar descubrimientos y soportar decisiones informadas. Un punto de datos es una unidad simple de datos dentro de un conjunto de datos, lo cual es una colección de puntos de datos. Los conjuntos de datos pueden venir en distintos formatos y estructuras, y comúnmente se basan en su fuente, o de donde provienen los datos. Por ejemplo, las ganancias mensuales de una compañía pueden estar en una hoja de cálculo, pero los datos del ritmo cardiaco por hora de un reloj inteligente pueden estar en un formato [JSON](https://stackoverflow.com/a/383699). Es algo común para los científicos de datos el trabajar con distintos tipos de datos dentro de un conjunto de datos. Esta lección se enfoca en la identificación y clasificación de datos por sus características y sus fuentes. ## [Examen previo a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) -## Como se describen los datos +## Cómo se describen los datos Los **datos en crudo** son datos que provienen de su fuente en su estado inicial y estos no han sido analizados u organizados. Con el fin de que tenga sentido lo que sucede con un conjunto de datos, es necesario organizarlos en un formato que pueda ser entendido tanto por humanos como por la tecnología usada para analizarla a mayor detalle. La estructura de un conjunto de datos describe como está organizado y puede ser clasificado de forma estructurada, no estructurada y semi-estructurada. Estos tipos de estructuras podrían variar, dependiendo de la fuente pero finalmente caerá en una de estas categorías. ### Datos cuantitativos Los datos cuantitativos son observaciones numéricas en un conjunto de datos que puede ser típicamente analizados, medidos y usados matemáticamente. Algunos ejemplos de datos cuantitativos son: la población de un país, la altura de una persona o las ganancias trimestrales de una compañía. Con algo de análisis adicional, los datos cuantitativos podrían ser usados para descubrir tendencias de temporada en el índice de calidad del aire (AQI) o estimar la probabilidad la hora pico de embotellamiento vial en un día laboral típico. From 86e2690581a0786cdd6e748cafe31d83ccd4c29d Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:43:44 -0500 Subject: [PATCH 066/254] fix: Solve issue with broken link on first image * set right path for main image on module 1 main page --- 1-Introduction/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/translations/README.es.md b/1-Introduction/translations/README.es.md index 9e29302b..75d3b4cc 100644 --- a/1-Introduction/translations/README.es.md +++ b/1-Introduction/translations/README.es.md @@ -1,6 +1,6 @@ # Introducción a la Ciencia de Datos -![Datos en acción](images/data.jpg) +![Datos en acción](../images/data.jpg) > Fotografía de Stephen Dawson en Unsplash En estas lecciones descubrirás cómo se define la Ciencia de Datos y aprenderás acerca de From 8cce81d30007bb27a71144ca34beafc25e1deed4 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Mon, 11 Oct 2021 21:47:13 -0500 Subject: [PATCH 067/254] fix(translation): Fix typo on module 1 section 3 Change Lean with Learn --- 1-Introduction/03-defining-data/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/03-defining-data/translations/README.es.md b/1-Introduction/03-defining-data/translations/README.es.md index 656be467..27ba6743 100644 --- a/1-Introduction/03-defining-data/translations/README.es.md +++ b/1-Introduction/03-defining-data/translations/README.es.md @@ -62,7 +62,7 @@ Kaggle es una fuente excelente de conjuntos de datos abiertos. Usa los [conjunto ## Revisión y auto-estudio -- Esta unidad de Microsoft Lean, titulada [clasifica tus datos](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) tiene un desglose detallado de datos estructurados, semi-estructurados y no estructurados. +- Esta unidad de Microsoft Learn, titulada [clasifica tus datos](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) tiene un desglose detallado de datos estructurados, semi-estructurados y no estructurados. ## Assignación From c0f0147743d7371e31a78ccae69fb03c2889143d Mon Sep 17 00:00:00 2001 From: Subh Chaturvedi Date: Tue, 12 Oct 2021 09:53:45 +0530 Subject: [PATCH 068/254] Added the translation for the ethics README --- .../02-ethics/translations/README.hi.md | 260 ++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 1-Introduction/02-ethics/translations/README.hi.md diff --git a/1-Introduction/02-ethics/translations/README.hi.md b/1-Introduction/02-ethics/translations/README.hi.md new file mode 100644 index 00000000..a83a7e03 --- /dev/null +++ b/1-Introduction/02-ethics/translations/README.hi.md @@ -0,0 +1,260 @@ +# डेटा नैतिकता का परिचय + +|![[(@sketchthedocs) द्वारा स्केचनोट](https://sketchthedocs.dev) ](../../../sketchnotes/02-Ethics.png)| +|:---:| +| डेटा विज्ञान नैतिकता - _[@nitya](https://twitter.com/nitya) द्वारा स्केचनोट_ | + +--- + +हम सब इस डाटा-फाइड दुनिया में रहने वाले डाटा-नागरिक है | + +बाजार के रुझान यह दर्शाते हैं कि २०२२ तक, तीन में से एक बड़ी संस्था अपना डाटा कि खरीद और बेचना ऑनलाइन [दुकानों](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/) द्वारा करेंगी | **ऐप डेवलपर** के रूप में, हम डेटा-संचालित अंतर्दृष्टि और एल्गोरिथम-चालित स्वचालन को दैनिक उपयोगकर्ता अनुभवों में एकीकृत करना आसान और सस्ता पाएंगे। लेकिन जैसे-जैसे AI व्यापक होता जाएगा, हमें इस तरह के एल्गोरिदम के [हथियारीकरण](https://www.youtube.com/watch?v=TQHs8SA1qpk) से होने वाले संभावित नुकसान को भी समझना होगा । + +रुझान यह भी संकेत देते हैं कि हम २०२५ तक [180 zettabytes](https://www.statista.com/statistics/871513/worldwide-data-created/) डेटा का निर्माण और उपभोग करेंगे । **डेटा वैज्ञानिक** के रूप में, यह हमें व्यक्तिगत डेटा तक पहुंचने के लिये अभूतपूर्व स्तर प्रदान करता है । इसका मतलब है कि हम उपयोगकर्ताओं के व्यवहार संबंधी प्रोफाइल बना सकते हैं और निर्णय लेने को इस तरह से प्रभावित कर सकते हैं जो संभावित रूप से एक [मुक्त इच्छा का भ्रम](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) पैदा करता है जब्कि वह उपयोगकर्ताओं को हमारे द्वारा पसंद किए जाने वाले परिणामों की ओर आकर्षित करना । यह डेटा गोपनीयता और उपयोगकर्ता की सुरक्षा पर भी व्यापक प्रश्न उठाता है । + +डेटा नैतिकता अब डेटा विज्ञान और इंजीनियरिंग का _आवश्यक रक्षक_ हैं, जिससे हमें अपने डेटा-संचालित कार्यों से संभावित नुकसान और अनपेक्षित परिणामों को नीचे रखने में मदद मिलती है । [AI के लिए गार्टनर हाइप साइकिल](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) डिजिटल नैतिकता में उचित रुझानों की पहचान करता है AI के _democratization_ और _industrialization_ के आसपास बड़े मेगाट्रेंड के लिए प्रमुख ड्राइवर के रूप में जिम्मेदार AI की ज़िम्मेदारी और AI शासन । + + +![AI के लिए गार्टनर का प्रचार चक्र - २०२०](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +इस पाठ में, हम डेटा नैतिकता के आकर्षक क्षेत्र के बारे में सीखेंगे - मूल अवधारणाओं और चुनौतियों से लेकर केस-स्टडी और शासन जैसी एप्लाइड AI अवधारणाओं तक - जो डेटा और AI के साथ काम करने वाली समूह और संगठनों में नैतिकता संस्कृति स्थापित करने में मदद करते हैं । + +## [पाठ से पहले की प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/2) 🎯 + +## मूल परिभाषाएं + +आइए बुनियादी शब्दावली को समझना शुरू करें । + +"नैतिकता" [ग्रीक शब्द "एथिकोस"](https://en.wikipedia.org/wiki/Ethics) (और इसकी जड़ "एथोस") से आया है जिसका अर्थ _चरित्र या नैतिक प्रकृति_ होता है । + +**नैतिकता** उन साझा मूल्यों और नैतिक सिद्धांतों के बारे में है जो समाज में हमारे व्यवहार को नियंत्रित करते हैं । नैतिकता कानूनों पर नहीं बल्कि "सही बनाम गलत" के व्यापक रूप से स्वीकृत मानदंड पर आधारित है । लेकिन , नैतिक विचार कॉर्पोरेट प्रशासन की पहल और अनुपालन के लिए अधिक प्रोत्साहन पैदा करने वाले सरकारी नियमों को प्रभावित कर सकते हैं । + +**डेटा नैतिकता** एक [नैतिकता की नई शाखा](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) है जो "_डेटा, एल्गोरिदम और से संबंधित नैतिक समस्याओं का अध्ययन और मूल्यांकन करती है_" । यहां, **"डेटा"** - निर्माण, रिकॉर्डिंग, अवधि, प्रसंस्करण प्रसार, साझाकरण और उपयोग से संबंधित कार्यों पर केंद्रित है, **"एल्गोरिदम"** AI , एजेंटों, मशीन लर्निंग और रोबोटो पर केंद्रित है, और ** "अभ्यास"** जिम्मेदार नवाचार, प्रोग्रामिंग, हैकिंग और नैतिकता कोड जैसे विषयों पर केंद्रित है । + +**एप्लाइड नैतिकता** [नैतिक विचारों का व्यावहारिक अनुप्रयोग](https://en.wikipedia.org/wiki/Applied_ethics) है । यह _वास्तविक दुनिया की कार्रवाइयों, उत्पादों और प्रक्रियाओं_ के संदर्भ में नैतिक मुद्दों की सक्रिय रूप से जांच करने और सुधारात्मक उपाय करने की प्रक्रिया है ताकि ये हमारे परिभाषित नैतिक मूल्यों के साथ संरेखित रहें । + +**नैतिकता संस्कृति** यह सुनिश्चित करने के लिए [_operationalizing_ एप्लाइड नैतिकता](https://hbr.org/2019/05/how-to-design-an-ethical-organization) के बारे में है कि हमारे नैतिक सिद्धांतों और प्रथाओं को पूरे संगठन में एक सुसंगत और मापनीय तरीके से अपनाया जाए । सफल नैतिक संस्कृतियाँ संगठन-व्यापी नैतिक सिद्धांतों को परिभाषित करती हैं, अनुपालन के लिए सार्थक प्रोत्साहन प्रदान करती हैं, और संगठन के हर स्तर पर वांछित व्यवहारों को प्रोत्साहित और प्रवर्धित करके नैतिक मानदंडों को सुदृढ़ करती हैं । + + +## नैतिकता की अवधारणाएं + +इस खंड में, हम डेटा नैतिकता के लिए साझा मूल्यों (सिद्धांतों) और नैतिक चुनौतियों (समस्याओं) जैसी अवधारणाओं पर चर्चा करेंगे - और मामले के अध्ययन का पता लगाएंगे जो आपको वास्तविक दुनिया के संदर्भों में इन अवधारणाओं को समझने में मदद करते हैं । + +### 1. नैतिक सिद्धांत + +प्रत्येक डेटा नैतिकता रणनीति _नैतिक सिद्धांतों_ को परिभाषित करके शुरू होती है - "साझा मूल्य" जो स्वीकार्य व्यवहारों का वर्णन करते हैं, और हमारे डेटा और AI परियोजनाओं में अनुपालन कार्यों का मार्गदर्शन करते हैं । लेकिन, अधिकांश बड़े संगठन इन्हें एक _नैतिक AI_ मिशन स्टेटमेंट या फ्रेमवर्क में रेखांकित करते हैं जो कॉर्पोरेट स्तर पर परिभाषित होता है और सभी टीमों में लगातार लागू होता है । + +**उदाहरण:** माइक्रोसॉफ्ट की [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai) मिशन स्टेटमेंट कहती है : _"हम नैतिक सिद्धांतों द्वारा संचालित AI की उन्नति के लिए प्रतिबद्ध हैं जो लोगों को सबसे पहले रखते हैं |"_ - नीचे दिए गए ढांचे में 6 नैतिक सिद्धांतों की वार्ना की गयी है : + +![माइक्रोसॉफ्ट की Responsible AI](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +आइए संक्षेप में इन सिद्धांतों के बारे में सीखे | _पारदर्शिता_ और _जवाबदेही_ वह मूलभूत मूल्य हैं जिन पर अन्य सिद्धांतों का निर्माण किया गया है - तो चलिए वहां शुरु करते हैं : + +* [**जवाबदेही**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) उपयोगकर्ताओं को उनके डेटा और AI संचालन, और इन नैतिक सिद्धांतों के अनुपालन के लिए _जिम्मेदार_ बनाती है । +* [**पारदर्शिता**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) सुनिश्चित करती है कि डेटा और AI क्रियाएं उपयोगकर्ताओं के लिए _समझने योग्य_ (व्याख्या योग्य) हैं, यह बताते हुए कि निर्णयों के पीछे क्या और क्यों है । +* [**निष्पक्षता**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - यह सुनिश्चित करने पर ध्यान केंद्रित करती है कि AI डेटा और सिस्टम में किसी भी प्रणालीगत या निहित सामाजिक-तकनीकी पूर्वाग्रहों को संबोधित करते हुए _सभी लोगों_ के साथ उचित व्यवहार करता है । +* [**विश्वसनीयता और अहनिकारकता**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - सुनिश्चित करती है कि AI- संभावित नुकसान या अनपेक्षित परिणामों को कम करते हुए परिभाषित मूल्यों के साथ _लगातार_ काम करता है । +* [**निजता एवं सुरक्षा**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - डेटा वंश को समझने, और उपयोगकर्ताओं को _डेटा गोपनीयता और संबंधित सुरक्षा_ प्रदान करने के बारे में है । +* [**समग्रता**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - AI समाधानों को इरादे से डिजाइन करना एवं उन्हें _मानवीय आवश्यकताओं की एक विस्तृत श्रृंखला_ और क्षमताओं को पूरा करने के लिए अनुकूलित करने के बारे में है । + +> 🚨 अपने डेटा नैतिकता मिशन वक्तव्य के बारे में सोचें | अन्य संगठनों से नैतिक AI ढांचों का अन्वेषण करें - ये हैं कुछ उदाहरण [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles) ,एवं [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/) | इनके बीच क्या साझा मूल्य हैं? ये सिद्धांत उनके द्वारा संचालित AI उत्पाद या उद्योग से कैसे संबंधित हैं ? + +### 2. नैतिकता से जुडी चुनौतियां + +एक बार जब हमारे पास नैतिक सिद्धांत परिभाषित हो जाते हैं, तो अगला कदम यह देखने के लिए हमारे डेटा और एआई कार्यों का मूल्यांकन करना है कि क्या वे उन साझा मूल्यों के साथ संरेखित हैं । अपने कार्यों के बारे में दो श्रेणियों में सोचें: _डेटा संग्रह_ और _एल्गोरिदम डिज़ाइन_ | + +डेटा संग्रह के साथ, कार्रवाइयों में संभवतः पहचान योग्य जीवित व्यक्तियों के लिए **व्यक्तिगत डेटा** या व्यक्तिगत रूप से पहचान योग्य जानकारी शामिल होगी । इसमें [गैर-व्यक्तिगत डेटा के विविध आइटम](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) शामिल हैं, जो _collectively_ किसी व्यक्ति की पहचान करते हैं । नैतिक चुनौतियां _डेटा गोपनीयता_, _डेटा स्वामित्व_, और उपयोगकर्ताओं के लिए _सूचित सहमति_ और _बौद्धिक संपदा अधिकार_ जैसे संबंधित विषयों से संबंधित हो सकती हैं । + +एल्गोरिथम डिज़ाइन के साथ, क्रियाओं में **डेटासेट** एकत्र करना और क्यूरेट करना शामिल होगा, फिर उनका उपयोग **डेटा मॉडल** को प्रशिक्षित और तैनात करने के लिए किया जाएगा जो वास्तविक दुनिया के संदर्भों में परिणामों की भविष्यवाणी या स्वचालित निर्णय लेते हैं । एल्गोरिथम डिज़ाइन के साथ, क्रियाओं में **डेटासेट** एकत्र करना और क्यूरेट करना शामिल होगा, फिर उनका उपयोग **डेटा मॉडल** को प्रशिक्षित और तैनात करने के लिए किया जाएगा जो वास्तविक दुनिया के संदर्भों में परिणामों की भविष्यवाणी या स्वचालित निर्णय लेते हैं । + +दोनों ही मामलों में, नैतिकता की चुनौतियाँ उन क्षेत्रों को उजागर करती हैं जहाँ हमारे कार्यों का हमारे साझा मूल्यों के साथ टकराव हो सकता है । इन चिंताओं का पता लगाने, सामना करने, कम करने या समाप्त करने के लिए - हमें अपने कार्यों से संबंधित नैतिक "हां या नहीं" प्रश्न पूछने की जरूरत है, फिर आवश्यकतानुसार सुधारात्मक कार्रवाई करें । आइए कुछ नैतिक चुनौतियों और उनके द्वारा उठाए गए नैतिक प्रश्नों पर एक नज़र डालें : + + +#### 2.1 डेटा स्वामित्व + +डेटा संग्रह में अक्सर व्यक्तिगत डेटा शामिल होता है जो डेटा विषयों की पहचान कर सकता है । [डेटा स्वामित्व](https://permission.io/blog/data-ownership) _नियंत्रण_ के बारे में और उन [_उपयोगकर्ता अधिकारो_](https://permission.io/blog/data-ownership)के सम्भंदित है जो निर्माण , प्रसंस्करण और से संबंधित है । + +हमें जो नैतिक प्रश्न पूछने चाहिए, वे हैं : + * डेटा का मालिक कौन है ? (उपयोगकर्ता या संगठन) + * डेटा विषयों के पास क्या अधिकार हैं ? (उदा: पहुंच, मिटाना, सुवाह्यता) + * संगठनों के पास क्या अधिकार हैं ? (उदा: दुर्भावनापूर्ण उपयोगकर्ता समीक्षाओं का सुधार) + +#### 2.2 सूचित सहमति + +[सूचित सहमति](https://legaldictionary.net/informed-consent/) उद्देश्य, संभावित जोखिमों और विकल्पों सहित प्रासंगिक तथ्यों की _पूर्ण समझ_ के साथ कार्रवाई (जैसे डेटा संग्रह) के लिए सहमत होने वाले उपयोगकर्ताओं के कार्य को परिभाषित करता है । + +यहां देखने लायक प्रश्न हैं : + * क्या उपयोगकर्ता (डेटा विषय) ने डेटा कैप्चर और उपयोग के लिए अनुमति दी थी ? + * क्या उपयोगकर्ता को वह उद्देश्य समझ में आया जिसके लिए उस डेटा को कैप्चर किया गया था ? + * क्या उपयोगकर्ता ने उनकी भागीदारी से संभावित जोखिमों को समझा ? + +#### 2.3 बौद्धिक संपदा + +[बौद्धिक संपदा](https://en.wikipedia.org/wiki/Intellectual_property) मानव पहल से उत्पन्न अमूर्त कृतियों को संदर्भित करता है, जिनका व्यक्तियों या व्यवसायों के लिए _आर्थिक_ महत्व हो सकता है । + +यहां देखने लायक प्रश्न हैं : + * क्या जमा किए गए डेटा का किसी उपयोगकर्ता या व्यवसाय के लिए आर्थिक महत्व है ? + * क्या **उपयोगकर्ता** के पास यहां बौद्धिक संपदा है ? + * क्या **संगठन** के पास यहां बौद्धिक संपदा है ? + * अगर ये अधिकार मौजूद हैं, तो हम उनकी रक्षा कैसे कर रहे हैं ? + +#### 2.4 डाटा गोपनीयता + +[डेटा गोपनीयता](https://www.northeaster.edu/graduate/blog/what-is-data-privacy/) या सूचना गोपनीयता व्यक्तिगत रूप से पहचान योग्य जानकारी के संबंध में उपयोगकर्ता की गोपनीयता के संरक्षण और उपयोगकर्ता की पहचान की सुरक्षा को संदर्भित करता है । + +यहां देखने लायक प्रश्न हैं : + * क्या उपयोगकर्ताओं का (व्यक्तिगत) डेटा हैक और लीक से सुरक्षित है ? + * क्या उपयोगकर्ताओं का डेटा केवल अधिकृत उपयोगकर्ताओं और संदर्भों के लिए सुलभ है ? + * क्या डेटा साझा या प्रसारित होने पर उपयोगकर्ताओं की गोपनीयता बनी रहती है ? + * क्या किसी उपयोगकर्ता की पहचान अज्ञात डेटासेट से की जा सकती है ? + + +#### 2.5 भूला दिया जाने का अधिकार + +[भूला दिया जाने का अधिकार](https://en.wikipedia.org/wiki/Right_to_be_forgotten) अतिरिक्त सुविधाएं प्रदान करता है उपयोगकर्ताओं के लिए व्यक्तिगत डेटा सुरक्षा। विशेष रूप से, यह उपयोगकर्ताओं को इंटरनेट खोजों और अन्य स्थानों से व्यक्तिगत डेटा को हटाने या हटाने का अनुरोध करने का अधिकार देता है, _विशिष्ट परिस्थितियों में_ - उन्हें उनके खिलाफ पिछली कार्रवाई किए बिना ऑनलाइन एक नई शुरुआत करने की अनुमति देता है । + +यहां देखने लायक प्रश्न हैं : + * क्या सिस्टम डेटा विषयों को अपना डेटा मिटाने का अनुरोध करने की अनुमति देता है ? + * क्या उपयोगकर्ता की सहमति वापस लेने से स्वचालित डेटा मिटाना शुरू हो जाएगा ? + * क्या डेटा सहमति के बिना या गैरकानूनी तरीके से एकत्र किया गया था ? + * क्या हम डेटा गोपनीयता के लिए सरकारी नियमों का अनुपालन करते हैं ? + + +#### 2.6 डेटासेट पूर्वाग्रह + +डेटासेट या [संग्रह पूर्वाग्रह](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) एल्गोरिथम विकास के लिए डेटा के _गैर-प्रतिनिधि_ सबसेट का चयन करने के बारे में है, जिसमें संभावित अनुचितता पैदा होती है विभिन्न समूहों के लिए भेदभाव । पूर्वाग्रह के प्रकारों में चयन या नमूना पूर्वाग्रह, स्वयंसेवी पूर्वाग्रह और साधन पूर्वाग्रह शामिल हैं । + +यहां देखने लायक प्रश्न हैं : + * क्या हमने डेटा विषयों के प्रतिनिधि सेट की भर्ती की ? + * क्या हमने विभिन्न पूर्वाग्रहों के लिए अपने एकत्रित या क्यूरेट किए गए डेटासेट का परीक्षण किय ा? + * क्या हम खोजे गए पूर्वाग्रहों को कम कर सकते हैं या हटा सकते हैं ? + +#### 2.7 डेटा की गुणवत्ता + +[डेटा गुणवत्ता](https://lakefs.io/data-quality-testing/) जो हमारे एल्गोरिदम को विकसित करने के लिए उपयोग किए गए क्यूरेट किए गए डेटासेट की वैधता को देखता है, यह देखने के लिए जाँच करता है कि सुविधाएँ और रिकॉर्ड सटीकता और स्थिरता के स्तर की आवश्यकताओं को पूरा करते हैं या नहीं हमारे AI उद्देश्य के लिए आवश्यक है । + +यहां देखने लायक प्रश्न हैं : + * क्या हमने अपने उपयोग के मामले में मान्य _features_ को कैप्चर किया ? + * क्या डेटा विविध डेटा स्रोतों से _लगातार_ कैप्चर किया गया था ? + * क्या विविध स्थितियों या परिदृश्यों के लिए डेटासेट _पूर्ण_ है ? + * क्या वास्तविकता को प्रतिबिंबित करने में जानकारी _सटीक_ रूप से कैप्चर की गई है ? + +#### 2.8 एल्गोरिथम की निष्पक्षता + +[एल्गोरिदम निष्पक्षता](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) यह देखने के लिए जांच करता है कि क्या एल्गोरिथम डिज़ाइन व्यवस्थित रूप से डेटा विषयों के विशिष्ट उपसमूहों के साथ भेदभाव करता है जिससे [संभावित नुकसान](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) होते हैं में _allocation_ (जहां संसाधनों को अस्वीकार कर दिया जाता है या उस समूह से रोक दिया जाता है) और _सेवा की गुणवत्ता_ (जहां AI कुछ उपसमूहों के लिए उतना सटीक नहीं है जितना कि यह दूसरों के लिए है) । + +यहां देखने लायक प्रश्न हैं : + * क्या हमने विविध उपसमूहों और स्थितियों के लिए मॉडल सटीकता का मूल्यांकन किया ? + * क्या हमने संभावित नुकसान (जैसे, स्टीरियोटाइपिंग) के लिए सिस्टम की जांच की ? + * क्या हम पहचाने गए नुकसान को कम करने के लिए डेटा को संशोधित कर सकते हैं या मॉडल को फिर से प्रशिक्षित कर सकते हैं ? + +अधिक जानने के लिए [AI फेयरनेस चेकलिस्ट](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) जैसे संसाधनों का अन्वेषण करें । + +#### 2.9 मिथ्या निरूपण + +[डेटा मिसरिप्रेजेंटेशन](https://www.sciencedirect.com/topics/computer-science/misrepresentation) यह पूछने के बारे में है कि क्या हम एक वांछित कथा का समर्थन करने के लिए भ्रामक तरीके से ईमानदारी से रिपोर्ट किए गए डेटा से अंतर्दृष्टि का संचार कर रहे हैं । + +यहां देखने लायक प्रश्न हैं : + * क्या हम अपूर्ण या गलत डेटा की रिपोर्ट कर रहे हैं ? + * क्या हम डेटा को इस तरह से देख रहे हैं जिससे भ्रामक निष्कर्ष निकलते हैं ? + * क्या हम परिणामों में हेरफेर करने के लिए चुनिंदा सांख्यिकीय तकनीकों का उपयोग कर रहे हैं ? + * क्या ऐसे वैकल्पिक स्पष्टीकरण हैं जो एक अलग निष्कर्ष प्रस्तुत कर सकते हैं ? + +#### 2.10 मुक्त चयन +[इल्यूज़न ऑफ़ फ्री चॉइस](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) तब होता है जब सिस्टम "चॉइस आर्किटेक्चर" लोगों को पसंदीदा परिणाम लेने के लिए प्रेरित करने के लिए निर्णय लेने वाले एल्गोरिदम का उपयोग करता है। जबकि उन्हें विकल्प और नियंत्रण देना प्रतीत होता है। ये [डार्क पैटर्न](https://www.darkpatterns.org/) उपयोगकर्ताओं को सामाजिक और आर्थिक नुकसान पहुंचा सकते हैं। चूंकि उपयोगकर्ता निर्णय व्यवहार प्रोफाइल को प्रभावित करते हैं, इसलिए ये कार्रवाइयां संभावित रूप से भविष्य के विकल्पों को प्रेरित करती हैं जो इन नुकसानों के प्रभाव को बढ़ा या बढ़ा सकते हैं। + +यहां देखने लायक प्रश्न हैं : + * क्या उपयोगकर्ता ने उस विकल्प को बनाने के निहितार्थों को समझा ? + * क्या उपयोगकर्ता (वैकल्पिक) विकल्पों और प्रत्येक के पेशेवरों और विपक्षों से अवगत था ? + * क्या उपयोगकर्ता किसी स्वचालित या प्रभावित विकल्प को बाद में उलट सकता है ? + +### 3. केस स्टडी + +इन नैतिक चुनौतियों को वास्तविक दुनिया के संदर्भों में रखने के लिए, ऐसे मामलों के अध्ययन को देखने में मदद मिलती है जो व्यक्तियों और समाज को संभावित नुकसान और परिणामों को उजागर करते हैं, जब ऐसे नैतिकता उल्लंघनों की अनदेखी की जाती है । + +कुछ उदाहरण निम्नलिखित हैं : + +| नैतिकता चुनौती | मामले का अध्ययन | +|--- |--- | +| **सूचित सहमति** | १९७२ - [टस्केगी सिफलिस अध्ययन](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - अध्ययन में भाग लेने वाले अफ्रीकी अमेरिकी पुरुषों को उन शोधकर्ताओं द्वारा मुफ्त चिकित्सा देखभाल का वादा किया गया था जो उनके निदान या उपचार की उपलब्धता के बारे में विषयों को सूचित करने में विफल रहे। कई विषयों की मृत्यु हो गई और साथी या बच्चे प्रभावित हुए; अध्ययन 40 साल तक चला । | +| **डाटा प्राइवेसी** | २००७ - [नेटफ्लिक्स डेटा प्राइज](https://www.wired.com/2007/12/why-anonymous-data-only-isnt/) ने शोधकर्ताओं को सिफारिश एल्गोरिदम को बेहतर बनाने में मदद करने के लिए 50K ग्राहकों_ से _10M अनाम मूवी रैंकिंग प्रदान की। हालांकि, शोधकर्ता अज्ञात डेटा को व्यक्तिगत रूप से पहचाने जाने योग्य डेटा के साथ _बाहरी डेटासेट_ (उदाहरण के लिए, IMDb टिप्पणियों) में सहसंबंधित करने में सक्षम थे - कुछ नेटफ्लिक्स ग्राहकों को प्रभावी रूप से "डी-अनामीकरण" ।| +| **संग्रह पूर्वाग्रह** | २०१३ - द सिटी ऑफ़ बोस्टन [विकसित स्ट्रीट बम्प](https://www.boston.gov/transportation/street-bump), एक ऐप जो नागरिकों को गड्ढों की रिपोर्ट करने देता है, जिससे शहर को समस्याओं को खोजने और ठीक करने के लिए बेहतर रोडवे डेटा मिलता है । हालांकि, [निम्न आय वर्ग के लोगों के पास कारों और फोन तक कम पहुंच थी](https://hbr.org/2013/04/the-hidden-biases-in-big-data), जिससे इस ऐप में उनके सड़क संबंधी मुद्दे अदृश्य हो गए थे। . डेवलपर्स ने शिक्षाविदों के साथ निष्पक्षता के लिए _न्यायसंगत पहुंच और डिजिटल विभाजन_ मुद्दों पर काम किया । | +| **एल्गोरिथम निष्पक्षता** | २०१८ - एमआईटी [जेंडर शेड्स स्टडी] (http://gendershades.org/overview.html) ने लिंग वर्गीकरण एआई उत्पादों की सटीकता का मूल्यांकन किया, महिलाओं और रंग के व्यक्तियों के लिए सटीकता में अंतराल को उजागर किया । एक [2019 ऐप्पल कार्ड](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) पुरुषों की तुलना में महिलाओं को कम क्रेडिट प्रदान करता है। दोनों ने एल्गोरिथम पूर्वाग्रह में सचित्र मुद्दों को सामाजिक-आर्थिक नुकसान की ओर अग्रसर किया ।| +| **डेटा गलत बयानी** | २०२० - [जॉर्जिया डिपार्टमेंट ऑफ पब्लिक हेल्थ ने जारी किया COVID-19 चार्ट](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) जो एक्स-अक्ष पर गैर-कालानुक्रमिक क्रम के साथ पुष्टि किए गए मामलों में रुझानों के बारे में नागरिकों को गुमराह करने के लिए प्रकट हुए। यह विज़ुअलाइज़ेशन ट्रिक्स के माध्यम से गलत बयानी दिखाता है । | +| **स्वतंत्र चुनाव का भ्रम** | २०२० - लर्निंग ऐप [एबीसीमाउस ने एफटीसी शिकायत को निपटाने के लिए 10 मिलियन डॉलर का भुगतान किया](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) जहां माता-पिता भुगतान करने में फंस गए थे सदस्यता वे रद्द नहीं कर सके । यह पसंद वास्तुकला में काले पैटर्न को दिखाता है, जहां उपयोगकर्ता संभावित रूप से हानिकारक विकल्पों की ओर झुकाव कर रहे थे । | +| **डेटा गोपनीयता और उपयोगकर्ता अधिकार** | २०२१ - फेसबुक [डेटा ब्रीच](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) 530M उपयोगकर्ताओं के डेटा को उजागर किया, जिसके परिणामस्वरूप FTC को $ 5B का समझौता हुआ । हालांकि इसने डेटा पारदर्शिता और पहुंच के आसपास उपयोगकर्ता अधिकारों का उल्लंघन करने वाले उल्लंघन के उपयोगकर्ताओं को सूचित करने से इनकार कर दिया । | + +अधिक केस स्टडी के बारे में चाहते हैं ? इन संसाधनों की जाँच करें : +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - विविध उद्योगों में नैतिकता की दुविधा । +* [Data Science Ethics course](https://www.coursera.org/learn/data-science-ethics#syllabus) - ऐतिहासिक मामले का अध्ययन । +* [Where things have gone wrong](https://deon.drivendata.org/examples/) - उदाहरण के साथ डीओन चेकलिस्ट | + +> 🚨 आपके द्वारा देखी गई केस स्टडी के बारे में सोचें - क्या आपने अपने जीवन में इसी तरह की नैतिक चुनौती का अनुभव किया है, या इससे प्रभावित हुए हैं ? क्या आप कम से कम एक अन्य केस स्टडी के बारे में सोच सकते हैं जो इस खंड में चर्चा की गई नैतिक चुनौतियों में से एक को दर्शाती है ? + +## एप्लाइड नैतिकता + +हमने वास्तविक दुनिया के संदर्भों में नैतिक अवधारणाओं, चुनौतियों और केस स्टडी के बारे में बात की है। लेकिन हम अपनी परियोजनाओं में नैतिक सिद्धांतों और प्रथाओं को _लागू करना_ कैसे शुरू करते हैं ? और हम बेहतर शासन के लिए इन प्रथाओं को कैसे _संचालन_कृत करते हैं ? आइए कुछ वास्तविक दुनिया के समाधान देखें : + +### 1. व्यावसायिक कोड + +व्यावसायिक कोड संगठनों के लिए सदस्यों को उनके नैतिक सिद्धांतों और मिशन वक्तव्य का समर्थन करने के लिए "प्रोत्साहित" करने के लिए एक विकल्प प्रदान करते हैं । पेशेवर व्यवहार के लिए कोड _नैतिक दिशानिर्देश_ हैं, जो कर्मचारियों या सदस्यों को उनके संगठन के सिद्धांतों के अनुरूप निर्णय लेने में मदद करते हैं । वे केवल उतने ही अच्छे हैं जितने सदस्यों से स्वैच्छिक अनुपालन; हालांकि, कई संगठन सदस्यों से अनुपालन को प्रेरित करने के लिए अतिरिक्त पुरस्कार और दंड प्रदान करते हैं । + +उदाहरणों में शामिल : + + * [ऑक्सफोर्ड म्यूनिख](http://www.code-of-ethics.org/code-of-conduct/) आचार संहिता + * [डेटा साइंस एसोसिएशन](http://datascienceassn.org/code-of-conduct.html) आचार संहिता (2013 में बनाया गया) + * [एसीएम आचार संहिता और व्यावसायिक आचरण](https://www.acm.org/code-of-ethics) (1993 से) + +> 🚨 क्या आप एक पेशेवर इंजीनियरिंग या डेटा विज्ञान संगठन से संबंधित हैं ? यह देखने के लिए कि क्या वे पेशेवर आचार संहिता को परिभाषित करते हैं, उनकी साइट का अन्वेषण करें । यह उनके नैतिक सिद्धांतों के बारे में क्या कहता है ? वे सदस्यों को कोड का पालन करने के लिए "प्रोत्साहित" कैसे कर रहे हैं ? + +### 2. Ethics Checklists + +जबकि पेशेवर कोड चिकित्सकों से आवश्यक _नैतिक व्यवहार_ को परिभाषित करते हैं, वे प्रवर्तन में [विशेष रूप से बड़े पैमाने पर परियोजनाओं में](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) [ज्ञात सीमाएं हैं] । इसके बजाय, कई डेटा विज्ञान विशेषज्ञ [चेकलिस्ट के वकील](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), जो **सिद्धांतों को अभ्यासों से जोड़ सकते हैं** अधिक नियतात्मक और कार्रवाई योग्य तरीके । + +चेकलिस्ट प्रश्नों को "हां/नहीं" कार्यों में परिवर्तित करते हैं जिन्हें संचालित किया जा सकता है, जिससे उन्हें मानक उत्पाद रिलीज वर्कफ़्लो के हिस्से के रूप में ट्रैक किया जा सकता है । + +उदाहरणों में शामिल : + * [Deon](https://deon.drivendata.org/) - आसान एकीकरण के लिए कमांड-लाइन टूल के साथ [उद्योग अनुशंसाओं](https://deon.drivedata.org/#checklist-citations) से बनाई गई एक सामान्य-उद्देश्य डेटा नैतिकता चेकलिस्ट । + * [Privacy Audit Checklist](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - कानूनी और सामाजिक जोखिम के दृष्टिकोण से सूचना प्रबंधन प्रथाओं के लिए सामान्य मार्गदर्शन प्रदान करता है । + * [AI Fairness Checklist](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - एआई विकास चक्रों में निष्पक्षता जांच को अपनाने और एकीकरण का समर्थन करने के लिए एआई चिकित्सकों द्वारा बनाया गया । + * [22 questions for ethics in data and AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - डिजाइन, कार्यान्वयन, और संगठनात्मक, संदर्भों में नैतिक मुद्दों की प्रारंभिक खोज के लिए संरचित, अधिक खुला ढांचा । + +### 3. नैतिकता विनियम + +नैतिकता साझा मूल्यों को परिभाषित करने और _स्वेच्छा_ से सही काम करने के बारे में है । **अनुपालन** _कानून का पालन करने के बारे में है_ यदि और जहां परिभाषित किया गया है । **शासन** मोटे तौर पर उन सभी तरीकों को शामिल करता है जिनमें संगठन नैतिक सिद्धांतों को लागू करने और स्थापित कानूनों का पालन करने के लिए काम करते हैं । + +आज, संगठनों के भीतर शासन दो रूप लेता है । सबसे पहले, यह **नैतिक एआई** सिद्धांतों को परिभाषित करने और संगठन में सभी एआई-संबंधित परियोजनाओं में गोद लेने के संचालन के लिए प्रथाओं को स्थापित करने के बारे में है । दूसरा, यह उन क्षेत्रों के लिए सरकार द्वारा अनिवार्य सभी **डेटा सुरक्षा नियमों** का अनुपालन करने के बारे में है जहां यह संचालित होता है । + +डेटा सुरक्षा और गोपनीयता नियमों के उदाहरण : + + * `१९७४`, [US Privacy Act](https://www.justice.gov/opcl/privacy-act-1974) - व्यक्तिगत जानकारी के संग्रह, उपयोग और प्रकटीकरण को नियंत्रित करता है । + * `१९९६`, [US Health Insurance Portability & Accountability Act (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - व्यक्तिगत स्वास्थ्य डेटा की सुरक्षा करता है । + * `१९९८`, [US Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - 13 साल से कम उम्र के बच्चों की डेटा गोपनीयता की रक्षा करता है । + * `२०१८`, [General Data Protection Regulation (GDPR)](https://gdpr-info.eu/) - उपयोगकर्ता अधिकार, डेटा सुरक्षा और गोपनीयता प्रदान करता है । + * `२०१८`, [California Consumer Privacy Act (CCPA)](https://www.oag.ca.gov/privacy/ccpa) उपभोक्ताओं को उनके (व्यक्तिगत) डेटा पर अधिक _अधिकार_ देता है । + * `२०२१`, चीन का [Personal Information Protection Law](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) अभी-अभी पारित हुआ, दुनिया भर में सबसे मजबूत ऑनलाइन डेटा गोपनीयता नियमों में से एक बना । + +> 🚨 यूरोपीय संघ परिभाषित GDPR (जनरल डेटा प्रोटेक्शन रेगुलेशन) आज सबसे प्रभावशाली डेटा गोपनीयता नियमों में से एक है । क्या आप जानते हैं कि यह नागरिकों की डिजिटल गोपनीयता और व्यक्तिगत डेटा की सुरक्षा के लिए [8 उपयोगकर्ता अधिकार](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) को भी परिभाषित करता है ? जानें कि ये क्या हैं, और क्यों मायने रखते हैं । + + +### 4. नैतिकता संस्कृति + +ध्यान दें कि _अनुपालन_ ("कानून के पत्र को पूरा करने के लिए पर्याप्त प्रयास करना") और [प्रणालीगत मुद्दों](https://www.coursera.org/learn/data-science-ethics/home/week) को संबोधित करने के बीच एक अमूर्त अंतर है । / 4) (जैसे ossification, सूचना विषमता, और वितरण संबंधी अनुचितता) जो AI के शस्त्रीकरण को गति दे सकता है । + +बाद वाले को [नैतिक संस्कृतियों को परिभाषित करने के लिए सहयोगात्मक दृष्टिकोण](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-drive-approach-26f451afa29f) की आवश्यकता होती है, जो पूरे संगठनों में भावनात्मक संबंध और सुसंगत साझा मूल्यों का निर्माण करते हैं । यह संगठनों में अधिक [औपचारिक डेटा नैतिकता संस्कृतियों](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) की मांग करता है - _किसी_ को [एंडोन कॉर्ड को खींचने] की अनुमति देता है (https:/ /en.wikipedia.org/wiki/Andon_(manufacturing)) (इस प्रक्रिया में नैतिकता संबंधी चिंताओं को जल्दी उठाने के लिए) और एआई परियोजनाओं में _नैतिक मूल्यांकन_ (उदाहरण के लिए, भर्ती में) एक मुख्य मानदंड टीम गठन करना । + +--- +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/3) 🎯 +## समीक्षा और स्व अध्ययन + +पाठ्यक्रम और पुस्तकें मूल नैतिकता अवधारणाओं और चुनौतियों को समझने में मदद करती हैं, जबकि केस स्टडी और उपकरण वास्तविक दुनिया के संदर्भों में लागू नैतिकता प्रथाओं के साथ मदद करते हैं। शुरू करने के लिए यहां कुछ संसाधन दिए गए हैं। + +* [Machine Learning For Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - Microsoft से निष्पक्षता पर पाठ । +* [Principles of Responsible AI](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - माइक्रोसॉफ्ट लर्न की ओर से फ्री लर्निंग पाथ । +* [Ethics and Data Science](https://resources.oreilly.com/examples/0636920203964) - O'Reilly EBook (M. Loukides, H. Mason et. al) +* [Data Science Ethics](https://www.coursera.org/learn/data-science-ethics#syllabus) - मिशिगन विश्वविद्यालय से ऑनलाइन पाठ्यक्रम । +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - टेक्सास विश्वविद्यालय से केस स्टडीज । + +# कार्यभार + +[डेटा एथिक्स केस स्टडी लिखें](assignment.md) From b3a86d9ffaeb14189336b3593d45c6252dc2f257 Mon Sep 17 00:00:00 2001 From: Heril Changwal <76246330+Heril18@users.noreply.github.com> Date: Tue, 12 Oct 2021 10:01:07 +0530 Subject: [PATCH 069/254] Update README.hi.md All Links Fixed. The link : [Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) is not working even in the original Readme file. So please have a look to this Link. --- .../16-communication/translations/README.hi.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md index 85ae92d4..681d2923 100644 --- a/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md +++ b/4-Data-Science-Lifecycle/16-communication/translations/README.hi.md @@ -169,10 +169,9 @@ ## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/31) ### स्व अध्ययन के लिए अनुशंसित संसाधन -[द फाइव सी ऑफ़ स्टोरीटेलिंग - आर्टिक्यूलेट पर्सुएशन](http://articlepersuasion.com/the-five-cs-of-storytelling/) - -[१.४ एक संचारक के रूप में आपकी जिम्मेदारियां - सफलता के लिए व्यावसायिक संचार (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibility-as-a-communicator/) +[द फाइव सी ऑफ़ स्टोरीटेलिंग - आर्टिक्यूलेट पर्सुएशन](http://articulatepersuasion.com/the-five-cs-of-storytelling/) +[१.४ एक संचारक के रूप में आपकी जिम्मेदारियां - सफलता के लिए व्यावसायिक संचार (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibilities-as-a-communicator/) [डेटा के साथ कहानी कैसे सुनाएं (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data) [टू-वे कम्युनिकेशन: अधिक व्यस्त कार्यस्थल के लिए 4 टिप्स (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication) @@ -181,7 +180,7 @@ [डेटा के साथ कहानी कैसे सुनाएं | ल्यूसिडचार्ट ब्लॉग](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data) -[6 Cs ऑफ़ इफेक्टिव स्टोरीटेलिंग ऑन सोशल मीडिया | कूलर इनसाइट्स](https://coolerinsights.com/2018/06/efffect-storytelling-social-media/) +[6 Cs ऑफ़ इफेक्टिव स्टोरीटेलिंग ऑन सोशल मीडिया | कूलर इनसाइट्स](https://coolerinsights.com/2018/06/effective-storytelling-social-media/) [प्रस्तुतिकरण में भावनाओं का महत्व | Ethos3 - एक प्रस्तुति प्रशिक्षण और डिजाइन एजेंसी](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/) @@ -193,7 +192,7 @@ [डेटा कैसे प्रस्तुत करें [१० विशेषज्ञ युक्तियाँ] | ऑब्जर्वप्वाइंट](https://resources.observepoint.com/blog/10-tips-for-presenting-data) -[माइक्रोसॉफ्ट वर्ड - प्रेरक निर्देश.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) +[Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) [द पावर ऑफ स्टोरी फॉर योर डेटा (थिंकहडी.कॉम)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx) @@ -209,4 +208,4 @@ ## कार्यभार -[एक कहानी बताओ](assignment.md) +[एक कहानी बताओ](../assignment.md) From f111820331016bd613d680c365f61c9b0fdc8401 Mon Sep 17 00:00:00 2001 From: Kaushal Joshi <53049546+joshi-kaushal@users.noreply.github.com> Date: Tue, 12 Oct 2021 18:24:32 +0530 Subject: [PATCH 070/254] Updared README.hi.md - 3 --- .../translations/README.hi.md | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/1-Introduction/03-defining-data/translations/README.hi.md b/1-Introduction/03-defining-data/translations/README.hi.md index 49c16833..e4f41811 100644 --- a/1-Introduction/03-defining-data/translations/README.hi.md +++ b/1-Introduction/03-defining-data/translations/README.hi.md @@ -1,22 +1,69 @@ # डेटा का अवलोकन -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs।dev) ](../../../sketchnotes/03-DefiningData.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/03-DefiningData.png)| |:---:| -|Defining Data - _Sketchnote by [@nitya](https://twitter।com/nitya)_ | +|डेटा का अवलोकन - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | डेटा मतलब तथ्य, माहिती और अनुभव है जिनका इस्तमाल करके नए खोज और सूचित निर्णयोंका समर्थन किया जाता है। -डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बोहोत सारे अलगअलग प्रकार और स्ट्रक्चर का होता है, और बोहोत बार किसी स्त्रोतपे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं सेव्ह की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow।com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकोकेलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। +डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बोहोत सारे अलगअलग प्रकार और संरचनाका होता है, और बोहोत बार किसी स्त्रोतपे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं जतन की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow।com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकोकेलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। यह पाठ डेटा को उसके स्त्रोत के हिसाब से पहचानने और वर्गीकृत करने पे केंद्रित है। ## [पाठ के पाहिले की परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) ## डेटा का वर्णन कैसे किया जाता है -**अपक्व डेटा** ऐसे प्रकार का डेटा होता जो उसके स्त्रोत से आते वक्त जिस अवस्था मैं था वैसे ही है और उसका विश्लेषण या वर्गीकरण नहीं किया गया है। ऐसे डेटासेट से जरूरी जानकारी निकलने के लिए उसे ऐसे प्रकार मे लाना आवश्यक है जो इंसान समज सके और जिस टैकनोलजीका उपयोग डेटा के विश्लेषण मे किया जाएगा उसको भी समज आये। डेटाबेस का स्ट्रक्चर हमे बताती है की डेटा किस प्रकार से वर्गीकृत किया गया है और उसका वर्गीकरण कैसे किया जाता है। डेटा का वर्गीकरण संरचित, मिश्र संरचित और असंरचित प्रकार मै किया जा सकता है। संरचना के प्रकार डेटा के स्त्रोत के अनुसार बदल सकते है मगर आखिर मै इन तीनो मैं से एक प्रकार के हो सकते है। +**अपक्व डेटा** ऐसे प्रकार का डेटा होता जो उसके स्त्रोत से आते वक्त जिस अवस्था मैं था वैसे ही है और उसका विश्लेषण या वर्गीकरण नहीं किया गया है। ऐसे डेटासेट से जरूरी जानकारी निकलने के लिए उसे ऐसे प्रकार मे लाना आवश्यक है जो इंसान समज सके और जिस टैकनोलजीका उपयोग डेटा के विश्लेषण मे किया जाएगा उसको भी समज आये। डेटाबेसकी संरचना हमे बताती है की डेटा किस प्रकार से वर्गीकृत किया गया है और उसका संरचित, मिश्र संरचित और असंरचित प्रकार मै वर्गीकरण कैसे किया जाता है। संरचना के प्रकार डेटा के स्त्रोत के अनुसार बदल सकते है मगर आखिर मै इन तीनो मैं से एक प्रकार के हो सकते है। ### परिमाणात्मक डेटा -परिमाणात्मक डेटा मतलब डेटासेट मे उपलब्ध होने वाला ऐसा संख्यात्मक डेटा जिसका इस्तमाल विश्लेषण,मापन और गणितीय चीजोंकेलिए हो सकता है। परिमाणात्मक डेटा के यह कुछ उदाहरण है: देश की जनसंख्या, इंसान की ऊंचाई या कंपनी की तिमाही कमाई। थोड़े अधिक विश्लेषण के बाद परिणामात्मक डेटा से मौसम के अनुसार वायु गुणवत्ता सूचकांक(Air Quality Index) के बदलाव पता करना या फिर किसी सामान्य कार्यदिवस पर भीड़भाड़ वाले घंटे के ट्रैफिक की संभावना का अनुमान लगना मुमकिन है +परिमाणात्मक डेटा मतलब डेटासेट मे उपलब्ध होने वाला ऐसा संख्यात्मक डेटा जिसका इस्तमाल विश्लेषण,मापन और गणितीय चीजोंकेलिए हो सकता है। परिमाणात्मक डेटा के यह कुछ उदाहरण है: देश की जनसंख्या, इंसान की ऊंचाई या कंपनी की तिमाही कमाई। थोड़े अधिक विश्लेषण के बाद परिणामात्मक डेटा से मौसम के अनुसार वायु गुणवत्ता सूचकांक(Air Quality Index) के बदलाव पता करना या फिर किसी सामान्य कार्यदिवस पर भीड़भाड़ वाले घंटे के ट्रैफिक की संभावना का अनुमान लगना मुमकिन है. ### गुणात्मक डेटा -गुणात्मक डेटा, जिसे वर्गीकृत देता भी कहा जाता है, यह एक डेटा का ऐसा प्रकार है जिसे परिमाणात्मक डेटा की तरह वस्तुनिष्ठ तरहसे मापा नहीं जा सकता। यह आम तौर पर अलग अलग प्रकार का आत्मनिष्ठ डेटा होता है जिस से किसी उत्पादन या प्रक्रिया की गुणवत्ता। कभी कभार गुणात्मक डेटा सांखिक स्वरुपमैं होके भी गणितीय कारणों के लिए इस्तमल नहीं किया जा सकता, जैसे की फोन नंबर या समय। -गुणात्मक डेटा के यह कुछ उदाहरण हो सकते है: विडिओकी टिप्पणियाँ, आपके करीबी दोस्त के गाड़ी के पसंदिता रंग का नमूना बनाना। गुणात्मक डेटा का इस्तमाल करके ग्राहकोंको कोनसा उत्पादन सबसे ज्यादा पसंद आ रहा है या फिर नौकरी आवेदन के रिज्यूमे मैं सबसे ज्यादा इस्तमाल होने वाले शब्द ढूंढ़ना। +गुणात्मक डेटा, जिसे वर्गीकृत डेटा भी कहा जाता है, यह एक डेटा का ऐसा प्रकार है जिसे परिमाणात्मक डेटा की तरह वस्तुनिष्ठ तरहसे नापा नहीं जा सकता। यह आम तौर पर अलग अलग प्रकार का आत्मनिष्ठ डेटा होता है जिस से किसी उत्पादन या प्रक्रिया की गुणवत्ता। कभी कभार गुणात्मक डेटा सांखिक स्वरुपमैं होके भी गणितीय कारणों के लिए इस्तमल नहीं किया जा सकता, जैसे की फोन नंबर या समय। गुणात्मक डेटा के यह कुछ उदाहरण हो सकते है: विडिओकी टिप्पणियाँ, आपके करीबी दोस्त के गाड़ी के पसंदिता रंग का नमूना बनाना। गुणात्मक डेटा का इस्तमाल करके ग्राहकोंको कोनसा उत्पादन सबसे ज्यादा पसंद आ रहा है या फिर नौकरी आवेदन के रिज्यूमे मैं सबसे ज्यादा इस्तमाल होने वाले शब्द ढूंढ़ना। + +### संरचित डेटा +संरचित डेटा वह डेटा है जो पंक्तियों और स्तंभों में संगठित होता है, जिसके हर पंक्तिमे समान स्तंभ होते है. हर स्तंभ एक विशिष्ट प्रकार के मूल्य को बताता है और उस मूल्यको दर्शाने वाले अनाम के साथ जाना जाता है. जबकी पंक्तियाँ मे वास्तविक मूल्य होते है। हर मूल्य सही स्तम्भ का प्रतिनिधित्व करते है की नहीं ये निश्चित करने के लिए स्तंभमे अक्सर मूल्यों पर नियमोंका प्रतिबन्ध लगा रहता है. उदाहरणार्थ कल्पना कीजिये ग्राहकोंकी जानकारी होने वाला एक स्प्रेडशीट फ़ाइल जीके हर पंक्तिमे फोन क्रमांक होना जरुरी है और फोन क्रमांकमे कभीभी वर्ण या व्यंजन नहीं रहते। तो फिर फोन क्रमांक के स्तंभ पर ऐसा नियम लगा होना चाहिए जिससे ये निश्चित हो की बह कभीभी खाली नहीं है और उसमें सिर्फ आकड़े ही है. + +सरंचित डेटा का यह फायदा है की उसे स्तंभ और पंक्तियोंमे वर्गीकृत किया जा सकता है. तथापि, डेटा को एक विशिष्ट प्रकार मै वर्गीकृत करने के लिए आयोजित किये जाने के बजह से पुरे संरचना मे बदल करना बोहोत मुश्किल का काम होता है. जैसे की ग्राहकोंके जानकारी वाले स्प्रेडशीट फ़ाइलमे अगर हमें ईमेल आयडी खाली ना होने वाला नया स्तंभ जोड़ना हो तो हमे ये पता करना होगा की पहिलेसे जो मूल्य इस डेटासेट मे है उनका क्या होगा. + +संरचित डेटा के यह कुछ उदाहरण है: स्प्रेडशीट, रिलेशनल डेटाबेस, फोन नंबर, बैंक स्टेटमेंट + +### असंरचित डेटा +असंरचित डेटा आम तौर पर स्तंभ और पांक्तोयोंमे वर्गीकृत नहीं किया जा सकता और किसी नियमोंसे बंधित भी नहीं रहता। संरचित डेटा के तुलना से असंरचित डेटा मैं कम नियम होने के कारण उसमे नया डेटा डालना बोहोत आसान होता है। अगर कोही सेंसर जो तापमानमापक के प्रेशर का दबाव हर दो मिनिट बाद दर्ज करता है, जिसके बजह से वह तापमान को मापके दर्ज कर सकता है, तो उसे असंरचित डेटा होने के कारण डेटाबेसमे पहिलेसे होने वाले डेटा को बदलने की आवश्यकता नहीं है। तथापि, ऐसे डेटा का विश्लेषण और जांच करने को ज्यादा समय लग सकता है। +जैसे की, एक वैज्ञानिक जिसे सेंसर के डेटा से पिछले महीने के तापमान का औसत ढूंढ़ना हो, मगर वो देखता है की सेंसर ने कुछ जगह आधेअधूरे डेटा को दर्ज करने के लिए आम क्रमांक के बजाय 'e' दर्ज किया है, जिसका मतलब है की डेटा अधूरा है। +असंरचित डेटा के उदाहरण: टेक्स्ट फ़ाइलें, टेक्स्ट मेसेजेस, विडिओ फ़ाइलें। + +### मिश्र संरचित डेटा + +मिश्र संरचित डेटा के ऐसे कुछ गन है जिसके बजह से उसे संरचित और असंरचित डेटा का मिश्रण कहा जा सकता है. वह हमेशा स्तंभ और पंक्तियोंके अनुरूप नहीं रहता मगर ऐसे तरह संयोजित किया गया होता है की उसे संरचित कहा जा सकता है और शायद किसी ठराविक नियमोंका पालन भी कर है। डेटा की संरचना उसके स्त्रोत के ऊपर निर्भर होती है जैसे की स्पष्ट अनुक्रम या फिर थोडा लचीला जिसमे नया डेटा जोड़ना आसान हो. मेटाडाटा ऐसे संकेतक होते है जिनसे डेटा का संयोजन और संग्रहीत करने मे सहायता होती है, और उन्हें डेटा के प्रकार के अनुरूप नाम भी दिए जा सकते है. मेटाडेटाके आम उदाहरण है: टैग्स, एलिमेंट्स, एंटिटीज और एट्रीब्यूट्स. उदाहरणार्थ: एक सामान्य ईमेल को उसका विषय, मायना, और प्राप्तकर्ताओंकी सूची होगी और किसको कब भेजना है उसके हिसाब से संयोजित किया जा सकता है। + +मिश्र संरचित डेटा के उदाहरण: एचटीएमएल, सीइसव्ही फाइलें, जेसन(JSON) + +### डेटा के स्त्रोत + +डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। + +## डेटा के स्त्रोत + +डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। + +डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिममे उपयोगकर्ता कमांड्स जिन्हें क्वेरीज़ कहा जाता है इस्तमाल करके डेटाबेस का डेटा खोज सकते है. डेटा स्त्रोत फ़ाइल स्वरुप मे हो तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार मे हो सकता है। आंतरजाल के स्त्रोत डेटा होस्ट करने के बोहोत आम तरीका है। यहां डेटाबेस तथा फाइलें खोजी जा सकती है। अप्लीकेशन प्रोगरामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मद्त से प्रोग्रामर्स डेटाको बहार के उपयोगकर्ताओको आंतरजाल द्वारा इस्तमाल करने के लिए भेज सकते है. जबकि वेब स्क्रैपिंग नामक प्रक्रियासे आंतरजाल के वेब पेज का डेटा अलग किया जा सकता है. [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पथ अलग अलग डेटा का इस्तमाल करनेपर ध्यान देता है.. + +## निष्कर्ष +यह पथ मे हमने पढ़ा की: +- डेटा क्या होता है +- डेटा का वर्णन कैसे किया जाता है +- डेटा का वर्गीकरण कैसे किया जाता है +- डेटा कहा मिलता है + +## 🚀 चुनौती +Kaggle यह के मुफ्त के डेटाबेस का बोहोत अच्छा स्त्रोत है. [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमेसे तीन-चार डेटाबेस का ऐसे वर्गीकरण कीजिए: +- डेटा परिमाणात्मक है या गुणात्मक? +- डेटा संरचित, असंरचित या फिर मिश्र संरचित है? + +## [पाठ के बाद वाली परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/5) + +## समीक्षा और स्वअध्ययन +- माइक्रोसॉफ्ट लर्न का [Classify your data](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) पाठ संरचित, असंरचित और मिश्र संरचित डेटा के बारे मे और अच्छेसे बताता है। + +## अभ्यास +[डेटा का वर्गीकरण](../assignment.md) From 9f8b29749a2320db81c215116e837d41a6905030 Mon Sep 17 00:00:00 2001 From: Kaushal Joshi <53049546+joshi-kaushal@users.noreply.github.com> Date: Tue, 12 Oct 2021 18:27:45 +0530 Subject: [PATCH 071/254] Updated README.hi.md - 4 --- 1-Introduction/03-defining-data/translations/README.hi.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/1-Introduction/03-defining-data/translations/README.hi.md b/1-Introduction/03-defining-data/translations/README.hi.md index e4f41811..34f3f0e8 100644 --- a/1-Introduction/03-defining-data/translations/README.hi.md +++ b/1-Introduction/03-defining-data/translations/README.hi.md @@ -5,7 +5,7 @@ डेटा मतलब तथ्य, माहिती और अनुभव है जिनका इस्तमाल करके नए खोज और सूचित निर्णयोंका समर्थन किया जाता है। -डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बोहोत सारे अलगअलग प्रकार और संरचनाका होता है, और बोहोत बार किसी स्त्रोतपे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं जतन की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow।com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकोकेलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। +डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बोहोत सारे अलगअलग प्रकार और संरचनाका होता है, और बोहोत बार किसी स्त्रोतपे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं जतन की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow.com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकोकेलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। यह पाठ डेटा को उसके स्त्रोत के हिसाब से पहचानने और वर्गीकृत करने पे केंद्रित है। @@ -43,11 +43,9 @@ डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। ## डेटा के स्त्रोत - डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। -डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिममे उपयोगकर्ता कमांड्स जिन्हें क्वेरीज़ कहा जाता है इस्तमाल करके डेटाबेस का डेटा खोज सकते है. डेटा स्त्रोत फ़ाइल स्वरुप मे हो तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार मे हो सकता है। आंतरजाल के स्त्रोत डेटा होस्ट करने के बोहोत आम तरीका है। यहां डेटाबेस तथा फाइलें खोजी जा सकती है। अप्लीकेशन प्रोगरामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मद्त से प्रोग्रामर्स डेटाको बहार के उपयोगकर्ताओको आंतरजाल द्वारा इस्तमाल करने के लिए भेज सकते है. जबकि वेब स्क्रैपिंग नामक प्रक्रियासे आंतरजाल के वेब पेज का डेटा अलग किया जा सकता है. [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पथ अलग अलग डेटा का इस्तमाल करनेपर ध्यान देता है.. - +डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिममे उपयोगकर्ता कमांड्स जिन्हें क्वेरीज़ कहा जाता है इस्तमाल करके डेटाबेस का डेटा खोज सकते है। डेटा स्त्रोत फ़ाइल स्वरुप मे हो तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार मे हो सकता है। आंतरजाल के स्त्रोत डेटा होस्ट करने के बोहोत आम तरीका है। यहां डेटाबेस तथा फाइलें खोजी जा सकती है।अप्लीकेशन प्रोगरामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मद्त से प्रोग्रामर्स डेटाको बहार के उपयोगकर्ताओको आंतरजाल द्वारा इस्तमाल करने के लिए भेज सकते है। जबकि वेब स्क्रैपिंग नामक प्रक्रियासे आंतरजाल के वेब पेज का डेटा अलग किया जा सकता है। [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पथ अलग अलग डेटा का इस्तमाल करनेपर ध्यान देता है। ## निष्कर्ष यह पथ मे हमने पढ़ा की: - डेटा क्या होता है @@ -56,7 +54,7 @@ - डेटा कहा मिलता है ## 🚀 चुनौती -Kaggle यह के मुफ्त के डेटाबेस का बोहोत अच्छा स्त्रोत है. [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमेसे तीन-चार डेटाबेस का ऐसे वर्गीकरण कीजिए: +Kaggle यह के मुफ्त के डेटाबेस का बोहोत अच्छा स्त्रोत है। [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमेसे तीन-चार डेटाबेस का ऐसे वर्गीकरण कीजिए: - डेटा परिमाणात्मक है या गुणात्मक? - डेटा संरचित, असंरचित या फिर मिश्र संरचित है? From 36a21b89a39a82e4a4aa2bff2c95e7802ed0d3e7 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Tue, 12 Oct 2021 06:58:20 -0700 Subject: [PATCH 072/254] added --- .../{R => 07-python/R(Bonus Lesson)}/Notebook.ipynb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 2-Working-With-Data/{R => 07-python/R(Bonus Lesson)}/Notebook.ipynb (100%) diff --git a/2-Working-With-Data/R/Notebook.ipynb b/2-Working-With-Data/07-python/R(Bonus Lesson)/Notebook.ipynb similarity index 100% rename from 2-Working-With-Data/R/Notebook.ipynb rename to 2-Working-With-Data/07-python/R(Bonus Lesson)/Notebook.ipynb From 1858ea407d55d5174a949adbcd93b9c7a0d97de8 Mon Sep 17 00:00:00 2001 From: Kaushal Joshi <53049546+joshi-kaushal@users.noreply.github.com> Date: Wed, 13 Oct 2021 00:54:24 +0530 Subject: [PATCH 073/254] README.hi.md: Proof reading - 1 --- .../translations/README.hi.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/1-Introduction/03-defining-data/translations/README.hi.md b/1-Introduction/03-defining-data/translations/README.hi.md index 34f3f0e8..e21a638d 100644 --- a/1-Introduction/03-defining-data/translations/README.hi.md +++ b/1-Introduction/03-defining-data/translations/README.hi.md @@ -3,34 +3,34 @@ |:---:| |डेटा का अवलोकन - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | -डेटा मतलब तथ्य, माहिती और अनुभव है जिनका इस्तमाल करके नए खोज और सूचित निर्णयोंका समर्थन किया जाता है। +डेटा मतलब तथ्य, ज्ञान और अनुभव है जिनका इस्तेमाल करके नए खोज और सूचित निर्णयोंका समर्थन किया जाता है। -डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बोहोत सारे अलगअलग प्रकार और संरचनाका होता है, और बोहोत बार किसी स्त्रोतपे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं जतन की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow.com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकोकेलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। +डेटा पॉइंट यह डेटासेट का सबसे छोटा प्रमाण है। डेटासेट यह एक डेटा पॉइंट्स का बड़ा संग्रह होता है। डेटासेट बहुत सारे अलगअलग प्रकार और संरचनाका होता है, और बहुत बार किसी स्त्रोत पे आधारित होता है। उदाहरण के लिए, किसी कम्पनी की कमाई स्प्रेडशीट मैं जतन की हो सकती है मगर प्रति घंटे के दिल की धकड़न की गति [JSON](https://stackoverflow.com/questions/383692/what-is-json-and-what-is-it-used-for/383699#383699) रूप मैं हो सकती है। डेटा वैज्ञानिकों केलिए अलग अलग प्रकार के डेटा और डेटासेट के साथ काम करना आम बात होती है। -यह पाठ डेटा को उसके स्त्रोत के हिसाब से पहचानने और वर्गीकृत करने पे केंद्रित है। +यह पाठ डेटा को उसके स्त्रोत के हिसाब से पहचानने और वर्गीकृत करने पर केंद्रित है। ## [पाठ के पाहिले की परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) ## डेटा का वर्णन कैसे किया जाता है -**अपक्व डेटा** ऐसे प्रकार का डेटा होता जो उसके स्त्रोत से आते वक्त जिस अवस्था मैं था वैसे ही है और उसका विश्लेषण या वर्गीकरण नहीं किया गया है। ऐसे डेटासेट से जरूरी जानकारी निकलने के लिए उसे ऐसे प्रकार मे लाना आवश्यक है जो इंसान समज सके और जिस टैकनोलजीका उपयोग डेटा के विश्लेषण मे किया जाएगा उसको भी समज आये। डेटाबेसकी संरचना हमे बताती है की डेटा किस प्रकार से वर्गीकृत किया गया है और उसका संरचित, मिश्र संरचित और असंरचित प्रकार मै वर्गीकरण कैसे किया जाता है। संरचना के प्रकार डेटा के स्त्रोत के अनुसार बदल सकते है मगर आखिर मै इन तीनो मैं से एक प्रकार के हो सकते है। +**अपरीपक्व डेटा** ऐसे प्रकार का डेटा होता जो उसके स्त्रोत से आते वक्त जिस अवस्था में था वैसे ही है और उसका विश्लेषण या वर्गीकरण नहीं किया गया है। ऐसे डेटासेट से जरूरी जानकारी निकलने के लिए उसे ऐसे प्रकार मे लाना आवश्यक है जो इंसान समझ सके और जिस तंत्रज्ञान का उपयोग डेटा के विश्लेषण में किया जाएगा उसको भी समझ आये। डेटाबेस की संरचना हमें बताती है कि डेटा किस प्रकार से वर्गीकृत किया गया है और उसका संरचित, मिश्र संरचित और असंरचित प्रकार में वर्गीकरण कैसे किया जाता है। संरचना के प्रकार डेटा के स्त्रोत के अनुसार बदल सकते हैं मगर आखिर में इन तीनों में से एक प्रकार के हो सकते हैं। ### परिमाणात्मक डेटा -परिमाणात्मक डेटा मतलब डेटासेट मे उपलब्ध होने वाला ऐसा संख्यात्मक डेटा जिसका इस्तमाल विश्लेषण,मापन और गणितीय चीजोंकेलिए हो सकता है। परिमाणात्मक डेटा के यह कुछ उदाहरण है: देश की जनसंख्या, इंसान की ऊंचाई या कंपनी की तिमाही कमाई। थोड़े अधिक विश्लेषण के बाद परिणामात्मक डेटा से मौसम के अनुसार वायु गुणवत्ता सूचकांक(Air Quality Index) के बदलाव पता करना या फिर किसी सामान्य कार्यदिवस पर भीड़भाड़ वाले घंटे के ट्रैफिक की संभावना का अनुमान लगना मुमकिन है. +परिमाणात्मक डेटा मतलब डेटासेट में उपलब्ध होने वाला ऐसा संख्यात्मक डेटा जिसका उपयोग विश्लेषण, मापन और गणितीय चीजों के लिए हो सकता है। परिमाणात्मक डेटा के यह कुछ उदाहरण हैं: देश की जनसंख्या, इंसान की कद या कंपनी की तिमाही कमाई। थोडे अधिक विश्लेषण बाद डेटा की परिस्थिति के अनुसार वायुगुणवत्ता सूचकांक का बदलाव पता करना या फिर किसी सामान्य दिन पर व्यस्त ट्रैफिक की संभावना का अनुमान लगाना मुमकिन है। ### गुणात्मक डेटा -गुणात्मक डेटा, जिसे वर्गीकृत डेटा भी कहा जाता है, यह एक डेटा का ऐसा प्रकार है जिसे परिमाणात्मक डेटा की तरह वस्तुनिष्ठ तरहसे नापा नहीं जा सकता। यह आम तौर पर अलग अलग प्रकार का आत्मनिष्ठ डेटा होता है जिस से किसी उत्पादन या प्रक्रिया की गुणवत्ता। कभी कभार गुणात्मक डेटा सांखिक स्वरुपमैं होके भी गणितीय कारणों के लिए इस्तमल नहीं किया जा सकता, जैसे की फोन नंबर या समय। गुणात्मक डेटा के यह कुछ उदाहरण हो सकते है: विडिओकी टिप्पणियाँ, आपके करीबी दोस्त के गाड़ी के पसंदिता रंग का नमूना बनाना। गुणात्मक डेटा का इस्तमाल करके ग्राहकोंको कोनसा उत्पादन सबसे ज्यादा पसंद आ रहा है या फिर नौकरी आवेदन के रिज्यूमे मैं सबसे ज्यादा इस्तमाल होने वाले शब्द ढूंढ़ना। +गुणात्मक डेटा, जिसे वर्गीकृत डेटा भी कहा जाता है, यह एक डेटा का ऐसा प्रकार है जिसे परिमाणात्मक डेटा की तरह वस्तुनिष्ठ तरह से नापा नहीं जा सकता। यह आम तौर पर अलग अलग प्रकार का आत्मनिष्ठ डेटा होता है जैसे से किसी उत्पादन या प्रक्रिया की गुणवत्ता। कभी कभी गुणात्मक डेटा सांख्यिक स्वरुप में हो के भी गणितीय कारणों के लिए इस्तेमाल नहीं किया जा सकता, जैसे की फोन नंबर या समय। गुणात्मक डेटा के यह कुछ उदाहरण हो सकते है: विडियो की टिप्पणियाँ, किसी गाड़ी का मॉडल या आपके प्रीय दोस्त का पसंदिदा रंग। गुणात्मक डेटा का इस्तेमाल करके ग्राहकौं को कोनसा उत्पादन सबसे ज्यादा पसंद आता है या फिर नौकरी आवेदन के रिज्यूमे में सबसे ज्यादा इस्तेमाल होने वाले शब्द ढूंढ़ना। ### संरचित डेटा -संरचित डेटा वह डेटा है जो पंक्तियों और स्तंभों में संगठित होता है, जिसके हर पंक्तिमे समान स्तंभ होते है. हर स्तंभ एक विशिष्ट प्रकार के मूल्य को बताता है और उस मूल्यको दर्शाने वाले अनाम के साथ जाना जाता है. जबकी पंक्तियाँ मे वास्तविक मूल्य होते है। हर मूल्य सही स्तम्भ का प्रतिनिधित्व करते है की नहीं ये निश्चित करने के लिए स्तंभमे अक्सर मूल्यों पर नियमोंका प्रतिबन्ध लगा रहता है. उदाहरणार्थ कल्पना कीजिये ग्राहकोंकी जानकारी होने वाला एक स्प्रेडशीट फ़ाइल जीके हर पंक्तिमे फोन क्रमांक होना जरुरी है और फोन क्रमांकमे कभीभी वर्ण या व्यंजन नहीं रहते। तो फिर फोन क्रमांक के स्तंभ पर ऐसा नियम लगा होना चाहिए जिससे ये निश्चित हो की बह कभीभी खाली नहीं है और उसमें सिर्फ आकड़े ही है. +संरचित डेटा वह डेटा है जो पंक्तियों और स्तंभों में संगठित होता है, जिसके हर पंक्ति में समान स्तंभ होते है। हर स्तंभ एक विशिष्ट प्रकार के मूल्य को बताता है और उस मूल्य को दर्शाने वाले नाम के साथ जाना जाता है। जबकि पंक्तियौं में वास्तविक मूल्य होते है। हर मूल्य सही स्तंभ का प्रतिनिधित्व करते हैं कि नहीं ये निश्चित करने के लिए स्तंभ में अक्सर मूल्यों पर नियमों का प्रतिबन्ध लगा रहता है। उदाहरणार्थ कल्पना कीजिये ग्राहकों की जानकारी होने वाला एक स्प्रेडशीट फ़ाइल जिसके हर पंक्ति में फोन नंबर होना जरुरी है और फोन नंबर में कभी भी अक्षर नहीं रहते। तो फिर फोन नंबर के स्तंभ पर ऐसा नियम लगा होना चाहिए जिससे यह निश्चित हो कि वह कभी भी खाली नहीं रहता है और उसमें सिर्फ आँकडे ही है । -सरंचित डेटा का यह फायदा है की उसे स्तंभ और पंक्तियोंमे वर्गीकृत किया जा सकता है. तथापि, डेटा को एक विशिष्ट प्रकार मै वर्गीकृत करने के लिए आयोजित किये जाने के बजह से पुरे संरचना मे बदल करना बोहोत मुश्किल का काम होता है. जैसे की ग्राहकोंके जानकारी वाले स्प्रेडशीट फ़ाइलमे अगर हमें ईमेल आयडी खाली ना होने वाला नया स्तंभ जोड़ना हो तो हमे ये पता करना होगा की पहिलेसे जो मूल्य इस डेटासेट मे है उनका क्या होगा. +सरंचित डेटा का यह फायदा है की उसे स्तंभ और पंक्तियों में संयोजित किया जा सकता है। तथापि, डेटा को एक विशिष्ट प्रकार में संयोजित करने के लिए आयोजित किये जाने के वजह से पुरे संरचना में बदल करना बहुत मुश्किल काम होता है। जैसे की ग्राहकों के जानकारी वाले स्प्रेडशीट फ़ाइलमें अगर हमें ईमेल आयडी खाली ना होने वाला नया स्तंभ जोड़ना हो, तो हमे ये पता करना होगा की पहिले से जो मूल्य इस डेटासेट में है उनका क्या होगा? -संरचित डेटा के यह कुछ उदाहरण है: स्प्रेडशीट, रिलेशनल डेटाबेस, फोन नंबर, बैंक स्टेटमेंट +संरचित डेटा के यह कुछ उदाहरण हैं: स्प्रेडशीट, रिलेशनल डेटाबेस, फोन नंबर एवं बैंक स्टेटमेंट । ### असंरचित डेटा -असंरचित डेटा आम तौर पर स्तंभ और पांक्तोयोंमे वर्गीकृत नहीं किया जा सकता और किसी नियमोंसे बंधित भी नहीं रहता। संरचित डेटा के तुलना से असंरचित डेटा मैं कम नियम होने के कारण उसमे नया डेटा डालना बोहोत आसान होता है। अगर कोही सेंसर जो तापमानमापक के प्रेशर का दबाव हर दो मिनिट बाद दर्ज करता है, जिसके बजह से वह तापमान को मापके दर्ज कर सकता है, तो उसे असंरचित डेटा होने के कारण डेटाबेसमे पहिलेसे होने वाले डेटा को बदलने की आवश्यकता नहीं है। तथापि, ऐसे डेटा का विश्लेषण और जांच करने को ज्यादा समय लग सकता है। -जैसे की, एक वैज्ञानिक जिसे सेंसर के डेटा से पिछले महीने के तापमान का औसत ढूंढ़ना हो, मगर वो देखता है की सेंसर ने कुछ जगह आधेअधूरे डेटा को दर्ज करने के लिए आम क्रमांक के बजाय 'e' दर्ज किया है, जिसका मतलब है की डेटा अधूरा है। -असंरचित डेटा के उदाहरण: टेक्स्ट फ़ाइलें, टेक्स्ट मेसेजेस, विडिओ फ़ाइलें। +असंरचित डेटा आम तौर पर स्तंभ और पंक्तियों में वर्गीकृत नहीं किया जा सकता और किसी नियमों से बंधित भी नहीं रहता। संरचित डेटा के तुलना में असंरचित डेटा में कम नियम होने के कारण उसमे नया डेटा जोडना बहुत आसान होता है। अगर कोई सेंसर जो बैरोमीटर के दबाव को हर दो मिनट के बाद दर्ज करता है, जिसकी वजह से वह दाब को माप के दर्ज कर सकता है, तो उसे असंरचित डेटा होने के कारण डेटाबेस में पहलेसे उपलब्ध डेटा को बदलने की आवश्यकता नहीं है। तथापि, ऐसे डेटा का विश्लेषण और जाँच करने में ज्यादा समय लग सकता है। +जैसे की, एक वैज्ञानिक जिसे सेंसर के डेटा से पिछले महीने के तापमान का औसत ढूंढ़ना हो, मगर वो देखता है की सेंसर ने कुछ जगह आधे अधूरे डेटा को दर्ज करने के लिए आम क्रमांक के विपरीत 'e' दर्ज किया है, जिसका मतलब है की डेटा अपूर्ण है। +असंरचित डेटा के उदाहरण: टेक्स्ट फ़ाइलें, टेक्स्ट मेसेजेस, विडियो फ़ाइलें। ### मिश्र संरचित डेटा @@ -45,7 +45,7 @@ ## डेटा के स्त्रोत डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। -डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिममे उपयोगकर्ता कमांड्स जिन्हें क्वेरीज़ कहा जाता है इस्तमाल करके डेटाबेस का डेटा खोज सकते है। डेटा स्त्रोत फ़ाइल स्वरुप मे हो तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार मे हो सकता है। आंतरजाल के स्त्रोत डेटा होस्ट करने के बोहोत आम तरीका है। यहां डेटाबेस तथा फाइलें खोजी जा सकती है।अप्लीकेशन प्रोगरामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मद्त से प्रोग्रामर्स डेटाको बहार के उपयोगकर्ताओको आंतरजाल द्वारा इस्तमाल करने के लिए भेज सकते है। जबकि वेब स्क्रैपिंग नामक प्रक्रियासे आंतरजाल के वेब पेज का डेटा अलग किया जा सकता है। [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पथ अलग अलग डेटा का इस्तमाल करनेपर ध्यान देता है। +डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिममे उपयोगकर्ता कमांड्स जिन्हें क्वेरीज़ कहा जाता है इस्तेमाल करके डेटाबेस का डेटा खोज सकते है। डेटा स्त्रोत फ़ाइल स्वरुप मे हो तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार मे हो सकता है। आंतरजाल के स्त्रोत डेटा होस्ट करने के बहुत आम तरीका है। यहां डेटाबेस तथा फाइलें खोजी जा सकती है।अप्लीकेशन प्रोगरामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मद्त से प्रोग्रामर्स डेटाको बहार के उपयोगकर्ताओको आंतरजाल द्वारा इस्तेमाल करने के लिए भेज सकते है। जबकि वेब स्क्रैपिंग नामक प्रक्रियासे आंतरजाल के वेब पेज का डेटा अलग किया जा सकता है। [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पथ अलग अलग डेटा का इस्तेमाल करनेपर ध्यान देता है। ## निष्कर्ष यह पथ मे हमने पढ़ा की: - डेटा क्या होता है @@ -54,7 +54,7 @@ - डेटा कहा मिलता है ## 🚀 चुनौती -Kaggle यह के मुफ्त के डेटाबेस का बोहोत अच्छा स्त्रोत है। [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमेसे तीन-चार डेटाबेस का ऐसे वर्गीकरण कीजिए: +Kaggle यह के मुफ्त के डेटाबेस का बहुत अच्छा स्त्रोत है। [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तेमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमेसे तीन-चार डेटाबेस का ऐसे वर्गीकरण कीजिए: - डेटा परिमाणात्मक है या गुणात्मक? - डेटा संरचित, असंरचित या फिर मिश्र संरचित है? From 9ea38061baba033e3b4e9971f15cf017c36c2298 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Tue, 12 Oct 2021 18:15:07 -0300 Subject: [PATCH 074/254] Create assignment.pt-br.md --- .../translations/assignment.pt-br.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md new file mode 100644 index 00000000..fb5b62a3 --- /dev/null +++ b/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md @@ -0,0 +1,11 @@ +# Linhas, dispersão e barras + +## Instruções + +Nessa aula, você trabalhou com gráfico de linhas, dispersão e barras para mostrar fatos interessantes sobre esse dataset. Nessa tarefa, explore mais a fundo o dataset para descobrir algo sobre um dado tipo de pássaro. Por exemplo, crie um notebook que mostre visualizações de todos os fatos interessantes que encontrar sobre os Snow Geese (gansos-das-neves). Use os três tipos de gráficos mencionados anteriormente para contar uma história em seu notebook. + +## Rubrica + +Exemplar | Adequado | Precisa melhorar +--- | --- | -- | +O notebook foi apresentado com boas anotações, contação de histórias (storytelling) sólida e gráficos cativantes | O notebook não tem um desses elementos | O notebook não tem dois desses elementos From 2125afcd3054502a0deb71eb75cbe7837293ae56 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Tue, 12 Oct 2021 20:48:09 -0500 Subject: [PATCH 075/254] fix:(translation) Fix broken links on main page module 1 --- 1-Introduction/translations/README.es.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1-Introduction/translations/README.es.md b/1-Introduction/translations/README.es.md index 75d3b4cc..592da390 100644 --- a/1-Introduction/translations/README.es.md +++ b/1-Introduction/translations/README.es.md @@ -9,10 +9,10 @@ cómo se definen los datos y un poco de probabilidad y estadística, el núcleo ### Temas -1. [Definiendo la Ciencia de Datos](01-defining-data-science/README.md) -2. [Ética de la Ciencia de Datos](02-ethics/README.md) -3. [Definición de Datos](03-defining-data/README.md) -4. [introducción a la probabilidad y estadística](04-stats-and-probability/README.md) +1. [Definiendo la Ciencia de Datos](../01-defining-data-science/README.md) +2. [Ética de la Ciencia de Datos](../02-ethics/README.md) +3. [Definición de Datos](../03-defining-data/translations/README.es.md) +4. [introducción a la probabilidad y estadística](../04-stats-and-probability/README.md) ### Créditos From 373a22af6191bf4725eb05eb49b961f19b8d06eb Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Wed, 13 Oct 2021 00:41:05 -0300 Subject: [PATCH 076/254] Create README.pt-bt.md --- .../translations/README.pt-br.md | 199 ++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md diff --git a/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md b/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md new file mode 100644 index 00000000..1ce0f827 --- /dev/null +++ b/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md @@ -0,0 +1,199 @@ +# Visualizando distribuições + +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Visualizando distribuições - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +Na aula anterior, você aprendeu fatos interessantes sobre um dataset de pássaros de Minnesota. Você encontrou dados incorretos ao visualizar outliers e olhou as diferenças entre categorias de pássaros com base no seu comprimento máximo. + +## [Quiz pré-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) +## Explore o dataset de pássaros + +Outra forma de explorar os dados é olhar para sua distribuição, ou como os dados estão organizados ao longo do eixo. Por exemplo, talvez você gostaria de aprender sobre a distribuição geral, nesse dataset, do máximo de envergadura (wingspan) ou máximo de massa corporal (body mass) dos pássaros de Minnesota. + +Vamos descobrir alguns fatos sobre as distribuições de dados nesse dataset. No arquivo _notebook.ipynb_ na raiz do diretório dessa aula, importe Pandas, Matplotlib, e seus dados: + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` + +Geralmente, você pode olhar para a forma como os dados estão distribuídos usando um gráfico de dispersão (scatter plot) como fizemos na aula anterior: + +```python +birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8)) + +plt.title('Max Length per Order') +plt.ylabel('Order') +plt.xlabel('Max Length') + +plt.show() +``` + +Isso nos dá uma visão geral da distribuição de comprimento de corpo por Ordem do pássaro, mas não é a forma ótima de mostrar a distribuição real. Essa tarefa geralmente é realizada usando um histograma. + +## Trabalhando com histogramas + +O Matplotlib oferece formas muito boas de visualizar distribuição dos dados usando histogramas. Esse tipo de gráfico é parecido com um gráfico de barras onde a distribuiçao pode ser vista por meio da subida e descida das barras. Para construir um histograma, você precisa de dados numéricos. Para construir um histograma, você pode plotar um gráfico definindo o tipo (kind) como 'hist' para histograma. Esse gráfico mostra a distribuição de massa corporal máxima (MaxBodyMass) para todo o intervalo numérico dos dados. Ao dividir um certo vetor de dados em intervalos (bins) menores, vemos a distribuição dos valores: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) +plt.show() +``` + +![Distribuição de todo o dataset](images/dist1.png) + +Como você pode ver, a maior parte dos mais de 400 pássaros cai no intervalo de menos de 2000 para a massa corporal máxima. Obtenha mais conhecimento dos dados mudando o parâmetro de intervalo (`bins`) para um número maior, como 30: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) +plt.show() +``` + +![Distribuição de todo o dataset com valores maiores de intervalo](images/dist2.png) + +Esse gráfico mostra a distribuição de forma mais detalhada. Um gráfico menos concentrado na esquerda pode ser criado garantindo que você só seleciona os dados dentro de um certo intervalo: + +Filtre seus dados para obter somente os pássaros que possuem menos de 60 de massa corporal, e mostre 40 intervalos (`bins`): + +```python +filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] +filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) +plt.show() +``` +![Histograma filtrado](images/dist3.png) + +✅ Tente outros filtros e pontos de dados (data points). Para ver a distribuição completa dos dados, remova o filtro `['MaxBodyMass']` para mostrar as distribuições com identificação. + +O histrograma também oferece algumas cores legais e identificadores (labels) melhorados: + +Crie um histograma 2D para comparar a relação entre duas distribuições. Vamos comparar massa corporal máxima vs. comprimento máximo (`MaxBodyMass` vs. `MaxLength`). O Matplotlib possui uma forma integrada de mostrar convergência usando cores mais vivas: + +```python +x = filteredBirds['MaxBodyMass'] +y = filteredBirds['MaxLength'] + +fig, ax = plt.subplots(tight_layout=True) +hist = ax.hist2d(x, y) +``` + +Aparentemente, existe uma suposta correlação entre esses dois elementos ao longo de um eixo esperado, com um forte ponto de convergência: + +![Histrograma 2D](images/2D.png) + +Por definição, os histogramas funcionam para dados numéricos. E se você precisar ver distribuições de dados textuais? + +## Explore o dataset e busque por distribuições usando dados textuais + +Esse dataset também inclui informações relevantes sobre a categoria de pássaro e seu gênero, espécie e família, assim como seu status de conservação. Vamos explorar mais a fundo essa informação sobre conservação. Qual é a distribuição dos pássaros de acordo com seu status de conservação? + +> ✅ No dataset, são utilizados vários acrônimos para descrever o status de conservação. Esses acrônimos vêm da [IUCN Red List Categories](https://www.iucnredlist.org/), uma organização que cataloga os status das espécies. +> +> - CR: Critically Endangered (Criticamente em perigo) +> - EN: Endangered (Em perigo) +> - EX: Extinct (Extinto) +> - LC: Least Concern (Pouco preocupante) +> - NT: Near Threatened (Quase ameaçada) +> - VU: Vulnerable (Vulnerável) + +Esses são valores textuais, então será preciso transformá-los para criar um histograma. Usando o dataframe filteredBirds, mostre seu status de conservação juntamente com sua envergadura mínima (MinWingspan). O que você vê? + +```python +x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] +x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan'] +x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan'] +x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan'] +x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan'] +x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan'] + +kwargs = dict(alpha=0.5, bins=20) + +plt.hist(x1, **kwargs, color='red', label='Extinct') +plt.hist(x2, **kwargs, color='orange', label='Critically Endangered') +plt.hist(x3, **kwargs, color='yellow', label='Endangered') +plt.hist(x4, **kwargs, color='green', label='Near Threatened') +plt.hist(x5, **kwargs, color='blue', label='Vulnerable') +plt.hist(x6, **kwargs, color='gray', label='Least Concern') + +plt.gca().set(title='Conservation Status', ylabel='Max Body Mass') +plt.legend(); +``` + +![Compilação envergadura e conservação](images/histogram-conservation.png) + +Aparentemente não existe uma correlação forte entre a envergadura mínima e o status de conservação. Teste outros elementos do dataset usando esse método. Você também pode tentar outros filtros. Você encontrou alguma correlação? + +## Gráfico de densidade (Estimativa de densidade kernel) + +Você pode ter percebido que até agora os histogramas são quebrados em degraus e não fluem de forma suave em uma curva. Para mostrar um gráfico de densidade mais 'fluido', você pode tentar usar a estimativa de densidade kernel (kde). + +Para trabalhar com gráficos de densidade, acostume-se com uma nova biblioteca de gráficos, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). + +Depois de carregar o Seaborn, tente um gráfico de densidade básico: + +```python +import seaborn as sns +import matplotlib.pyplot as plt +sns.kdeplot(filteredBirds['MinWingspan']) +plt.show() +``` +![Gráfico de densidade](images/density1.png) + +Você consegue ver como o gráfico reflete o anterior (de envergadura mínima); só é mais fluido/suave. De acordo com a documentação do Seaborn, "" +"Em comparação com o histograma, KDE pode produzir um gráfico que é menos confuso e mais legível, especialmente quando plotamos múltiplas distribuições. Mas pode potencialmente introduzir distorções se a distribuição usada é limitada ou não suave. Como um histograma, a qualidade da representação também depende na escolha de bons parâmetros suavizadores (smoothing parameters)." [créditos](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Em outras palavras, dados discrepantes (outliers) vão fazer seus gráficos se comportarem mal, como sempre. + +Se você quer revisitar a linha irregular/dentada MaxBodyMass (massa corporal máxima) no segundo gráfico construído, você pode suavizá-la muito bem recriando o seguinte método: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass']) +plt.show() +``` +![Linha suave massa corporal](images/density2.png) + +Se você quer uma linha suave, mas não tão suave, mude o parâmetro `bw_adjust`: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) +plt.show() +``` +![Linha menos suave massa corporal](images/density3.png) + +✅ Leia sobre os parâmetros disponíveis para esse tipo de gráfico e experimente! + +Esse tipo de gráfico oferece visualizações bonitas e esclarecedoras. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por pássaro por Ordem: + +```python +sns.kdeplot( + data=filteredBirds, x="MaxBodyMass", hue="Order", + fill=True, common_norm=False, palette="crest", + alpha=.5, linewidth=0, +) +``` + +![Massa corporal por Ordem](images/density4.png) + +Você também pode mapear a densidade de várias variáveis em um só gráfico. Teste usar o comprimento máximo (MaxLength) e mínimo (MinLength) de um pássaro comparado com seu status de conservação: + +```python +sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") +``` + +![Múltiplas densidades sobrepostas](images/multi.png) + +Talvez valha a pena pesquisar mais a fundo se o cluster de pássaros vulneráveis ('Vulnerable') de acordo com seus comprimentos tem significado ou não. + +## 🚀 Desafio + +Histogramas são um tipo mais sofisticado de gráfico em relação a simples gráficos de dispersão, barras ou linhas. Pesquise na internet bons exemplos de uso de histogramas. Como eles são usados, o que eles demonstram e em quais áreas ou campos de pesquisa eles são usados. + +## [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/19) + +## Revisão e autoestudo + +Nessa aula, você usou o Matplotlib e começou a trabalhar com o Seaborn para mostrar gráficos mais avançados. Pesquise sobre o `kdeplot` no Seaborn, uma "curva de densidade de probabilidade contínua em uma ou mais dimensões". Leia a [documentação](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) para entender como funciona. + +## Tarefa + +[Use suas habilidades](assignment.md) From 1a44378334a819d17da9b1e938614a9d3b6aef1a Mon Sep 17 00:00:00 2001 From: Dhruv Krishna Vaid Date: Wed, 13 Oct 2021 11:46:51 +0530 Subject: [PATCH 077/254] Added Hindi translations --- .../17-Introduction/translations/README.hi.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md diff --git a/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md b/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md new file mode 100644 index 00000000..8b15fd41 --- /dev/null +++ b/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md @@ -0,0 +1,100 @@ +# क्लाउड में डेटा साइंस का परिचय + +|![[(@sketchthedocs) द्वारा स्केचनोट](https://sketchthedocs.dev) ](../../../sketchnotes/17-DataScience-Cloud.png)| +|:---:| +| क्लाउड में डेटा साइंस: परिचय - _[@nitya](https://twitter.com/nitya) द्वारा स्केचनोट_ | + + +इस पाठ में, आप क्लाउड के मूलभूत सिद्धांतों को जानेंगे, फिर आप देखेंगे कि आपके डेटा साइंस परियोजनाओं को चलाने के लिए क्लाउड सेवाओं का उपयोग करना आपके लिए दिलचस्प क्यों हो सकता है और हम क्लाउड में चलने वाले डेटा साइंस प्रोजेक्ट के कुछ उदाहरण देखेंगे। + + +## [प्री-लेक्चर क्विज़](https://red-water-0103e7a0f.azurestaticapps.net/quiz/32) + + +## क्लाउड क्या है? + +क्लाउड, या क्लाउड कंप्यूटिंग, इंटरनेट पर एक बुनियादी ढांचे पर होस्ट की जाने वाली पे-एज़-यू-गो कंप्यूटिंग सेवाओं की एक विस्तृत श्रृंखला की डिलीवरी है। सेवाओं में स्टोरेज, डेटाबेस, नेटवर्किंग, सॉफ्टवेयर, एनालिटिक्स और इंटेलिजेंट सर्विसेज जैसे समाधान शामिल हैं। + +हम आम तौर पर पब्लिक, प्राइवेट और हाइब्रिड क्लाउड में ऐसे अंतर करते हैं: + +* पब्लिक क्लाउड: एक पब्लिक क्लाउड का स्वामित्व और संचालन तीसरे पक्ष के क्लाउड सेवा प्रदाता के पास होता है जो इंटरनेट पर अपने कंप्यूटिंग संसाधनों को जनता तक पहुंचाता है। +* प्राइवेट क्लाउड: एक ही व्यवसाय या संगठन द्वारा विशेष रूप से उपयोग किए जाने वाले क्लाउड कंप्यूटिंग संसाधनों को संदर्भित करता है, जिसमें सेवाओं और निजी नेटवर्क पर बनाए रखा गया इंफ्रास्ट्रक्चर होता है। +* हाइब्रिड क्लाउड: हाइब्रिड क्लाउड एक ऐसा सिस्टम है जो पब्लिक और प्राइवेट क्लाउड को जोड़ता है। उपयोगकर्ता ऑन-प्रिमाइसेस डेटासेंटर चुनते हैं, जिससे डेटा और एप्लिकेशन को एक या अधिक पब्लिक क्लाउड पर चला सकते हैं। + +अधिकांश क्लाउड कंप्यूटिंग सेवाएं तीन श्रेणियों में आती हैं: सर्विस के रूप में इंफ्रास्ट्रक्चर (IaaS), सर्विस के रूप में प्लेटफॉर्म (PaaS) और सर्विस के रूप में सॉफ्टवेयर (SaaS)। + +* सर्विस के रूप में इंफ्रास्ट्रक्चर (IaaS): उपयोगकर्ता आईटी इन्फ्रास्ट्रक्चर किराए पर लेते हैं जैसे सर्वर और वर्चुअल मशीन (VMs), स्टोरेज, नेटवर्क, ऑपरेटिंग सिस्टम। +* सर्विस के रूप में प्लेटफॉर्म (PaaS): उपयोगकर्ता सॉफ्टवेयर ऍप्लिकेशन्स के विकास, परीक्षण, वितरण और मैनेज करने के लिए एक वातावरण किराए पर लेते हैं। उपयोगकर्ताओं को विकास के लिए आवश्यक सर्वर के इंफ्रास्ट्रक्चर, स्टोरेज, नेटवर्क और डेटाबेस को स्थापित करने या प्रबंधित करने के बारे में चिंता करने की आवश्यकता नहीं है। +* सर्विस के रूप में सॉफ्टवेयर (SaaS): उपयोगकर्ताओं को आमतौर पर मांग और सदस्यता के आधार पर इंटरनेट पर सॉफ़्टवेयर एप्लिकेशन तक पहुंच प्राप्त होती है। उपयोगकर्ताओं को सॉफ़्टवेयर एप्लिकेशन की होस्टिंग और मैनेजिंग, बुनियादी इंफ्रास्ट्रक्चर या मेंटेनेंस, जैसे सॉफ़्टवेयर अपग्रेड और सुरक्षा पैचिंग के बारे में चिंता करने की आवश्यकता नहीं है। + +कुछ सबसे बड़े क्लाउड प्रदाता ऐमज़ॉन वेब सर्विसेस, गूगल क्लाउड प्लेटफॉर्म और माइक्रोसॉफ्ट अज़ूर हैं। +## डेटा साइंस के लिए क्लाउड क्यों चुनें? + +डेवलपर और आईटी पेशेवर कई कारणों से क्लाउड के साथ काम करना चुनते हैं, जिनमें निम्न शामिल हैं: + +* नवाचार: आप क्लाउड प्रदाताओं द्वारा बनाई गई नवीन सेवाओं को सीधे अपने ऐप्स में एकीकृत करके अपने एप्लिकेशन को सशक्त बना सकते हैं। +* लचक: आप केवल उन सेवाओं के लिए भुगतान करते हैं जिनकी आपको आवश्यकता है और आप सेवाओं की एक विस्तृत श्रृंखला से चुन सकते हैं। आप आमतौर पर अपनी उभरती जरूरतों के अनुसार अपनी सेवाओं का भुगतान और अनुकूलन करते हैं। +* बजट: आपको हार्डवेयर और सॉफ़्टवेयर खरीदने, साइट पर डेटासेंटर स्थापित करने और चलाने के लिए प्रारंभिक निवेश करने की आवश्यकता नहीं है और आप केवल उसी के लिए भुगतान करते हैं जिसका आपने उपयोग किया है। +* अनुमापकता: आपके संसाधन आपकी परियोजना की ज़रूरतों के अनुसार बड़े हो सकते हैं, जिसका अर्थ है कि आपके ऐप्स किसी भी समय बाहरी कारकों को अपनाकर, कम या ज्यादा कंप्यूटिंग शक्ति, स्टोरेज और बैंडविड्थ का उपयोग कर सकते हैं। +* उत्पादकता: आप उन कार्यों पर समय बिताने के बजाय, जिन्हें कोई अन्य व्यक्ति प्रबंधित कर सकता है, जैसे डेटासेंटर प्रबंधित करना, अपने व्यवसाय पर ध्यान केंद्रित कर सकते हैं। +* विश्वसनीयता: क्लाउड कम्प्यूटिंग आपके डेटा का लगातार बैकअप लेने के कई तरीके प्रदान करता है और आप संकट के समय में भी अपने व्यवसाय और सेवाओं को चालू रखने के लिए आपदा वसूली योजनाएँ स्थापित कर सकते हैं। +* सुरक्षा: आप उन नीतियों, तकनीकों और नियंत्रणों से लाभ उठा सकते हैं जो आपकी प्रोजेक्ट की सुरक्षा को मजबूत करती हैं। + +ये कुछ सबसे सामान्य कारण हैं जिनकी वजह से लोग क्लाउड सेवाओं का उपयोग करना चुनते हैं। अब जब हमें इस बात की बेहतर समझ है कि क्लाउड क्या है और इसके मुख्य लाभ क्या हैं, तो आइए डेटा के साथ काम करने वाले डेटा वैज्ञानिकों और डेवलपर्स की नौकरियों पर और अधिक विशेष रूप से देखें, और क्लाउड उन्हें कई चुनौतियों का सामना करने में कैसे मदद कर सकता है: + +* बड़ी मात्रा में डेटा स्टोर करना: बड़े सर्वरों को खरीदने, प्रबंधित करने और उनकी सुरक्षा करने के बजाय, आप अज़ूर कॉसमॉस डीबी , अज़ूर एसक्यूएल डेटाबेस और अज़ूर डेटा लेक स्टोरेज जैसे समाधानों के साथ अपने डेटा को सीधे क्लाउड में स्टोर कर सकते हैं। +* डेटा एकीकरण करना: डेटा एकीकरण डेटा साइंस का एक अनिवार्य हिस्सा है, जो आपको डेटा संग्रह से कार्रवाई करने के लिए संक्रमण करने देता है। क्लाउड में दी जाने वाली डेटा एकीकरण सेवाओं के साथ, आप डेटा फ़ैक्टरी के साथ विभिन्न स्रोतों से डेटा एकत्र, रूपांतरित और एकीकृत कर सकते हैं। +* डेटा प्रोसेसिंग: बड़ी मात्रा में डेटा को संसाधित करने के लिए बहुत अधिक कंप्यूटिंग शक्ति की आवश्यकता होती है, और हर किसी के पास इसके लिए पर्याप्त शक्तिशाली मशीनों तक पहुंच नहीं होती है, यही वजह है कि बहुत से लोग अपने समाधानों को चलाने और डिप्लॉय करने के लिए क्लाउड की विशाल कंप्यूटिंग शक्ति का सीधे उपयोग करना चुनते हैं। +* डेटा एनालिटिक्स सेवाओं का उपयोग करना: अज़ूर सिनेप्स एनालिटिक्स, अज़ूर स्ट्रीम एनालिटिक्स और अज़ूर डेटाब्रिक्स जैसी क्लाउड सेवाएं आपके डेटा को कार्रवाई योग्य अंतर्दृष्टि में बदलने में आपकी सहायता करती हैं। +* मशीन लर्निंग और डेटा इंटेलिजेंस सेवाओं का उपयोग करना: स्क्रैच से शुरू करने के बजाय, आप क्लाउड प्रदाता द्वारा पेश किए गए मशीन लर्निंग एल्गोरिदम का उपयोग अज़ूरएमएल जैसी सेवाओं के साथ कर सकते हैं। आप संज्ञानात्मक सेवाओं का भी उपयोग कर सकते हैं जैसे कि स्पीच-टू-टेक्स्ट, टेक्स्ट-टू-स्पीच, कंप्यूटर दृष्टि और बहुत कुछ। + +## क्लाउड में डेटा साइंस के उदाहरण + +आइए कुछ परिदृश्यों को देखकर इसे और अधिक मूर्त बनाते हैं। + +### रीयल-टाइम सोशल मीडिया भावना विश्लेषण +हम आमतौर पर मशीन लर्निंग से शुरू होने वाले लोगों द्वारा अध्ययन किए गए परिदृश्य से शुरू करेंगे: वास्तविक समय में सोशल मीडिया की भावना का विश्लेषण। + +मान लीजिए कि आप एक समाचार मीडिया वेबसाइट चलाते हैं और आप यह समझने के लिए लाइव डेटा का लाभ उठाना चाहते हैं कि आपके पाठकों की किस सामग्री में रुचि हो सकती है। इसके बारे में अधिक जानने के लिए, आप एक प्रोग्राम बना सकते हैं जो ट्विटर प्रकाशनों से डेटा का रीयल-टाइम भावना विश्लेषण करता है, उन विषयों पर जो आपके पाठकों के लिए प्रासंगिक हैं। + +आप जिन प्रमुख संकेतकों को देखेंगे, वे विशिष्ट विषयों (हैशटैग) और भावना पर ट्वीट्स की मात्रा है, जो विश्लेषिकी टूल का उपयोग करके स्थापित किया जाता है जो निर्दिष्ट विषयों के आसपास भावना विश्लेषण करते हैं। + +इस प्रोजेक्ट को बनाने के लिए आवश्यक स्टेप्स इस प्रकार हैं: + +* स्ट्रीमिंग इनपुट के लिए एक इवेंट हब बनाएं, जो ट्विटर से डेटा एकत्र करेगा +* ट्विटर क्लाइंट एप्लिकेशन को कॉन्फ़िगर करें और शुरू करें, जो ट्विटर स्ट्रीमिंग एपीआई को कॉल करेगा +* एक स्ट्रीम एनालिटिक्स जॉब बनाएं +* जॉब इनपुट और क्वेरी निर्दिष्ट करें +* आउटपुट सिंक बनाएं और जॉब आउटपुट निर्दिष्ट करें +* जॉब शुरू करें + +पूरी प्रक्रिया देखने के लिए [प्रलेखन](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-40229-cxa&ocid=AID30411099) देखें। + +### वैज्ञानिक कागजात विश्लेषण +आइए इस पाठ्यक्रम के लेखकों में से एक, [दिमित्री सोशनिकोव](http://soshnikov.com) द्वारा बनाई गई परियोजना का एक और उदाहरण लें। + +दिमित्री ने एक टूल बनाया जो कोविड पेपर्स का विश्लेषण करता है। इस परियोजना की समीक्षा करके, आप देखेंगे कि आप एक उपकरण कैसे बना सकते हैं जो वैज्ञानिक पत्रों से ज्ञान प्राप्त करता है, अंतर्दृष्टि प्राप्त करता है और शोधकर्ताओं को एक कुशल तरीके से कागजात के बड़े संग्रह के माध्यम से नेविगेट करने में मदद करता है। + +आइए इसके लिए उपयोग किए जाने वाले विभिन्न चरणों को देखें: +* [टेक्स्ट एनालिटिक्स फॉर हेल्थ](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-40229-cxa&ocid=AID3041109) के साथ जानकारी निकालना और प्री-प्रोसेस करना +* प्रसंस्करण को समानांतर रखने के लिए [अज़ूरएमएल](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-40229-cxa&ocid=AID3041109) का उपयोग करना +* [कॉसमॉस डीबी](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-40229-cxa&ocid=AID3041109) के साथ जानकारी संग्रहीत करना और क्वेरी करना +* पावर बीआई का उपयोग करके डेटा अन्वेषण और विज़ुअलाइज़ेशन के लिए एक इंटरैक्टिव डैशबोर्ड बनाना + +पूरी प्रक्रिया देखने के लिए [दिमित्री के ब्लॉग](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) पर जाएँ। + +जैसा कि आप देख सकते हैं, हम डेटा साइंस का प्रदर्शन करने के लिए कई तरह से क्लाउड सेवाओं का लाभ उठा सकते हैं। +## पादटिप्पणी + +स्त्रोत: +* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109 +* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109 +* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/ + +## पोस्ट-लेक्चर क्विज़ + +[पोस्ट-लेक्चर क्विज़](https://red-water-0103e7a0f.azurestaticapps.net/quiz/33) + +## असाइनमेंट + +[मार्केट रिसर्च](../assignment.md) From 5b06f6a5b3b825939bcaef61de572abd6c05afa7 Mon Sep 17 00:00:00 2001 From: Dhruv Krishna Vaid Date: Wed, 13 Oct 2021 12:53:19 +0530 Subject: [PATCH 078/254] Added assignment translation --- .../17-Introduction/translations/README.hi.md | 2 +- .../17-Introduction/translations/assignment.hi.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 5-Data-Science-In-Cloud/17-Introduction/translations/assignment.hi.md diff --git a/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md b/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md index 8b15fd41..e06add10 100644 --- a/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md +++ b/5-Data-Science-In-Cloud/17-Introduction/translations/README.hi.md @@ -97,4 +97,4 @@ ## असाइनमेंट -[मार्केट रिसर्च](../assignment.md) +[मार्केट रिसर्च](./assignment.hi.md) diff --git a/5-Data-Science-In-Cloud/17-Introduction/translations/assignment.hi.md b/5-Data-Science-In-Cloud/17-Introduction/translations/assignment.hi.md new file mode 100644 index 00000000..8317d126 --- /dev/null +++ b/5-Data-Science-In-Cloud/17-Introduction/translations/assignment.hi.md @@ -0,0 +1,10 @@ +# मार्केट रिसर्च + +## निर्देश + +इस पाठ में आपने सीखा कि कई महत्वपूर्ण क्लाउड प्रदाता हैं। डेटा साइंटिस्ट को प्रत्येक क्या पेशकश कर सकता है, यह जानने के लिए कुछ मार्केट रिसर्च करें। क्या उनके सब्स्क्रिप्शन्स तुलनीय हैं? इनमें से तीन या अधिक क्लाउड प्रदाताओं की पेशकशों का वर्णन करने के लिए एक पेपर लिखें। +## स्कोर गाइड + +उदाहरणात्मक | पर्याप्त | सुधार की जरूरत है +--- | --- | -- | +एक पृष्ठ का पेपर तीन क्लाउड प्रदाताओं के डेटा विज्ञान प्रसाद का वर्णन करता है और उनके बीच अंतर करता है। | एक छोटा पेपर प्रस्तुत किया गया है। | विश्लेषण पूरा किए बिना एक पेपर प्रस्तुत किया गया है। \ No newline at end of file From b3aabac0fe1a461e012c5be6b3bc1056cdea3891 Mon Sep 17 00:00:00 2001 From: Keshav Sharma Date: Wed, 13 Oct 2021 04:58:59 -0700 Subject: [PATCH 079/254] Add Pandas in R --- .../07-python/R(Bonus Lesson)/Notebook.ipynb | 2249 ----------------- .../07-python/R/notebook.ipynb | 2131 ++++++++++++++++ 2 files changed, 2131 insertions(+), 2249 deletions(-) delete mode 100644 2-Working-With-Data/07-python/R(Bonus Lesson)/Notebook.ipynb create mode 100644 2-Working-With-Data/07-python/R/notebook.ipynb diff --git a/2-Working-With-Data/07-python/R(Bonus Lesson)/Notebook.ipynb b/2-Working-With-Data/07-python/R(Bonus Lesson)/Notebook.ipynb deleted file mode 100644 index eec49104..00000000 --- a/2-Working-With-Data/07-python/R(Bonus Lesson)/Notebook.ipynb +++ /dev/null @@ -1,2249 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "304296e3", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Attaching package: 'dplyr'\n", - "\n", - "\n", - "The following objects are masked from 'package:stats':\n", - "\n", - " filter, lag\n", - "\n", - "\n", - "The following objects are masked from 'package:base':\n", - "\n", - " intersect, setdiff, setequal, union\n", - "\n", - "\n", - "-- \u001b[1mAttaching packages\u001b[22m ------------------------------------------------------------------------------- tidyverse 1.3.1 --\n", - "\n", - "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.5 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n", - "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.1.5 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n", - "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.4 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 0.5.1\n", - "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 2.0.2 \n", - "\n", - "-- \u001b[1mConflicts\u001b[22m ---------------------------------------------------------------------------------- tidyverse_conflicts() --\n", - "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n", - "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n", - "\n", - "\n", - "Attaching package: 'lubridate'\n", - "\n", - "\n", - "The following objects are masked from 'package:base':\n", - "\n", - " date, intersect, setdiff, union\n", - "\n", - "\n", - "\n", - "Attaching package: 'zoo'\n", - "\n", - "\n", - "The following objects are masked from 'package:base':\n", - "\n", - " as.Date, as.Date.numeric\n", - "\n", - "\n", - "\n", - "Attaching package: 'xts'\n", - "\n", - "\n", - "The following objects are masked from 'package:dplyr':\n", - "\n", - " first, last\n", - "\n", - "\n" - ] - } - ], - "source": [ - "library(dplyr)\n", - "library(tidyverse)\n", - "library('lubridate')\n", - "library('zoo')\n", - "library('xts')" - ] - }, - { - "cell_type": "markdown", - "id": "d786e051", - "metadata": {}, - "source": [ - "## Series" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "f659f553", - "metadata": {}, - "outputs": [], - "source": [ - "a<- 1:9" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "9acc193d", - "metadata": {}, - "outputs": [], - "source": [ - "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f577ec14", - "metadata": {}, - "outputs": [], - "source": [ - "a1 = length(a)\n", - "b1 = length(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "31e069a0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " a\n", - "1 1\n", - "2 2\n", - "3 3\n", - "4 4\n", - "5 5\n", - "6 6\n", - "7 7\n", - "8 8\n", - "9 9\n" - ] - } - ], - "source": [ - "a = data.frame(a,row.names = c(1:a1))\n", - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "29ce166e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " b\n", - "1 I\n", - "2 like\n", - "3 to\n", - "4 use\n", - "5 Python\n", - "6 and\n", - "7 Pandas\n", - "8 very\n", - "9 much\n" - ] - } - ], - "source": [ - "b = data.frame(b,row.names = c(1:b1))\n", - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "eeb683c7", - "metadata": {}, - "outputs": [], - "source": [ - "library('ggplot2')" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "e7788ca1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] \"length of index is 366\"\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 360, - "width": 720 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "start_date <- mdy(\"Jan 1, 2020\")\n", - "end_date <- mdy(\"Dec 31, 2020\")\n", - "idx = seq(start_date,end_date,by ='day')\n", - "print(paste(\"length of index is \",length(idx)))\n", - "size = length(idx)\n", - "sales = runif(366,min=25,max=50)\n", - "sold_items <- data.frame(row.names=idx[0:size],sales)\n", - "ggplot(sold_items,aes(x=idx,y=sales)) + geom_point(color = \"firebrick\", shape = \"diamond\", size = 2) +\n", - " geom_line(color = \"firebrick\", size = .3)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "30747f7c", - "metadata": {}, - "outputs": [], - "source": [ - "library(repr)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "48f3e762", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "366" - ], - "text/latex": [ - "366" - ], - "text/markdown": [ - "366" - ], - "text/plain": [ - "[1] 366" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#changing plot size\n", - "options(repr.plot.width = 12,repr.plot.height=6)\n", - "size" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "abe41544", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 53 × 1
additional_product
<dbl>
2020-01-0110
2020-01-0810
2020-01-1510
2020-01-2210
2020-01-2910
2020-02-0510
2020-02-1210
2020-02-1910
2020-02-2610
2020-03-0410
2020-03-1110
2020-03-1810
2020-03-2510
2020-04-0110
2020-04-0810
2020-04-1510
2020-04-2210
2020-04-2910
2020-05-0610
2020-05-1310
2020-05-2010
2020-05-2710
2020-06-0310
2020-06-1010
2020-06-1710
2020-06-2410
2020-07-0110
2020-07-0810
2020-07-1510
2020-07-2210
2020-07-2910
2020-08-0510
2020-08-1210
2020-08-1910
2020-08-2610
2020-09-0210
2020-09-0910
2020-09-1610
2020-09-2310
2020-09-3010
2020-10-0710
2020-10-1410
2020-10-2110
2020-10-2810
2020-11-0410
2020-11-1110
2020-11-1810
2020-11-2510
2020-12-0210
2020-12-0910
2020-12-1610
2020-12-2310
2020-12-3010
\n" - ], - "text/latex": [ - "A data.frame: 53 × 1\n", - "\\begin{tabular}{r|l}\n", - " & additional\\_product\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t2020-01-01 & 10\\\\\n", - "\t2020-01-08 & 10\\\\\n", - "\t2020-01-15 & 10\\\\\n", - "\t2020-01-22 & 10\\\\\n", - "\t2020-01-29 & 10\\\\\n", - "\t2020-02-05 & 10\\\\\n", - "\t2020-02-12 & 10\\\\\n", - "\t2020-02-19 & 10\\\\\n", - "\t2020-02-26 & 10\\\\\n", - "\t2020-03-04 & 10\\\\\n", - "\t2020-03-11 & 10\\\\\n", - "\t2020-03-18 & 10\\\\\n", - "\t2020-03-25 & 10\\\\\n", - "\t2020-04-01 & 10\\\\\n", - "\t2020-04-08 & 10\\\\\n", - "\t2020-04-15 & 10\\\\\n", - "\t2020-04-22 & 10\\\\\n", - "\t2020-04-29 & 10\\\\\n", - "\t2020-05-06 & 10\\\\\n", - "\t2020-05-13 & 10\\\\\n", - "\t2020-05-20 & 10\\\\\n", - "\t2020-05-27 & 10\\\\\n", - "\t2020-06-03 & 10\\\\\n", - "\t2020-06-10 & 10\\\\\n", - "\t2020-06-17 & 10\\\\\n", - "\t2020-06-24 & 10\\\\\n", - "\t2020-07-01 & 10\\\\\n", - "\t2020-07-08 & 10\\\\\n", - "\t2020-07-15 & 10\\\\\n", - "\t2020-07-22 & 10\\\\\n", - "\t2020-07-29 & 10\\\\\n", - "\t2020-08-05 & 10\\\\\n", - "\t2020-08-12 & 10\\\\\n", - "\t2020-08-19 & 10\\\\\n", - "\t2020-08-26 & 10\\\\\n", - "\t2020-09-02 & 10\\\\\n", - "\t2020-09-09 & 10\\\\\n", - "\t2020-09-16 & 10\\\\\n", - "\t2020-09-23 & 10\\\\\n", - "\t2020-09-30 & 10\\\\\n", - "\t2020-10-07 & 10\\\\\n", - "\t2020-10-14 & 10\\\\\n", - "\t2020-10-21 & 10\\\\\n", - "\t2020-10-28 & 10\\\\\n", - "\t2020-11-04 & 10\\\\\n", - "\t2020-11-11 & 10\\\\\n", - "\t2020-11-18 & 10\\\\\n", - "\t2020-11-25 & 10\\\\\n", - "\t2020-12-02 & 10\\\\\n", - "\t2020-12-09 & 10\\\\\n", - "\t2020-12-16 & 10\\\\\n", - "\t2020-12-23 & 10\\\\\n", - "\t2020-12-30 & 10\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 53 × 1\n", - "\n", - "| | additional_product <dbl> |\n", - "|---|---|\n", - "| 2020-01-01 | 10 |\n", - "| 2020-01-08 | 10 |\n", - "| 2020-01-15 | 10 |\n", - "| 2020-01-22 | 10 |\n", - "| 2020-01-29 | 10 |\n", - "| 2020-02-05 | 10 |\n", - "| 2020-02-12 | 10 |\n", - "| 2020-02-19 | 10 |\n", - "| 2020-02-26 | 10 |\n", - "| 2020-03-04 | 10 |\n", - "| 2020-03-11 | 10 |\n", - "| 2020-03-18 | 10 |\n", - "| 2020-03-25 | 10 |\n", - "| 2020-04-01 | 10 |\n", - "| 2020-04-08 | 10 |\n", - "| 2020-04-15 | 10 |\n", - "| 2020-04-22 | 10 |\n", - "| 2020-04-29 | 10 |\n", - "| 2020-05-06 | 10 |\n", - "| 2020-05-13 | 10 |\n", - "| 2020-05-20 | 10 |\n", - "| 2020-05-27 | 10 |\n", - "| 2020-06-03 | 10 |\n", - "| 2020-06-10 | 10 |\n", - "| 2020-06-17 | 10 |\n", - "| 2020-06-24 | 10 |\n", - "| 2020-07-01 | 10 |\n", - "| 2020-07-08 | 10 |\n", - "| 2020-07-15 | 10 |\n", - "| 2020-07-22 | 10 |\n", - "| 2020-07-29 | 10 |\n", - "| 2020-08-05 | 10 |\n", - "| 2020-08-12 | 10 |\n", - "| 2020-08-19 | 10 |\n", - "| 2020-08-26 | 10 |\n", - "| 2020-09-02 | 10 |\n", - "| 2020-09-09 | 10 |\n", - "| 2020-09-16 | 10 |\n", - "| 2020-09-23 | 10 |\n", - "| 2020-09-30 | 10 |\n", - "| 2020-10-07 | 10 |\n", - "| 2020-10-14 | 10 |\n", - "| 2020-10-21 | 10 |\n", - "| 2020-10-28 | 10 |\n", - "| 2020-11-04 | 10 |\n", - "| 2020-11-11 | 10 |\n", - "| 2020-11-18 | 10 |\n", - "| 2020-11-25 | 10 |\n", - "| 2020-12-02 | 10 |\n", - "| 2020-12-09 | 10 |\n", - "| 2020-12-16 | 10 |\n", - "| 2020-12-23 | 10 |\n", - "| 2020-12-30 | 10 |\n", - "\n" - ], - "text/plain": [ - " additional_product\n", - "2020-01-01 10 \n", - "2020-01-08 10 \n", - "2020-01-15 10 \n", - "2020-01-22 10 \n", - "2020-01-29 10 \n", - "2020-02-05 10 \n", - "2020-02-12 10 \n", - "2020-02-19 10 \n", - "2020-02-26 10 \n", - "2020-03-04 10 \n", - "2020-03-11 10 \n", - "2020-03-18 10 \n", - "2020-03-25 10 \n", - "2020-04-01 10 \n", - "2020-04-08 10 \n", - "2020-04-15 10 \n", - "2020-04-22 10 \n", - "2020-04-29 10 \n", - "2020-05-06 10 \n", - "2020-05-13 10 \n", - "2020-05-20 10 \n", - "2020-05-27 10 \n", - "2020-06-03 10 \n", - "2020-06-10 10 \n", - "2020-06-17 10 \n", - "2020-06-24 10 \n", - "2020-07-01 10 \n", - "2020-07-08 10 \n", - "2020-07-15 10 \n", - "2020-07-22 10 \n", - "2020-07-29 10 \n", - "2020-08-05 10 \n", - "2020-08-12 10 \n", - "2020-08-19 10 \n", - "2020-08-26 10 \n", - "2020-09-02 10 \n", - "2020-09-09 10 \n", - "2020-09-16 10 \n", - "2020-09-23 10 \n", - "2020-09-30 10 \n", - "2020-10-07 10 \n", - "2020-10-14 10 \n", - "2020-10-21 10 \n", - "2020-10-28 10 \n", - "2020-11-04 10 \n", - "2020-11-11 10 \n", - "2020-11-18 10 \n", - "2020-11-25 10 \n", - "2020-12-02 10 \n", - "2020-12-09 10 \n", - "2020-12-16 10 \n", - "2020-12-23 10 \n", - "2020-12-30 10 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 366 × 1
total
<dbl>
2020-01-0154.37099
2020-01-02 NA
2020-01-03 NA
2020-01-04 NA
2020-01-05 NA
2020-01-06 NA
2020-01-07 NA
2020-01-0851.99181
2020-01-09 NA
2020-01-10 NA
2020-01-11 NA
2020-01-12 NA
2020-01-13 NA
2020-01-14 NA
2020-01-1547.57204
2020-01-16 NA
2020-01-17 NA
2020-01-18 NA
2020-01-19 NA
2020-01-20 NA
2020-01-21 NA
2020-01-2250.46082
2020-01-23 NA
2020-01-24 NA
2020-01-25 NA
2020-01-26 NA
2020-01-27 NA
2020-01-28 NA
2020-01-2955.32913
2020-01-30 NA
......
2020-12-0247.63211
2020-12-03 NA
2020-12-04 NA
2020-12-05 NA
2020-12-06 NA
2020-12-07 NA
2020-12-08 NA
2020-12-0949.09786
2020-12-10 NA
2020-12-11 NA
2020-12-12 NA
2020-12-13 NA
2020-12-14 NA
2020-12-15 NA
2020-12-1655.27396
2020-12-17 NA
2020-12-18 NA
2020-12-19 NA
2020-12-20 NA
2020-12-21 NA
2020-12-22 NA
2020-12-2346.30954
2020-12-24 NA
2020-12-25 NA
2020-12-26 NA
2020-12-27 NA
2020-12-28 NA
2020-12-29 NA
2020-12-3043.08600
2020-12-31 NA
\n" - ], - "text/latex": [ - "A data.frame: 366 × 1\n", - "\\begin{tabular}{r|l}\n", - " & total\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t2020-01-01 & 54.37099\\\\\n", - "\t2020-01-02 & NA\\\\\n", - "\t2020-01-03 & NA\\\\\n", - "\t2020-01-04 & NA\\\\\n", - "\t2020-01-05 & NA\\\\\n", - "\t2020-01-06 & NA\\\\\n", - "\t2020-01-07 & NA\\\\\n", - "\t2020-01-08 & 51.99181\\\\\n", - "\t2020-01-09 & NA\\\\\n", - "\t2020-01-10 & NA\\\\\n", - "\t2020-01-11 & NA\\\\\n", - "\t2020-01-12 & NA\\\\\n", - "\t2020-01-13 & NA\\\\\n", - "\t2020-01-14 & NA\\\\\n", - "\t2020-01-15 & 47.57204\\\\\n", - "\t2020-01-16 & NA\\\\\n", - "\t2020-01-17 & NA\\\\\n", - "\t2020-01-18 & NA\\\\\n", - "\t2020-01-19 & NA\\\\\n", - "\t2020-01-20 & NA\\\\\n", - "\t2020-01-21 & NA\\\\\n", - "\t2020-01-22 & 50.46082\\\\\n", - "\t2020-01-23 & NA\\\\\n", - "\t2020-01-24 & NA\\\\\n", - "\t2020-01-25 & NA\\\\\n", - "\t2020-01-26 & NA\\\\\n", - "\t2020-01-27 & NA\\\\\n", - "\t2020-01-28 & NA\\\\\n", - "\t2020-01-29 & 55.32913\\\\\n", - "\t2020-01-30 & NA\\\\\n", - "\t... & ...\\\\\n", - "\t2020-12-02 & 47.63211\\\\\n", - "\t2020-12-03 & NA\\\\\n", - "\t2020-12-04 & NA\\\\\n", - "\t2020-12-05 & NA\\\\\n", - "\t2020-12-06 & NA\\\\\n", - "\t2020-12-07 & NA\\\\\n", - "\t2020-12-08 & NA\\\\\n", - "\t2020-12-09 & 49.09786\\\\\n", - "\t2020-12-10 & NA\\\\\n", - "\t2020-12-11 & NA\\\\\n", - "\t2020-12-12 & NA\\\\\n", - "\t2020-12-13 & NA\\\\\n", - "\t2020-12-14 & NA\\\\\n", - "\t2020-12-15 & NA\\\\\n", - "\t2020-12-16 & 55.27396\\\\\n", - "\t2020-12-17 & NA\\\\\n", - "\t2020-12-18 & NA\\\\\n", - "\t2020-12-19 & NA\\\\\n", - "\t2020-12-20 & NA\\\\\n", - "\t2020-12-21 & NA\\\\\n", - "\t2020-12-22 & NA\\\\\n", - "\t2020-12-23 & 46.30954\\\\\n", - "\t2020-12-24 & NA\\\\\n", - "\t2020-12-25 & NA\\\\\n", - "\t2020-12-26 & NA\\\\\n", - "\t2020-12-27 & NA\\\\\n", - "\t2020-12-28 & NA\\\\\n", - "\t2020-12-29 & NA\\\\\n", - "\t2020-12-30 & 43.08600\\\\\n", - "\t2020-12-31 & NA\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 366 × 1\n", - "\n", - "| | total <dbl> |\n", - "|---|---|\n", - "| 2020-01-01 | 54.37099 |\n", - "| 2020-01-02 | NA |\n", - "| 2020-01-03 | NA |\n", - "| 2020-01-04 | NA |\n", - "| 2020-01-05 | NA |\n", - "| 2020-01-06 | NA |\n", - "| 2020-01-07 | NA |\n", - "| 2020-01-08 | 51.99181 |\n", - "| 2020-01-09 | NA |\n", - "| 2020-01-10 | NA |\n", - "| 2020-01-11 | NA |\n", - "| 2020-01-12 | NA |\n", - "| 2020-01-13 | NA |\n", - "| 2020-01-14 | NA |\n", - "| 2020-01-15 | 47.57204 |\n", - "| 2020-01-16 | NA |\n", - "| 2020-01-17 | NA |\n", - "| 2020-01-18 | NA |\n", - "| 2020-01-19 | NA |\n", - "| 2020-01-20 | NA |\n", - "| 2020-01-21 | NA |\n", - "| 2020-01-22 | 50.46082 |\n", - "| 2020-01-23 | NA |\n", - "| 2020-01-24 | NA |\n", - "| 2020-01-25 | NA |\n", - "| 2020-01-26 | NA |\n", - "| 2020-01-27 | NA |\n", - "| 2020-01-28 | NA |\n", - "| 2020-01-29 | 55.32913 |\n", - "| 2020-01-30 | NA |\n", - "| ... | ... |\n", - "| 2020-12-02 | 47.63211 |\n", - "| 2020-12-03 | NA |\n", - "| 2020-12-04 | NA |\n", - "| 2020-12-05 | NA |\n", - "| 2020-12-06 | NA |\n", - "| 2020-12-07 | NA |\n", - "| 2020-12-08 | NA |\n", - "| 2020-12-09 | 49.09786 |\n", - "| 2020-12-10 | NA |\n", - "| 2020-12-11 | NA |\n", - "| 2020-12-12 | NA |\n", - "| 2020-12-13 | NA |\n", - "| 2020-12-14 | NA |\n", - "| 2020-12-15 | NA |\n", - "| 2020-12-16 | 55.27396 |\n", - "| 2020-12-17 | NA |\n", - "| 2020-12-18 | NA |\n", - "| 2020-12-19 | NA |\n", - "| 2020-12-20 | NA |\n", - "| 2020-12-21 | NA |\n", - "| 2020-12-22 | NA |\n", - "| 2020-12-23 | 46.30954 |\n", - "| 2020-12-24 | NA |\n", - "| 2020-12-25 | NA |\n", - "| 2020-12-26 | NA |\n", - "| 2020-12-27 | NA |\n", - "| 2020-12-28 | NA |\n", - "| 2020-12-29 | NA |\n", - "| 2020-12-30 | 43.08600 |\n", - "| 2020-12-31 | NA |\n", - "\n" - ], - "text/plain": [ - " total \n", - "2020-01-01 54.37099\n", - "2020-01-02 NA\n", - "2020-01-03 NA\n", - "2020-01-04 NA\n", - "2020-01-05 NA\n", - "2020-01-06 NA\n", - "2020-01-07 NA\n", - "2020-01-08 51.99181\n", - "2020-01-09 NA\n", - "2020-01-10 NA\n", - "2020-01-11 NA\n", - "2020-01-12 NA\n", - "2020-01-13 NA\n", - "2020-01-14 NA\n", - "2020-01-15 47.57204\n", - "2020-01-16 NA\n", - "2020-01-17 NA\n", - "2020-01-18 NA\n", - "2020-01-19 NA\n", - "2020-01-20 NA\n", - "2020-01-21 NA\n", - "2020-01-22 50.46082\n", - "2020-01-23 NA\n", - "2020-01-24 NA\n", - "2020-01-25 NA\n", - "2020-01-26 NA\n", - "2020-01-27 NA\n", - "2020-01-28 NA\n", - "2020-01-29 55.32913\n", - "2020-01-30 NA\n", - "... ... \n", - "2020-12-02 47.63211\n", - "2020-12-03 NA\n", - "2020-12-04 NA\n", - "2020-12-05 NA\n", - "2020-12-06 NA\n", - "2020-12-07 NA\n", - "2020-12-08 NA\n", - "2020-12-09 49.09786\n", - "2020-12-10 NA\n", - "2020-12-11 NA\n", - "2020-12-12 NA\n", - "2020-12-13 NA\n", - "2020-12-14 NA\n", - "2020-12-15 NA\n", - "2020-12-16 55.27396\n", - "2020-12-17 NA\n", - "2020-12-18 NA\n", - "2020-12-19 NA\n", - "2020-12-20 NA\n", - "2020-12-21 NA\n", - "2020-12-22 NA\n", - "2020-12-23 46.30954\n", - "2020-12-24 NA\n", - "2020-12-25 NA\n", - "2020-12-26 NA\n", - "2020-12-27 NA\n", - "2020-12-28 NA\n", - "2020-12-29 NA\n", - "2020-12-30 43.08600\n", - "2020-12-31 NA" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "index = seq(start_date,end_date,by = 'week')\n", - "sz = length(index)\n", - "additional_product <- rep(10,53)\n", - "additional_items <- data.frame(row.names = index[0:sz],additional_product)\n", - "additional_items\n", - "# we are merging two dataframe so that we can add\n", - "additional_item = merge(additional_items,sold_items, by = 0, all = TRUE)[-1] \n", - "total = data.frame(row.names=idx[0:size],additional_item$additional_product + additional_item$sales)\n", - "colnames(total) = c('total')\n", - "total" - ] - }, - { - "cell_type": "markdown", - "id": "cb00ff6e", - "metadata": {}, - "source": [ - "\n", - "### As you can see, we are having problems here, because in the weekly series non-mentioned days are considered to be missing (NaN), if we add NaN to a number gives us NaN. In order todo addition, we need to fill the value 0 of additional_items while adding series: \n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "387cb4c2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 366 × 1
total
<dbl>
2020-01-0154.37099
2020-01-0227.85566
2020-01-0338.29037
2020-01-0426.72367
2020-01-0537.93330
2020-01-0638.70961
2020-01-0728.36133
2020-01-0851.99181
2020-01-0944.76469
2020-01-1026.54058
2020-01-1131.70327
2020-01-1237.83133
2020-01-1347.45717
2020-01-1431.78909
2020-01-1547.57204
2020-01-1643.79414
2020-01-1746.35117
2020-01-1840.18666
2020-01-1934.65751
2020-01-2038.09664
2020-01-2136.76733
2020-01-2250.46082
2020-01-2339.62032
2020-01-2444.56143
2020-01-2526.45657
2020-01-2645.48089
2020-01-2749.03699
2020-01-2846.05290
2020-01-2955.32913
2020-01-3044.83293
......
2020-12-0247.63211
2020-12-0349.44946
2020-12-0428.07843
2020-12-0549.80941
2020-12-0637.43425
2020-12-0732.36442
2020-12-0837.96258
2020-12-0949.09786
2020-12-1043.08738
2020-12-1136.93554
2020-12-1233.44147
2020-12-1335.24588
2020-12-1447.67855
2020-12-1541.84728
2020-12-1655.27396
2020-12-1732.23195
2020-12-1830.18391
2020-12-1939.27033
2020-12-2045.13756
2020-12-2143.00961
2020-12-2243.69411
2020-12-2346.30954
2020-12-2437.42397
2020-12-2535.94406
2020-12-2645.00482
2020-12-2731.81550
2020-12-2832.69022
2020-12-2931.52063
2020-12-3043.08600
2020-12-3139.28333
\n" - ], - "text/latex": [ - "A data.frame: 366 × 1\n", - "\\begin{tabular}{r|l}\n", - " & total\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t2020-01-01 & 54.37099\\\\\n", - "\t2020-01-02 & 27.85566\\\\\n", - "\t2020-01-03 & 38.29037\\\\\n", - "\t2020-01-04 & 26.72367\\\\\n", - "\t2020-01-05 & 37.93330\\\\\n", - "\t2020-01-06 & 38.70961\\\\\n", - "\t2020-01-07 & 28.36133\\\\\n", - "\t2020-01-08 & 51.99181\\\\\n", - "\t2020-01-09 & 44.76469\\\\\n", - "\t2020-01-10 & 26.54058\\\\\n", - "\t2020-01-11 & 31.70327\\\\\n", - "\t2020-01-12 & 37.83133\\\\\n", - "\t2020-01-13 & 47.45717\\\\\n", - "\t2020-01-14 & 31.78909\\\\\n", - "\t2020-01-15 & 47.57204\\\\\n", - "\t2020-01-16 & 43.79414\\\\\n", - "\t2020-01-17 & 46.35117\\\\\n", - "\t2020-01-18 & 40.18666\\\\\n", - "\t2020-01-19 & 34.65751\\\\\n", - "\t2020-01-20 & 38.09664\\\\\n", - "\t2020-01-21 & 36.76733\\\\\n", - "\t2020-01-22 & 50.46082\\\\\n", - "\t2020-01-23 & 39.62032\\\\\n", - "\t2020-01-24 & 44.56143\\\\\n", - "\t2020-01-25 & 26.45657\\\\\n", - "\t2020-01-26 & 45.48089\\\\\n", - "\t2020-01-27 & 49.03699\\\\\n", - "\t2020-01-28 & 46.05290\\\\\n", - "\t2020-01-29 & 55.32913\\\\\n", - "\t2020-01-30 & 44.83293\\\\\n", - "\t... & ...\\\\\n", - "\t2020-12-02 & 47.63211\\\\\n", - "\t2020-12-03 & 49.44946\\\\\n", - "\t2020-12-04 & 28.07843\\\\\n", - "\t2020-12-05 & 49.80941\\\\\n", - "\t2020-12-06 & 37.43425\\\\\n", - "\t2020-12-07 & 32.36442\\\\\n", - "\t2020-12-08 & 37.96258\\\\\n", - "\t2020-12-09 & 49.09786\\\\\n", - "\t2020-12-10 & 43.08738\\\\\n", - "\t2020-12-11 & 36.93554\\\\\n", - "\t2020-12-12 & 33.44147\\\\\n", - "\t2020-12-13 & 35.24588\\\\\n", - "\t2020-12-14 & 47.67855\\\\\n", - "\t2020-12-15 & 41.84728\\\\\n", - "\t2020-12-16 & 55.27396\\\\\n", - "\t2020-12-17 & 32.23195\\\\\n", - "\t2020-12-18 & 30.18391\\\\\n", - "\t2020-12-19 & 39.27033\\\\\n", - "\t2020-12-20 & 45.13756\\\\\n", - "\t2020-12-21 & 43.00961\\\\\n", - "\t2020-12-22 & 43.69411\\\\\n", - "\t2020-12-23 & 46.30954\\\\\n", - "\t2020-12-24 & 37.42397\\\\\n", - "\t2020-12-25 & 35.94406\\\\\n", - "\t2020-12-26 & 45.00482\\\\\n", - "\t2020-12-27 & 31.81550\\\\\n", - "\t2020-12-28 & 32.69022\\\\\n", - "\t2020-12-29 & 31.52063\\\\\n", - "\t2020-12-30 & 43.08600\\\\\n", - "\t2020-12-31 & 39.28333\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 366 × 1\n", - "\n", - "| | total <dbl> |\n", - "|---|---|\n", - "| 2020-01-01 | 54.37099 |\n", - "| 2020-01-02 | 27.85566 |\n", - "| 2020-01-03 | 38.29037 |\n", - "| 2020-01-04 | 26.72367 |\n", - "| 2020-01-05 | 37.93330 |\n", - "| 2020-01-06 | 38.70961 |\n", - "| 2020-01-07 | 28.36133 |\n", - "| 2020-01-08 | 51.99181 |\n", - "| 2020-01-09 | 44.76469 |\n", - "| 2020-01-10 | 26.54058 |\n", - "| 2020-01-11 | 31.70327 |\n", - "| 2020-01-12 | 37.83133 |\n", - "| 2020-01-13 | 47.45717 |\n", - "| 2020-01-14 | 31.78909 |\n", - "| 2020-01-15 | 47.57204 |\n", - "| 2020-01-16 | 43.79414 |\n", - "| 2020-01-17 | 46.35117 |\n", - "| 2020-01-18 | 40.18666 |\n", - "| 2020-01-19 | 34.65751 |\n", - "| 2020-01-20 | 38.09664 |\n", - "| 2020-01-21 | 36.76733 |\n", - "| 2020-01-22 | 50.46082 |\n", - "| 2020-01-23 | 39.62032 |\n", - "| 2020-01-24 | 44.56143 |\n", - "| 2020-01-25 | 26.45657 |\n", - "| 2020-01-26 | 45.48089 |\n", - "| 2020-01-27 | 49.03699 |\n", - "| 2020-01-28 | 46.05290 |\n", - "| 2020-01-29 | 55.32913 |\n", - "| 2020-01-30 | 44.83293 |\n", - "| ... | ... |\n", - "| 2020-12-02 | 47.63211 |\n", - "| 2020-12-03 | 49.44946 |\n", - "| 2020-12-04 | 28.07843 |\n", - "| 2020-12-05 | 49.80941 |\n", - "| 2020-12-06 | 37.43425 |\n", - "| 2020-12-07 | 32.36442 |\n", - "| 2020-12-08 | 37.96258 |\n", - "| 2020-12-09 | 49.09786 |\n", - "| 2020-12-10 | 43.08738 |\n", - "| 2020-12-11 | 36.93554 |\n", - "| 2020-12-12 | 33.44147 |\n", - "| 2020-12-13 | 35.24588 |\n", - "| 2020-12-14 | 47.67855 |\n", - "| 2020-12-15 | 41.84728 |\n", - "| 2020-12-16 | 55.27396 |\n", - "| 2020-12-17 | 32.23195 |\n", - "| 2020-12-18 | 30.18391 |\n", - "| 2020-12-19 | 39.27033 |\n", - "| 2020-12-20 | 45.13756 |\n", - "| 2020-12-21 | 43.00961 |\n", - "| 2020-12-22 | 43.69411 |\n", - "| 2020-12-23 | 46.30954 |\n", - "| 2020-12-24 | 37.42397 |\n", - "| 2020-12-25 | 35.94406 |\n", - "| 2020-12-26 | 45.00482 |\n", - "| 2020-12-27 | 31.81550 |\n", - "| 2020-12-28 | 32.69022 |\n", - "| 2020-12-29 | 31.52063 |\n", - "| 2020-12-30 | 43.08600 |\n", - "| 2020-12-31 | 39.28333 |\n", - "\n" - ], - "text/plain": [ - " total \n", - "2020-01-01 54.37099\n", - "2020-01-02 27.85566\n", - "2020-01-03 38.29037\n", - "2020-01-04 26.72367\n", - "2020-01-05 37.93330\n", - "2020-01-06 38.70961\n", - "2020-01-07 28.36133\n", - "2020-01-08 51.99181\n", - "2020-01-09 44.76469\n", - "2020-01-10 26.54058\n", - "2020-01-11 31.70327\n", - "2020-01-12 37.83133\n", - "2020-01-13 47.45717\n", - "2020-01-14 31.78909\n", - "2020-01-15 47.57204\n", - "2020-01-16 43.79414\n", - "2020-01-17 46.35117\n", - "2020-01-18 40.18666\n", - "2020-01-19 34.65751\n", - "2020-01-20 38.09664\n", - "2020-01-21 36.76733\n", - "2020-01-22 50.46082\n", - "2020-01-23 39.62032\n", - "2020-01-24 44.56143\n", - "2020-01-25 26.45657\n", - "2020-01-26 45.48089\n", - "2020-01-27 49.03699\n", - "2020-01-28 46.05290\n", - "2020-01-29 55.32913\n", - "2020-01-30 44.83293\n", - "... ... \n", - "2020-12-02 47.63211\n", - "2020-12-03 49.44946\n", - "2020-12-04 28.07843\n", - "2020-12-05 49.80941\n", - "2020-12-06 37.43425\n", - "2020-12-07 32.36442\n", - "2020-12-08 37.96258\n", - "2020-12-09 49.09786\n", - "2020-12-10 43.08738\n", - "2020-12-11 36.93554\n", - "2020-12-12 33.44147\n", - "2020-12-13 35.24588\n", - "2020-12-14 47.67855\n", - "2020-12-15 41.84728\n", - "2020-12-16 55.27396\n", - "2020-12-17 32.23195\n", - "2020-12-18 30.18391\n", - "2020-12-19 39.27033\n", - "2020-12-20 45.13756\n", - "2020-12-21 43.00961\n", - "2020-12-22 43.69411\n", - "2020-12-23 46.30954\n", - "2020-12-24 37.42397\n", - "2020-12-25 35.94406\n", - "2020-12-26 45.00482\n", - "2020-12-27 31.81550\n", - "2020-12-28 32.69022\n", - "2020-12-29 31.52063\n", - "2020-12-30 43.08600\n", - "2020-12-31 39.28333" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "additional_item[is.na(additional_item)] = 0\n", - "total = data.frame(row.names=idx[0:size],additional_item$additional_product + additional_item$sales)\n", - "colnames(total) = c('total')\n", - "total" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "bdb60236", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAMAAABR+ye1AAAAOVBMVEUAAAAzMzNNTU1oaGh8\nfHyMjIyampqnp6eyIiKysrK9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PD///+vl18TAAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO19ibbjOI5sdlb1tGam37TL//+xr64XWSKxBEBQ\nImXEOVVpSyQIbkEwROv+uicSiURiSPw624FEIpFI0EiCTiQSiUGRBJ1IJBKDIgk6kUgkBkUS\ndCKRSAyKJOhEIpEYFEnQiUQiMSiSoBOJRGJQeAn61oTG7F2RvvmQvjkxtHPpnR8NziVB80jf\nfEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTO\njyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjfnBjaufTOjyToLkjffEjf\nnBjaufTOj4MI+vff2P6bBH0e0jcfRvZtbOfSOz+OIejfr//9Xr8kQZ+G9M2HkX0b27n0zo8k\n6C5I33xI35wY2rn0zo8DCfqeBD0E0jcfRvZtbOfSOz+OIuin9vwh6H/8QMuWSCQSiUboBP1i\n54ygB0D65sPIvo3tXHrnR2rQXZC++ZC+OTG0c+mdH0nQXZC++ZC+OTG0c+mdH0nQXZC++ZC+\nOTG0c+mdH0nQXZC++ZC+OTG0c+mdH/lLwi5I33xI35wY2rn0zo98F0cXpG8+pG9ODO1ceudH\nEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9O\nDO1ceudHEnQXpG8+pG9ODO1ceudHEnQXpG8+pG9ODO0c6d2yHO4Gg6HbLgm6C9I3H9I3J4Z2\njvJuWYZh6KHbLgm6C9I3H9I3J4Z2jvBuWcZh6KHbLgm6C9I3H9I3J4Z2rvJueeMUb0oM3XZJ\n0F2QvvmQvjkxtHO1d0nQKJKguyB98yF9c2Jo51Li8CMJugvSNx/SNyeGdi4fEvqRBN0F6ZsP\n6ZsTQzuXx+z8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdo71L\niQNBEnQXpG8+pG9ODO1cErQfSdBdkL75kL45MbRz6Z0fSdBdkL75kL45MbRz6Z0fSdBdkL75\n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\n9y4JugscvrWSzxcQdN+D5BrOHW+dj9n1RUocbiRBd4Hdt4p8Jpc4OmjQvX/qo2Dk8Ta2c0nQ\nfiRBd4HZt5p8JifoeA26w28x55E4NAztXHrnRxJ0FwRE0GYDaMKUOD4GLYlHHm9jO5fe+ZEE\n3QWpQftw7EPC6/wMfWznUuLwIwm6C9pPcfSTWi0SR4MX4x+zM9L9yONtbOeSoP1Igu6CgFcj\ndGNoA0G3eNGFoCNhFUxGHm9jO5fe+ZEE3QWtvjnU1iaJgy7r+EMTB/ap+ZHjyONtbOfSOz+S\noLug0TfPeYUWgibLajw1kRH0kRjauZQ4/EiC7oITImgYtW9caU387Mp4aJ+mBn0UkqDdSILu\ngpk0aCFSbuJnT9Zj+zRPcRwE1LtzfoU0dNslQXdBu2/2v3mLpqx8E6SMJn52ZL52n3bE0M6h\n3p30O9Gh2y4JugsO980wtHGJo8mbJOgjMbRzoHfhPxQFMXTbJUF3wdG+WYY2+pDwKH+2yD51\nYmjnMO/ankk3YOi2S4LugoN9M41t/JhdA5wzLfvUiaGdM0XQnV0hMHTbnUrQiSg8x/bZXmwx\nljeJGTDaGL4MMoIuMZcGPQ7SNyeGds5wiqOrGwyGbruUOLrgeN8aTnEMhPTNiaGdS+/8SILu\ngvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGd\nS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTN\nh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8\nSILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TN\niaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILu\ngvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGd\nS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTNh/TNiaGdS+/8SILugvTN\nh/TNiaGdS+/8OJWg2/CPU0qdH9luPmS7uZFN50ZI0yVBz4RsNx+y3dzIpnMjCfrrkO3mQ7ab\nG9l0biRBfx2y3XzIdnMjm86NiQk6kUgkEiqSoBOJRGJQJEEnEonEoEiCTiQSiUGRBJ1IJBKD\nIgk6kUgkBkVXgv7NXf8b0r/fjmw3N37XH7PVdPBtka2nwTpb+RwUziDo36//cf9+O34zjZDt\npqMm6Gw1FW8C2V7a/putJ8HIckVDa0iCHg9J0H4kQTtABHZJ0DCsBM1NbxrdCfoV2P++F1ui\nspOz01f8frfEp+m2N7PdBJQzor5Mfv9q/N5+eM7XvYCRrSfByHJ3W7v1Juh1tjz9J++R378X\n75Z6N1kubAYkQduxJWiq8bL1RBhZ7m5rt0MkDqJD15r8pr9/MX7f981RzpVsNwE0x2SrSagI\n+r5vmGw9EUaWu9varT9Bv/ZM6/fPrex0CusimwTtQBK0HUnQTTCy3N3Wbv016Du1tvze/6/6\n/sX4/QRN0NluCsh2y1YToRB0tp4MI8vdbe3Wi6B3s6Ryne7p7PQfSBF0tpsAcsitN7LVeJSR\n8X3bMNl6PDwsd7e12xEEXQX/v/dpqu/fjE8brQ8Jy3vZbiTIIXfPVtOxOQfNrG7ZeiQ8LHe3\ntVs3iWPz+5lybXnv4e+bf7bfvxobgl6P2b0vZbuJoIZcthqEza/c1sZZv2brsfCw3CAEnWhF\njv9E4tuRBD0skqATiW9HEvSwSIJOJL4dSdCJRCIxKJKgE4lEYlAkQScSicSgSIJOJBKJQZEE\nnUgkEoMiCTqRSCQGRRJ04rr49av+lEhMhBy3iesiCToxOXLcJr4BSdCJKZHjNnFdPGj5P3/+\n+ufPp3/++r/7/f9+/Xm2U4kEjiToxHXxQ9B//f7169c///70168/7vc/f1g6kZgFSdCJ6+KH\noP/1d8z8158/n/7717//99e/zvYpkTAgCTpxXfzQ8h+//nO//+chduQ7jBOzIQk6cV380PLz\n8eDj///769f/nuxRImFCEnTiukiCTkyOJOjEdVFKHH/8kRJHYiokQSeui+ejwT//ur8fEv77\n13+f7VMiYUASdOK6qI/Z/fHrr7OdSiRwJEEnrovnD1X+ufuhyj/PdiqRwJEEnUgkEoMiCTqR\nSCQGRRJ0IpFIDIok6EQikRgUSdCJRCIxKJKgE4lEYlAkQScSicSgSIJOJBKJQZEEnUgkEoMi\nCTqRSCQGRRJ0IpFIDIok6EQikRgU/x+22CwvTrb4CQAAAABJRU5ErkJggg==", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 360, - "width": 720 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "ggplot(total,aes(x=idx,y=total)) + geom_point(color = \"firebrick\", shape = \"diamond\", size = 2) +\n", - " geom_line(color = \"firebrick\", linetype = \"dotted\", size = .3)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "294dde87", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n" - ], - "text/latex": [ - "\\begin{enumerate*}\n", - "\\item 2020-01-01\n", - "\\item 2020-02-01\n", - "\\item 2020-03-01\n", - "\\item 2020-04-01\n", - "\\item 2020-05-01\n", - "\\item 2020-06-01\n", - "\\item 2020-07-01\n", - "\\item 2020-08-01\n", - "\\item 2020-09-01\n", - "\\item 2020-10-01\n", - "\\item 2020-11-01\n", - "\\item 2020-12-01\n", - "\\end{enumerate*}\n" - ], - "text/markdown": [ - "1. 2020-01-01\n", - "2. 2020-02-01\n", - "3. 2020-03-01\n", - "4. 2020-04-01\n", - "5. 2020-05-01\n", - "6. 2020-06-01\n", - "7. 2020-07-01\n", - "8. 2020-08-01\n", - "9. 2020-09-01\n", - "10. 2020-10-01\n", - "11. 2020-11-01\n", - "12. 2020-12-01\n", - "\n", - "\n" - ], - "text/plain": [ - " [1] \"2020-01-01\" \"2020-02-01\" \"2020-03-01\" \"2020-04-01\" \"2020-05-01\"\n", - " [6] \"2020-06-01\" \"2020-07-01\" \"2020-08-01\" \"2020-09-01\" \"2020-10-01\"\n", - "[11] \"2020-11-01\" \"2020-12-01\"" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "index = seq(start_date,end_date,by ='month')\n", - "index" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "7542d95e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " total\n", - "2020-01-31 40.12725\n", - "2020-02-29 36.38809\n", - "2020-03-31 36.63476\n", - "2020-04-30 36.69513\n", - "2020-05-31 40.12267\n", - "2020-06-30 38.04770\n", - "2020-07-31 39.38036\n", - "2020-08-31 37.60016\n", - "2020-09-30 37.76963\n", - "2020-10-31 38.57457\n", - "2020-11-30 38.38480\n", - "2020-12-31 39.73959" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nycRWwgAAAABJRU5ErkJggg==", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 360, - "width": 720 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "x<- as.xts(total, dateFormat =\"Date\")\n", - "(monthly<-apply.monthly(x,mean))\n", - "ggplot(monthly, aes(x=index, y=total)) + \n", - " geom_bar(stat = \"identity\", width=5) " - ] - }, - { - "cell_type": "markdown", - "id": "945feffd", - "metadata": {}, - "source": [ - "## DataFrame" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "id": "d38f1754", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning message in seq_len(head.end.idx):\n", - "\"first element used of 'length.out' argument\"\n", - "ERROR while rich displaying an object: Error in seq_len(head.end.idx): argument must be coercible to non-negative integer\n", - "\n", - "Traceback:\n", - "1. FUN(X[[i]], ...)\n", - "2. tryCatch(withCallingHandlers({\n", - " . if (!mime %in% names(repr::mime2repr)) \n", - " . stop(\"No repr_* for mimetype \", mime, \" in repr::mime2repr\")\n", - " . rpr <- repr::mime2repr[[mime]](obj)\n", - " . if (is.null(rpr)) \n", - " . return(NULL)\n", - " . prepare_content(is.raw(rpr), rpr)\n", - " . }, error = error_handler), error = outer_handler)\n", - "3. tryCatchList(expr, classes, parentenv, handlers)\n", - "4. tryCatchOne(expr, names, parentenv, handlers[[1L]])\n", - "5. doTryCatch(return(expr), name, parentenv, handler)\n", - "6. withCallingHandlers({\n", - " . if (!mime %in% names(repr::mime2repr)) \n", - " . stop(\"No repr_* for mimetype \", mime, \" in repr::mime2repr\")\n", - " . rpr <- repr::mime2repr[[mime]](obj)\n", - " . if (is.null(rpr)) \n", - " . return(NULL)\n", - " . prepare_content(is.raw(rpr), rpr)\n", - " . }, error = error_handler)\n", - "7. repr::mime2repr[[mime]](obj)\n", - "8. repr_html.help_files_with_topic(obj)\n", - "9. repr_help_files_with_topic_generic(obj, Rd2HTML)\n" - ] - } - ], - "source": [ - "?vector" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "88a435ec", - "metadata": {}, - "outputs": [], - "source": [ - "a = data.frame(a,row.names = c(1:a1))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c4e2a6c1", - "metadata": {}, - "outputs": [], - "source": [ - "b = data.frame(b,row.names = c(1:b1))" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "2bb5177c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 2
ab
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" - ], - "text/latex": [ - "A data.frame: 9 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & a & b\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like \\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\t5 & 5 & Python\\\\\n", - "\t6 & 6 & and \\\\\n", - "\t7 & 7 & Pandas\\\\\n", - "\t8 & 8 & very \\\\\n", - "\t9 & 9 & much \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 2\n", - "\n", - "| | a <int> | b <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "| 5 | 5 | Python |\n", - "| 6 | 6 | and |\n", - "| 7 | 7 | Pandas |\n", - "| 8 | 8 | very |\n", - "| 9 | 9 | much |\n", - "\n" - ], - "text/plain": [ - " a b \n", - "1 1 I \n", - "2 2 like \n", - "3 3 to \n", - "4 4 use \n", - "5 5 Python\n", - "6 6 and \n", - "7 7 Pandas\n", - "8 8 very \n", - "9 9 much " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df<- data.frame(a,b)\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "8f45d3a5", - "metadata": {}, - "outputs": [], - "source": [ - "df = \n", - " rename(df,\n", - " A = a,\n", - " B = b,\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "0efbf2d4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" - ], - "text/latex": [ - "A data.frame: 9 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like \\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\t5 & 5 & Python\\\\\n", - "\t6 & 6 & and \\\\\n", - "\t7 & 7 & Pandas\\\\\n", - "\t8 & 8 & very \\\\\n", - "\t9 & 9 & much \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "| 5 | 5 | Python |\n", - "| 6 | 6 | and |\n", - "| 7 | 7 | Pandas |\n", - "| 8 | 8 | very |\n", - "| 9 | 9 | much |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like \n", - "3 3 to \n", - "4 4 use \n", - "5 5 Python\n", - "6 6 and \n", - "7 7 Pandas\n", - "8 8 very \n", - "9 9 much " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "88b51fdc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Column A (series):\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" - ], - "text/latex": [ - "A data.frame: 9 × 1\n", - "\\begin{tabular}{r|l}\n", - " & A\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t1 & 1\\\\\n", - "\t2 & 2\\\\\n", - "\t3 & 3\\\\\n", - "\t4 & 4\\\\\n", - "\t5 & 5\\\\\n", - "\t6 & 6\\\\\n", - "\t7 & 7\\\\\n", - "\t8 & 8\\\\\n", - "\t9 & 9\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 1\n", - "\n", - "| | A <int> |\n", - "|---|---|\n", - "| 1 | 1 |\n", - "| 2 | 2 |\n", - "| 3 | 3 |\n", - "| 4 | 4 |\n", - "| 5 | 5 |\n", - "| 6 | 6 |\n", - "| 7 | 7 |\n", - "| 8 | 8 |\n", - "| 9 | 9 |\n", - "\n" - ], - "text/plain": [ - " A\n", - "1 1\n", - "2 2\n", - "3 3\n", - "4 4\n", - "5 5\n", - "6 6\n", - "7 7\n", - "8 8\n", - "9 9" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cat(\"Column A (series):\\n\")\n", - "select(df,'A')" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "010bcba8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" - ], - "text/latex": [ - "A data.frame: 4 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I \\\\\n", - "\t2 & 2 & like\\\\\n", - "\t3 & 3 & to \\\\\n", - "\t4 & 4 & use \\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 4 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 1 | 1 | I |\n", - "| 2 | 2 | like |\n", - "| 3 | 3 | to |\n", - "| 4 | 4 | use |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "1 1 I \n", - "2 2 like\n", - "3 3 to \n", - "4 4 use " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A<5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "082277db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\n", - "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" - ], - "text/latex": [ - "A data.frame: 1 × 2\n", - "\\begin{tabular}{r|ll}\n", - " & A & B\\\\\n", - " & & \\\\\n", - "\\hline\n", - "\t6 & 6 & and\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 1 × 2\n", - "\n", - "| | A <int> | B <chr> |\n", - "|---|---|---|\n", - "| 6 | 6 | and |\n", - "\n" - ], - "text/plain": [ - " A B \n", - "6 6 and" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[df$A>5 & df$A<7,]" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "0bbd19f8", - "metadata": {}, - "outputs": [], - "source": [ - "df$DivA <- df$A - mean(df$A)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "f36d96af", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" - ], - "text/latex": [ - "A data.frame: 9 × 3\n", - "\\begin{tabular}{r|lll}\n", - " & A & B & DivA\\\\\n", - " & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4\\\\\n", - "\t2 & 2 & like & -3\\\\\n", - "\t3 & 3 & to & -2\\\\\n", - "\t4 & 4 & use & -1\\\\\n", - "\t5 & 5 & Python & 0\\\\\n", - "\t6 & 6 & and & 1\\\\\n", - "\t7 & 7 & Pandas & 2\\\\\n", - "\t8 & 8 & very & 3\\\\\n", - "\t9 & 9 & much & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 3\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> |\n", - "|---|---|---|---|\n", - "| 1 | 1 | I | -4 |\n", - "| 2 | 2 | like | -3 |\n", - "| 3 | 3 | to | -2 |\n", - "| 4 | 4 | use | -1 |\n", - "| 5 | 5 | Python | 0 |\n", - "| 6 | 6 | and | 1 |\n", - "| 7 | 7 | Pandas | 2 |\n", - "| 8 | 8 | very | 3 |\n", - "| 9 | 9 | much | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA\n", - "1 1 I -4 \n", - "2 2 like -3 \n", - "3 3 to -2 \n", - "4 4 use -1 \n", - "5 5 Python 0 \n", - "6 6 and 1 \n", - "7 7 Pandas 2 \n", - "8 8 very 3 \n", - "9 9 much 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "c67f2bd0", - "metadata": {}, - "outputs": [], - "source": [ - "df$LenB <- str_length(df$B)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "cef214b2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" - ], - "text/latex": [ - "A data.frame: 9 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\t7 & 7 & Pandas & 2 & 6\\\\\n", - "\t8 & 8 & very & 3 & 4\\\\\n", - "\t9 & 9 & much & 4 & 4\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 9 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "| 7 | 7 | Pandas | 2 | 6 |\n", - "| 8 | 8 | very | 3 | 4 |\n", - "| 9 | 9 | much | 4 | 4 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 \n", - "7 7 Pandas 2 6 \n", - "8 8 very 3 4 \n", - "9 9 much 4 4 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "59fe5316", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" - ], - "text/latex": [ - "A data.frame: 5 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 5 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df[0:5,]" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "f944a949", - "metadata": {}, - "outputs": [], - "source": [ - "df1 = df %>% group_by(LenB) %>% summarise(a = mean(A))" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "8ffd39cd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A tibble: 5 × 2
LenBa
<int><dbl>
11.000000
23.000000
35.000000
46.333333
66.000000
\n" - ], - "text/latex": [ - "A tibble: 5 × 2\n", - "\\begin{tabular}{ll}\n", - " LenB & a\\\\\n", - " & \\\\\n", - "\\hline\n", - "\t 1 & 1.000000\\\\\n", - "\t 2 & 3.000000\\\\\n", - "\t 3 & 5.000000\\\\\n", - "\t 4 & 6.333333\\\\\n", - "\t 6 & 6.000000\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A tibble: 5 × 2\n", - "\n", - "| LenB <int> | a <dbl> |\n", - "|---|---|\n", - "| 1 | 1.000000 |\n", - "| 2 | 3.000000 |\n", - "| 3 | 5.000000 |\n", - "| 4 | 6.333333 |\n", - "| 6 | 6.000000 |\n", - "\n" - ], - "text/plain": [ - " LenB a \n", - "1 1 1.000000\n", - "2 2 3.000000\n", - "3 3 5.000000\n", - "4 4 6.333333\n", - "5 6 6.000000" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df1" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "3b859950", - "metadata": {}, - "outputs": [], - "source": [ - "df2 = df %>% group_by(LenB) %>%\n", - "summarise(MEAN = mean(A),count =length(DivA))" - ] - }, - { - "cell_type": "markdown", - "id": "5d3f0287", - "metadata": {}, - "source": [ - "## Printing and Plotting" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "69946dc7", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning message in file(file, \"rt\"):\n", - "\"cannot open file 'file name': No such file or directory\"\n" - ] - }, - { - "ename": "ERROR", - "evalue": "Error in file(file, \"rt\"): cannot open the connection\n", - "output_type": "error", - "traceback": [ - "Error in file(file, \"rt\"): cannot open the connection\nTraceback:\n", - "1. read.csv(\"file name\")", - "2. read.table(file = file, header = header, sep = sep, quote = quote, \n . dec = dec, fill = fill, comment.char = comment.char, ...)", - "3. file(file, \"rt\")" - ] - } - ], - "source": [ - "dataset = read.csv(\"file name\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "009af652", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" - ], - "text/latex": [ - "A data.frame: 6 × 4\n", - "\\begin{tabular}{r|llll}\n", - " & A & B & DivA & LenB\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t1 & 1 & I & -4 & 1\\\\\n", - "\t2 & 2 & like & -3 & 4\\\\\n", - "\t3 & 3 & to & -2 & 2\\\\\n", - "\t4 & 4 & use & -1 & 3\\\\\n", - "\t5 & 5 & Python & 0 & 6\\\\\n", - "\t6 & 6 & and & 1 & 3\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 6 × 4\n", - "\n", - "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", - "|---|---|---|---|---|\n", - "| 1 | 1 | I | -4 | 1 |\n", - "| 2 | 2 | like | -3 | 4 |\n", - "| 3 | 3 | to | -2 | 2 |\n", - "| 4 | 4 | use | -1 | 3 |\n", - "| 5 | 5 | Python | 0 | 6 |\n", - "| 6 | 6 | and | 1 | 3 |\n", - "\n" - ], - "text/plain": [ - " A B DivA LenB\n", - "1 1 I -4 1 \n", - "2 2 like -3 4 \n", - "3 3 to -2 2 \n", - "4 4 use -1 3 \n", - "5 5 Python 0 6 \n", - "6 6 and 1 3 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "head(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "515c95b2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVuklEQVR4nO3djVYbuxWAUZn/ULDf/22LDYm5CQbbc0Y6kvZeC4c2C0Yj6cNg\n0absgMVK6wHACIQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEASqEVKAzV+zy+HAaXAIiCQkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAnO9c3/olxIcJ5DRadS\nEhKcp3x6PPGXV3y+VQmJdMpff379t1d8whUJiXTKp7ev//aKT7gyIZFO+diXQoIlyjcdCQnO\n5FU7WGxfkHMkWOanLSkk+NmPO1JI8KOfN6SQ4Cdn7EchwQ/O2Y5Cgu+dtRuFBN86bzMKCb5x\n7r9pKSQ47eydKCQ46fyNKCQ45YJ9KCQ44ZJtKCT42kW7UEjwpcs2oZDgKxfuQSHBv849Pjp+\nwBXXuPxDEl4CTrt8AwoJ/lanCiExtmu2n5Dgv67afUKC/7hu8wkJPrty7wkJPrl26wkJ/rj4\n+Oj4kVU+JOEl4B8L9p2Q4MOSbSckeLdo1wkJDpZtOiHB3sI9JyTYLd9yQoIFL3v/+QxVPiTh\nJeCPgP0mJKYXsd2ExOxCdpuQmFzMZhMScwvaa0JialFbTUjMLGynCYl5LT8+On6qKh+S8BIQ\nuc2ExKxCd5mQmFTsJhMScwreY0JiStFbTEjMKHyHCYkJxW8wITGdwOOj4+es8iEJL8G0Vtld\nQmIy62wuITGXlfaWkJjKWltLSMxktZ0lJCay3sYSEvNYcV8JiVmscXx0/ORVPiThJZjNuptK\nSMxh5T0lJKaw9pYSEjNYfUcJiQmsv6GExPhybtmco4JTamynmiG93pfN4273dFM2DytdAj4p\n+6OjVY+Pjpeq8iEH283bfZWnx/1juV3lEnB0KKhORlVDeihvz0MPm3K/3W0P78dfAo4Ou2jA\nkDYfN7Y9/LFZ4xLwR/l4qLOZKoZUPn+F+PcLRfnsykvAH+XTW52rrf8hB5tPIW09I7GycnxS\nqnO1Ch9y8PtnpIftx/vxl4CjUrEjr9oxrFFftXOOREXvR0jVdpLfbGBItbeQkBhR9R0kJAZU\nfwMJifE02D9CYjgtto+QGE2T3SMkBtNm8wiJsTTaO0JiJM1+31lIDKTdxhES42i4b4TEMFpu\nGyExiqa7RkgMou2mERJjaLxnhMQQWm8ZITGC5jtGSPQvwf/tlJDoXobtIiR6l2K3CInO5dgs\nQqJvSfaKkOhalq0iJHqWZqcIiY7l2ShCol+J9omQ6FWCY9gjIdGpXJtESPQp2R4REl3KtkWE\nRI/S7RAh0aF8G0RI9Cfh/hAS3cm4PYREb1LuDiHRl1THsEdCoitZt4aQ6EnanSEkOpJ3YwiJ\nfiTeF0KiG5m3hZDoRepdISQ6kXtTCIk+JN8TQqIHSY9hj4REB/JvCCGRXwf7QUik18N2EBLZ\ndbEbhERyfWwGIZFbJ3tBSKTWy1YQEpl1sxOERF7pj2GPhERaPW0DIZFVV7tASCTV1yYQEjl1\ntgeEREq9bQEhkVF3O0BIJNTfBhAS+XS4/kIim46OYY+ERB5l31Cfiy8ksjg8E3X5dLQTEnkc\nVl1IkTqdTJYoHw99Lr6QSKJ8euuPkEiiHJ+UOiQksigddyQk0vCqXbhOJ5MFDkdIvWYkJJLo\nfcmFRAbdr7iQSKD/BRcS7Q2w3kKiuRGWW0i0NsRqC4nGxlhsIdHWIGstJFrq9wT2L0KioXEW\nWki0M9A6C4lmRlpmIdHKUKssJBoZa5GFRBuDrbGQaGK0JRYSLQy3wkKivmGOYY+ERHUjLq+Q\nqG3I1RUSlY25uEKirkHXVkhUNerSComahl1ZIVHRuAsrJOoZeF2FRC0DHsMeCYlKxl5UIVHH\n4GsqJKoYfUmFRA3Dr6iQqGD8BRUS65tgPYXE6mZYTiGxtilWU0isa+hj2CMhsapZllJIrGma\nlRQSK5pnIYXEeiZaRyGxmpmWUUisZapVFBIrmWsRhcQ6JltDIbGGSY5hj4TECuZbQCERb8L1\nExLhZlw+IRFtytUTEsHmXDwhEWvStRMSoWZdOiERadqVExJxpjuGPRISYWZeNiERZepVExJB\n5l40IRFj8jUTEiFmXzIhEWH6FRMSASyYkFjOegmJxSY+hj2qGdL2YfP2+HhTyu2vlS5BVWXf\nkMXaqxjS6+Zt2rdvD3u3q1yCmg7PRJ6O3lUM6b7cbd8e7l/fmrovD2tcgpoOqySkdxVDKmX7\n8fD2XV7ZrHEJKiofDxZrr2pIbw+b8uk//PXXn1x5CSoqn96o+q3dy273uH/YPyN9+0OStelA\nOT4pUTOkl7J5eNndbd5Ker4pz2tcgpqKjo5qvvz9vDl+7/a4ziWoyKt2n9Q9kP11f7Ov6O7x\ndbVLUMnhCElGv/nNBq5iif5LSFzDCv1FSFzBAv1NSFzO+vxDSFzM8vxLSFzK6nxBSFzI4nxF\nSFzEydHXhMQlrMwJQuICFuYUIXE+63KSkDibZTlNSJzLqnxDSJzJonxHSJzHmnxLSJzD8dEP\nhMQZLMhPhMTPrMePhMSPLMfPhMRPrMYZhMQPLMY5hMT3rMVZhMS3LMV5hMQ3HB+dS0icZh3O\nJiROsgznExKnWIULCIkTLMIlhMTXrMFFhMSXLMFlhMQXvOx9KSHxL/N/MSHxD9N/OSHxN7N/\nBSHxF5N/DSHxX+b+KkLiP0z9dYTEZ2b+SkLiyPHR1YTEH6b9ekLiN7O+gJD4YNKXEBLvzPki\nQuLAlC8jJPbM+EJCYmfClxMSjo8CCAmzHUBI0zPZEYQ0O3MdQkiTM9UxhDQ3Mx1ESFMz0VGE\nNDPzHEZI83J8FEhI0zLJkYQ0K3McSkiTMsWxhDQnMxxMSFMywdGCQnp52Cweyg+XII75DRcR\n0uvjTSlC6ofpjbc4pO2vt4rK7XPQeL66BFHK/ujI8dEaFob067bsvYaN599LEOVQkIzWsSSk\n5/u3hjYPL/FrY7HXcJhVIa1jQUibfUX/262xNhZ7BeXjweSuYUFIpTz8fidsOH9dgkDl0xvR\nPCNNoxyflAgX8DPS/4TUh6Kj9XjVbh5etVtR0DnSnXOk7N6PkMzsSvxmwyRM6br8rt0czOjK\n/Pb3FEzo2oQ0A/O5OiFNwHSuT0jjM5sVCGl4JrMGIY3OXFYhpLE5ga1ESEMzkbUIaWTmsRoh\n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\n+fQU0uGZyNMRGXUV0uFBSCTUUUjl40FJ5NNZSOXUX0JTnYVU6fpwoY5C+vhvdURCXYXkVTuy\n6imkj3MkyKevkCApIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEAIUEA\nIUEAIUEAIUGApCFBZ67Y5fHhNJP9XoxvmdTjSz24C2W/F+NbJvX4Ug/uQtnvxfiWST2+1IO7\nUPZ7Mb5lUo8v9eAulP1ejG+Z1ONLPbgLZb8X41sm9fhSD+5C2e/F+JZJPb7Ug7tQ9nsxvmVS\njy/14C6U/V6Mb5nU40s9uAtlvxfjWyb1+FIP7kLZ78X4lkk9vtSDu1D2ezG+ZVKPL/XgoBdC\nggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggBCggDDhPR0UzYP29aj\n+Nb/Mk/2y30p96+tR3HS9mGTe30zr+0lHg7/iMAm8UzvtpvEk/2ce/5eN+/jy1t64rW9xEu5\nf9sDT+W+9UC+cXfNvxZSy2bzstvelYfW4zjh/jCyh8Trm3htL3H3fh+Zt+qvq/7ZnUp+HTbq\ntmxaD+SEkn59847sGokn+rXcJh7dfXlpPYRvfXxXnDb0wULaltvWQzjptrwmDumm7B43h2+P\nc3r8+NbusfVATsq7tld4Ks+th3DKY/mV+fmylLvDD/Otx3HS0/7Vhs1T62GclndtL/e6uWs9\nhFNeyl3qbzzfNunLbnuf9yv+4+FVu7TDGyqk7SbvN3Y3+xeWU4e0/xnptdy0HsgJT/tv7d5C\nz/uUlHdtL3abdRfsf5bff8+ZOqTPf+RzU/Y/vm3Thj5QSK83t4lP6xb8u/NVZD8+yB76OCE9\nJ37BroOQHg9Pma9pJ/H95e+851zDhJR3C3ySNqPDT0fb/c8gv1oP5ISHsv89u4e0v3kxTEj3\nyb/iH2Qe3furYnm/Gt0mH98oIWX/1ukg9eieb8sm79f7t2ejTe7xZV5b6IaQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQelPK613ZPB7e\nf7opN0+Nx8OBkHpTyqa82Zd0u3+n3LYeETsh9eetnO3uqdzsdr/K5mX3sim/Wg8JIfWnlP8d\nHne7u/L89t6zp6QMhNSbUn4/vr/3+w+asgi9EVJKFqE3QkrJIvTmGNLvn5HuGo+InZD6cwzJ\nq3aJCKk3x5CcIyUipN58Cmn3tPGbDUkICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQII\nCQIICQIICQL8H5sEkT1X9RA0AAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "41b872c9", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0\nAAASdAHeZh94AAAaE0lEQVR4nO3d63LeRrIsUFD3I1ki3/9pt6SxtrWPjYHBTnxINNb6QdOe\nYFVFMzM4shQzywswbDn7AJiBIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGA\nIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAIkGAInFly4joIclh8GDL/3s9RYI/\nKRIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIEKBIE\nKBIEKBIEKBIEKBIEKBIEKBIEKBIEXL9I394vTx9fXj69WZ4+JA+CHS5fpOen5btPH398XN4m\nL4J/7/JF+rB8/zn04Wl5//zy/PNzOMHli/T08wuX5fnnX55i98Aely/Ssvz18ddf/s9//JvX\nX8eslhG/z7l6kZ5+K9Lzf/+JpEj8TaoAly/Sr18jfXj+8/P8CiamSH/a8W/tFIm/UaRf/v3v\nIykSf6NIlSu4GkWqXMHVKFLlCq5GkSpXcDWKVLmCq1GkyhVcjSJVruBqFKlyBVejSJUruBpF\nqlzB1ShS5QquRpEqV3A1ilS5gqtRpMoVXI0iVa7gahSpcgVXo0iVK7gaRapcwdUoUuUKrkaR\n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\niYP2zBmmSKE5dTFx0J45wxQpNKcuJg7aM2eYIoXm1MXEQXvmDFOk0Jy6mDhoz5xhihSaUxcT\nB+2ZM0yRQnPqYuKgPXOGKVJoTl1MHLRnzjBFCs2pi4mD9swZdmaRliG/Dyr4rtTFxEF75gw7\ntUgDj1D3XXHQ5Q5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiR\njnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQ\nrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU6\n6jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3\nOkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo\n13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93q\nIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe\n00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuD\nFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpN\nB93qIEU66jUddKuDFOmo13TQrQ5SpKNe00G3OkiRjnpNB93qoJIi/fHx3fLDuw9/vHLFVN8V\nB13uoIoiPb9Z/vL2dSum+q446HIHVRTpw/L0+evPz759eVo+vGrFVN8VB13uoIoiPS1f//fz\nr8vTq1ZM9V1x0OUOqijSsqz9zZ//5DfrM0akBjnotgetBfM1HvATCeY38GukL99+frb5aySY\n36t/vL397Ufkm+fkSXA9A7+P9OHn7yM9vfu48ftIML8H/MkGmJ8iQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAiQYAi\nQYAiQYAiQYAiQYAiXc2yfHu3PH38+fmnN8ubTyffw0+KdDXL8rR896NJb398srw9+yJeFOl6\nvjfn+eXT8ubl5fPy9PXl69Py+eyTUKTrWZY/fn58eXm3fPn+2Rc/khoo0tUsy6+P//ns1184\nlW/C1ShSJd+Eq1GkSr4JV/NXkX79GundyRfxokjX81eR/Fu7Iop0NX8Vye8jFVGkq/mtSC+f\nnvzJhhKKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGK\nBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAGKBAH/Ayzv44rlEgIU\nAAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": { - "image/png": { - "height": 420, - "width": 420 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "barplot(df$A, ylab = 'A',xlab = 'no')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "11001454", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "670db495", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "4.1.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/2-Working-With-Data/07-python/R/notebook.ipynb b/2-Working-With-Data/07-python/R/notebook.ipynb new file mode 100644 index 00000000..605b2117 --- /dev/null +++ b/2-Working-With-Data/07-python/R/notebook.ipynb @@ -0,0 +1,2131 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9f9b980c", + "metadata": {}, + "source": [ + "## Pandas Usecase in R\n", + " We have to use dplyr library to solve pandas usecase in R. We will start importing typical data science library" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "625abf4a", + "metadata": {}, + "outputs": [], + "source": [ + "options(warn=-1)\n", + "library(dplyr)\n", + "library(tidyverse)\n", + "library(lubridate)\n", + "library(zoo)\n", + "library(xts)\n", + "library('ggplot2')" + ] + }, + { + "cell_type": "markdown", + "id": "d786e051", + "metadata": {}, + "source": [ + "## Series" + ] + }, + { + "cell_type": "markdown", + "id": "0f47587a", + "metadata": {}, + "source": [ + " Series is like a list or 1D-array, but with index. All operations are index-aligned. Indexing of row in R we have to use row.names.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "f659f553", + "metadata": {}, + "outputs": [], + "source": [ + "a<- 1:9" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "9acc193d", + "metadata": {}, + "outputs": [], + "source": [ + "b = c(\"I\",\"like\",\"to\",\"use\",\"Python\",\"and\",\"Pandas\",\"very\",\"much\")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "f577ec14", + "metadata": {}, + "outputs": [], + "source": [ + "a1 = length(a)\n", + "b1 = length(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "31e069a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " a\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 6\n", + "7 7\n", + "8 8\n", + "9 9\n" + ] + } + ], + "source": [ + "a = data.frame(a,row.names = c(1:a1))\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "29ce166e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " b\n", + "1 I\n", + "2 like\n", + "3 to\n", + "4 use\n", + "5 Python\n", + "6 and\n", + "7 Pandas\n", + "8 very\n", + "9 much\n" + ] + } + ], + "source": [ + "b = data.frame(b,row.names = c(1:b1))\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "id": "a83abe74", + "metadata": {}, + "source": [ + " One of the frequent usages of series is time series. In time series, the index has a special structure - typically a range of dates or datetimes. The easiest way to create time series using the ts function. But we will try another way to implement time series. We have to use the lubridate library to create an index of dates using the seq function.\n", + " \n", + " Suppose we have a series that shows the amount of product bought every day, and we know that every Sunday we also need to take one additional item for ourselves. Here is how to model using series:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "eeb683c7", + "metadata": {}, + "outputs": [], + "source": [ + "# We will use ggplot2 for visualizing the data\n", + "# If you want to change the plot size repr library will be used\n", + "library(repr)\n", + "options(repr.plot.width = 12,repr.plot.height=6)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "e7788ca1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] \"length of index is 366\"\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAMAAABR+ye1AAAAOVBMVEUAAAAzMzNNTU1oaGh8\nfHyMjIyampqnp6eyIiKysrK9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PD///+vl18TAAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2diYLrKK6Ga6p7btOztbve/2HvqUoMWgFjsLH9\na6ZTXgAJIX0hBOd8fEEgEAhkSvk42wAIBAKB2AJAQyAQyKQCQEMgEMikAkBDIBDIpAJAQyAQ\nyKQCQEMgEMikAkBDIBDIpAJAQyAQyKTSCuhll+ysPlRgW5vAtkaZ2jhY1y47jAOgfYFtbQLb\nGmVq42BduwDQQwS2tQlsa5SpjYN17QJADxHY1iawrVGmNg7WtQsAPURgW5vAtkaZ2jhY1y4A\n9BCBbW0C2xplauNgXbsA0EMEtrUJbGuUqY2Dde0CQA8R2NYmsK1RpjYO1rULAD1EYFubwLZG\nmdo4WNcuAPQQgW1tAtsaZWrjYF27ANBDBLa1CWxrlKmNg3XtAkAPEdjWJrCtUaY2Dta1CwA9\nRGBbm8C2RpnaOFjXLgD0EIFtbQLbGmVq42BduwDQQwS2tQlsa5SpjYN17QJADxHY1iawrVGm\nNg7WtQsAPURgW5vAtkaZ2jhY1y4A9BCBbW0C2xplauNgXbsA0EMEtrUJbGuUqY2Dde0CQA8R\n2NYmsK1RpjYO1rULAD1EYFubwLZGmdo4WNcuAPQQgW1tAtsaZWrjYF27ANBDBLa1CWxrlKmN\ng3XtAkAPEdjWJrCtUaY2Dta1y0GA/vyW918A+lyBbW0ys21zGwfr2uUoQJM/idCnmT5cYFub\nwLZGmdo4WNcuAPQQgW1tAtsaZWrj9lkXQi8zHJnad8cA+pP+BaDPFdjWJjPbNrdxu6wLYSCh\nf5qe2ncHAXpdgo6A/se3lKpBJpYQzrZgs1zPYkj4kYGND2p6KqmbQX9iBj2F9LFtzMRmqN92\nWjzzmM5t3A7rwls6GiMbn9t3B26zA6DnEMu2zRkwKG1G+m2vxTOP6dzG7bFuIKBX+E/tOwB6\niFzMts0pMGpiM9Bvuy2eaEx1NyYyzpC9a9CDFqExgyZsvhWgixEz85hr2xrQdbkZ9P63lHnG\n1OjHPMZZsnMXx7AvCV+OnNp3xwGaf0l4aUCXE33mMZe2hSZ2XW4NevdbyjRjavVkGuNM2Wfd\nwG122MWxEvr9BOEtniSsSPWZx7zLDHrQ9tTRa9B76s8ypub76SzG2TItoBcAOienmb5Hqiac\nM495jzXon0odbJEyeBfHro/L04wpZtD9pAHQwx+cYQJAb5fbzaDbgu5ygF7Crln0PGP6rDXo\nyQA97jtLUwDoBrnXGvSPPAPQu9ahJxpTALqXbAb0uF1/tgDQLXKzXRzLMwDd9m1olJnGFIDu\nJFsBPWp/qSsAdJN0BfSxn5meC+j7zKAB6F6yEdA73+MbBIBukp6APvgzUz9Ab6xTU7zLmLqG\n3WUNGoDuJljiAKBLTU0x5OMBXdXHHmPqezPs+gp+JgYC0J0EXxIC0IWW5vjQNBjQtX3sMKYZ\nTWHZk+0zMTDIfsxknJZLAtp9mz9/QbKy6rUA3dWvmEFvcmj1u9B+zuQ0AdAnyRUBnf0gdpw8\nBtB9IYg16C2ADgcCuv8Mem1sJgYC0J3EBXQhjA6TpwC68zR1A6DLWq+6i6OyTqjn8/g16O0d\njc3NxEAAupM4gM5G7PnZWln1QoDuvdBbD+garYeO+Ikz6HLJ0bs4tnc0WT4TA4PsyEzGabkc\noDGDPmcGfTygq9QeN+LurysesQZdUbAPZzoCmry3zMRAALqTYA16EkB3XumtBXTd3PGwEf8x\n5ZxdHAfug+4JaMyge8gu64YuADbs4gCgx5h+zpeEU82gX8acsg/6soCedQ36YoDekX278zbX\nQO6jEQB9rOnnbLObZw269xcfDwH0pLs4hPtnMk7L157Pr3sBnVUNQD8d0DXxhRn0KjMCepkS\n0AI7MxmnZdc3QDsBnVcNQD8e0BV6778GDUD3FUW8mYxTUr/N0q7dQ7d3ewGgAei9rfWTk3Zx\nANCdRWFnJuO03GwGfSShAegmoW1Z4zUroBcAWl6rHp6ZGHitGfS8a9DZ/ZMA9LGmDwK0Of4A\ntG5/SkBv+A53JgYetwbdhUblXRy5jRbt3+sWGwCg5wH0oB9Lsj9BAdC6/RkBvWUX5FyAPmgX\nR5+nB75Ko5/daLHZAGn0tIAe++MHjwZ0iAdmjj8C0FsqzQnoTc8RTQbo5QhA71k7JlICdH6Z\neKt+ZfSsgK7xLQDdJKkxALpW74SAvvIM+ghA79p9QeQrn32FjRYb1WujJwV0lW8B6CYhjT13\nieMGgL7uGvQRgN63PY5IHtClnXA3nUHXOffygK72VvUXB1sbe+yXhHcA9FV3cSwXW+KomEH7\nd7equ8ga9CNm0PXxw99Td4Zd6Q0agNbtzwno+uF5IqC7fUmYbyWrZfcujlkB/YQ16A3v8GLS\nuy/wBO1N2+Ltcms7LNkoAHRtYVXikYDut82uWUuLBdcA9P13cWxZI5PLxrsIDUAD0GfKcYDu\nEpxFQOe03BjQFc69NqAxg94qAHRtYVViWkC7z+93U7VXbgXoTXFfkNsDeo41aAC6Ri8A3U9o\nT35iGYDONAdAnwfoCXZxANBVap8D6AOGk/Tk9WkQgM40B0CfCOhqb1V/s7u5MfrUyvvgYEDX\nx/ATAO3vqLWs6A7oLvseSjrSS6etynlVOwWA3qaCCADdJDagU6IcC+gNCQpAWxcL7b3+VNpW\nwmUXliZAX2MGXYyVIYBeawLQAPTrb8zNQwG9ZQoFQFsXC+29/tTZVprQ9pntEkA3rUFvMOKK\ngA7xw0WhcQD6noDmY/Q6Y8/FHghoprdGFQCtLhbae/2psq00GJ3WIyigG3ZxbDFiBKC18gGA\nTq4GoAHolwbMoH21zwB08bHlPoTm3NkK6E1GDAC0obw/oImrAejbAbr04JMJaKxB59Q+BNCF\nwZgB0Js/c+0WDmhL+bAZNAB9R0CXotcB9NN2cdTXehCgC4MxwxLHuTNo8+1hAKCTqwHomwG6\nGL8eoOPB0fugAWiq7FxAFz+c9RruZkCfvAZ90Aw6uRqAvgCgpVvLH0NzJQBoALpUvvF2vYZ2\nQJ+8i+OQNWjSKgB9L0BjBl3b1LYsrygNQG/QsAPQG4wYAOhjdnGkVgHo6wG6vFBY3xgAXVMW\ngK5WWKnhuoDeNAoAdKPcGNBbd3GkXOG2VRp4VUBvXMgEoCsVVmq4DqDVe/loQHMPAdAAdDqk\ntlUaeFFAb90KAEBXKqzUAED7+jig3RbaAN2P0AB0lFsD+pxtdls30xpFZXUAeoOGywD6O0oA\n6A0qiADQdumBgN70DUmdbAC087MNDUmw5XEHB9Cqeh9AZ1ILgN5qRIePdxXbns8HdHVaAtC1\n+l9/5gK0kcyiqW17jGzjysz36040g9YNANAbNBwC6A5PPV4C0FZa2tUA6Fr9rz8XA/TGXfqm\nbbqB8wBdWdbQYU3BAegNGq4B6LoHB88GtJmWAPQuUYDO9nYSQG99ztUyzWhgL6Bb0nD/Lg7M\noBvlSoC+wgzaXK7zwgiArtX/+hP7uOXZkuvOoO1YOgfQG9I8vgi1h69Bq3uXB/RPdycG9GuU\nmwHdsqutywwagO4L6MIH7m0PqhQ8pwEtQmHgGvREM+jdgB60iwOArmyhpmAPc1WoTAdoIy0B\n6K6ALn1lNRTQUXMFoHfv4hixBn0WoOW14wFd0XMAeq9cANC6EADdR8LrdRW/GLvlFzQKF+4T\nzVaz6lL5Ql50L/O9qShZ3wCps8HwEF+sG53FHT3Lioqeb7WxUL5DlwNtaMs4bDeiJTIsbUFe\nqLWnlIu5OquHqqigkspR3ORvV/8h8vQZdNJ9xAzaerPHDJq1+bAZ9LL53yTEDJoUdLaDYQZ9\nmzXo9N5QBeiGZVBRHoDOKwOg61qoKXhBQAfpIQB6AkD33MUxdg0agBY3kgDQGzQA0CV1APQM\ngE6EzpU+ZBdHvA5Aq7IAdN3teg0AdEkdAH1PQBeHQAE6BsQxgH6pTNUAaN4mAF3XQk1BANpr\nvYMA0Eu6eTNA0yX3swBdbfmTAF1qEYAGoElbBXkKoKVXLw9otmkFgOZtdgb0q8h0gE4UagV0\nfef3yUmAlo+POY0D0EcBOtPduwGaP/ANQPM2AeiqFvL7nt4FAWin9R4CQMd79wK02PYNQPM2\nnwTo1zC0ALrw5MC7IADttN5DAOh473hAB5pGujL9ji+rzLGvaQ06OLkMQOfauyegrV/dMgoe\nBOg8Q9vUnQzo+q83MgJAVxQ2CpQBrfZG88YZX7PKPPsY4SubAKDvBuhwkxn0/QBdtYBUbAWA\n1kVDBaBpARPQ+ulCVpevUGSVOepJ/FS/pwPQdwN0eEfr9GvQIv3q1VwV0HVvf8VmHgJoxdzM\nmBk/X6vKFAFt/D4HrSu+48sqs9UHANpX9hhAhzVap9/FMSWgXwWHALpyAanYzjMArZnrj1mN\nY3fOoFNmpUtbJIgOAdCizacAOm3madwHPQugMxTeD2i/hYGAxgx6A6A1c/0c7gXo3Bp0+mya\nLm0RaSMALdp8CqD3zqAB6HGAxhp0NaAN5mbGrBegvQ9Ya+k9uzgA6LyyxwB63xo0AD0S0NjF\n8frTdwa9dFqDXpaUBDagSQsA9CoAdJ2K9GfHLo4qWwBoo1ItoTuUeASg4zwjXci4Rpa1iriA\nXkgyj5tBX20NOpBX604UALpOBflzTUDLUXgKoA0Y5OUZgF7nGek855ryCJwOaL4tBYAWbZ4D\n6CIPiBX7hM6gXwcANFc3EaBpX+XiKQC93oov6/nFAc2qAdCizVMAHXft5L3Sg3gAdEndPIBm\na5F6qbUkALRdeBigoyUAtHHtwoBO+94vAWh/SMyC++TBgGbPO6gvwwDo9VZ8Wc8BaHYdgM60\nVwPolHwAtG5EqnoKoMWu3afPoHOjvDBvZJE2EtDrJAuAXqxr1wU0ZtC5RqSqTYBuyY9JAC2Z\n/PA16PkBHSdZAPRiXbswoC+2Bn1jQCe3jAC0FUQZQwSTn72Low+gK0agFdDkYzAAbV3rAWjf\nG2MBXbmLYxigNzUMQKe2xwLaWuJ0zix5BqBVNJ4D6OABuiECqY0AtGjyHEDHbp4C6Joni5UV\nAPR4QIueWyUyAkDbhbcCOr7kAE3XKQFo69rjAN3GvxQAq8qvih8oMPQC0E2ArvQ0AP0tVwI0\nW6cEoPW1pwF627RXKKKArvoJGW0FAN0C6FpPFwFd0QoAbRceBGgaMwC0vvYwQG+c9gpFmEH7\n2t4T3ULjbYCufi8EoL/lWoAmSXxxQFe4iZcFoKXCrdNeoYgBGmvQTNtAQNePGgD9LdcH9Oat\n+AB0Qdk1AL0h1U1FHNDH7+LYsKAiVY0EdIjDPHQGXWOJ0TAAbYh21K0ArcI/V7MvoCv1AtC2\nwo5LHEt1DFAr9gB6g+lHAjp9DT90DbrKFKNhANoQAJqqAqDZtTMB3e9LwuMBveXN5UBAk42s\nI3dx1NliNPxgQBcS8zGAzo06AD0XoPtts1tqx4LpbQf0puWZHYDeMPtgZg0F9KawB6Df5wD0\nW11u2RCAHgnot4INgN469LxSiJ697Qx6I6CPmUED0FX6X38AaBbDTt6QWDUBvR0UdwF0uQsT\nAzpGwm3XoLcC+og1aAC6Tv/rzyUBvYRBgHY+edIHZABofg2ArihYdcufbUtVAwE9fhdHtUUA\n9LcUAR2CdtT5gCYttAKaBkBqzOPze14BQMtrdwH04dvslCvdKfWhgE7DDEDPBmjLcQlYEwE6\n0Ba6AtpKkzStBqABaFqz3PdcEdETd1E6qPk9AP06AaCXkOJmHkDH75nfl3oC2hp1zKCTMgCa\n1OwI6My2DgBaXXufAND0aa0tgC4k2T5Ai1AeD2isQbtWANAFTbWAllFN7xwK6NQzAHp+QNsz\n6OyobwU0KR/bzQJazjU6L3HYIEyxCkDzizcA9A8Czwb04vEZgNbX3icANA2bDKCDOhwI6LEz\n6FxcAdAANKvZFdCLw+fnAjqkV24dK5CV+wPa2sUhi9LIOgDQA9egWcO6DgB9L0DHC62ALtVx\nncnUuxfel58J6LAY8QBAa1HhLIuK+awobLdYDWgxzikxRgA6ANDXB3Q5bdVbPwAtjWCAdg0j\ngNZ7nw4AdLkhAHoRKw6HAJod9QO0/z0NAN0f0JpPXQBd8YRekAUBaGlESK0C0NcGdLgNoDM7\nnQDoZkCvJaRt1n7zihZLgPaHUFSiBQFoaQQAPQmgUx9bAS1SYgeg09g9agZd+5H8XoA2PN0D\n0Lk3WVaJFTwJ0JppdjkAWliXV0EFgF4W/qHyyoA+ZQ26/iO5eyfKdQBtcfSMGTQAbdUAoJcr\nAFrsJXIBzQZnJ6DDqYDm3z7qOgMAXQ2UWwHanOiesAa9hgAALYwAoOcHtHxAJRFRF1WHjYB+\n66wBNLGrH6DdaBwF6OqP5PcCtPm+lAE0WUIrAXrLLo4YCQC0MAKAnh7QMYUkoF+XdwCaa2IB\n8dbpAto63gloHjFHA3rDDNqEET+9DqCtia4PaPoldJZUlol+gTTqALQwAoCeHNBkaifC+X15\nBKCjzqGADvxgG6Bf2aLvNgO6/iO5CS5+fiFAG3BbpwPGDbIa0RHQ6QIALYwAoKcENCOtPYM2\nP5RvB7SFyXU6+SxAb/hIrm/UALqSPGSYDwG0qhhWmkgVfMPFRICu6fwIQCu9HQGdYm21HYCe\nE9D2GnQYCuj1i5tHAboaKG2Arpihv4tFLXMBegGgxT0AOquCynGA/vx5+ZajAO3s4uizxOEA\neil8SVgAdB2KtOYbA7pmjXsttmoJVtvnAXraJY6HAjp9HwBAJz5/RkofBmiRkvFvjy8JPUC/\nXhoBXTdZnAnQdQm0A9BVu0RisbeW9zulooA2IgugtchuQI/6kjBd+No4hE8GNHmzBKDT/PkQ\nQJt7mCSgd2+zGwXo2skit+PegK5zSlCANqqdCGh3m91JgDbZ4Wi6G6DpchMAHfn8w2bO5/6A\ntpeWFaD1qE8B6MrJItcsvgg9A9C1mzjaAF33sUJmnf9FwzmAJgNUC+hMrwFoX0qA1u/lAHQC\ndFyC/se3FKtVSPj5/+vo5Xl+M76mv68jWo6eBHXF0kkKJCX8eryhLeLHsURQHfDVvw/WGuya\nX8m/W9TqWPFjQ11RQ0e5s/WFArHI9CWPBlo437JXQl4O5P9+YWGTWzYXCepG2DiEYY3ViqHz\niygDc47ikR9kCU+LStWS8ChIh6lAiozgjotvk+pMxhLDycEoMVyKgP4k/331/pIwvmfqWdO1\nZtDLIszPqX9XXLt84xl07XyFfpJaLF+On0HTeZtXuHIGnf0whRm0L6UZNImMd9uYQXMuDwP0\n0gPQPkxE6RGAXmr4zGH87jEATbW8BuL4Lwn7ATq/3AVA+1IGdIwMAHpF8ifdXjcO0GrWdDlA\nV40803z/NehWQBuPq+nGZgU0ZtCkyd6AJmUAaDaNHrvEsSxy1vQAQE+wi+NwQNvkuhegc9+N\nGn4EoIUNAHQroMlOjnbdyXQOaJ1+5No9Aa2tuTugnbnlzQCdcSsAnREAOlbdDugv9iAhAL2o\nEgB0pv5axyb03QDtGwZA+8KjAICuB7Qh7bqT6QD0kwAd0sYV1RjVYuIHgCYt3B3Qryb3Adof\nSAC6Rv/Pa2dAB11YCwCdNB4K6NeOwvIMGoAuCABN2gagrwPolPkXAzTt5G0Bve75Lq5BA9AF\nAaBJ2/KR5FQIgN4jAwBN5mb7AV0cnxGAduP5+oBOaxvFXRwAdEEAaNI2AH0VQNPVTQC6zorj\nAE3ePzM9JIMgSQ5AkxYuAuh6HEoTAOj7AXrLDDrl/vUArWeg1wD0kn331IDOPlcarz0A0N54\nA9AA9KUAXb8GHWTJiQCdAcQPoI013D2Arspy9pfc2QboJffu6QBa+vaBgHbHG4D2Aa0YQasC\n0DX6f177Arp2F0dQc+3rANraBXEVQOfyQ3pA7ce7HKA9yzYC2h9vABqAvhigMzAhpcMNAL01\nUhwr5gX0rDNoHgPjAZ0ZbwAagL4loNmk5KKAlj2qUGxZsRPQ4toAQOfr3gbQmY6Mm0E74NPW\niXsANCuREwDauKUb4vLGnFJyDUBPtQY9FNBz7uI4HNDj1qAB6Lwp2smbP7gC0MYt3RCXn+oG\nJicGdFqO6b6LY2JAW4P8QEAP28VxLUCrLAOgbwxoiUkeBnMDWhcAoH2lNwC0YepFAW0/o2RZ\noACtvi4GoAHoRQ7CcYA2dwsA0LWApktYALR382hAG6tzngUS0EGtSgLQAPQiB+EwQItIBqC3\nAZp9CQxAezcPBrT1/bZngQA0q/qOBAAagD4L0GoHAwC9BdB8G+VFAJ1FqTy/IqDNHaK8uAfo\noAH9OgWgAegTAK0ieRigv1u+HaADAJ0qDgG0GoYaQBdn0PyxJApoPmMJsS0AGoA+A9DHzaBv\nCWixz31+QMeP65U1agFdavVgQBfWoAWEGaAFvOmceiygeV8BaFbkuYA+bA36noBeZKZbtm0B\ntJjZGdd1wwC0Tuoyn9n7Ko0D8UzpUTNoABqA5lasL7yDVwF0BljpcDygDaLWAJpgodScvK4b\nfhSgnTFVSZ3NyyygZZYdtAYtAC06A0CTa88CtOggBbTO/GkAbc6Q2gFt+LsS0NTLALR3dzCg\n37itBbTYSlcA9EG7OHg7ADQrAkDHouMAXTa6HtD2GiMAnVe8lr0boNcJcTWg+cMoAtDqZ7PW\n3gHQALShCIDWep1v6VVqAdBm+zcDdFxTrge0RGEnQAd+uWwGaRGABqC5FdcFtLfNtSug1cAD\n0L6cCuiGGfQYQAe7akkeDmiCnGU9OhfQRFsroAu/NCDa2ALoFKvzAlptDoyXRVMZQJOvlQDo\njKlXAPTmNegxgGZBCUBXyuq0xwOaR8zhgJYznJzBRUDLzYHxqmjKBzRJaRUP3QFt4GkjoG2/\nA9DxujeIvknMuB6A5h/rAOg6iU4DoIUVi+w21dEd0GqNMGdwGdBf9oyyGtD0Q/F5gLY6Snww\nBaCJtRk5G9DuIPomMeM6ADoA0A2SvJYDdFoFYX+tkuoIgK6xwlk0dgyuALQNrFpAs6+VAGi/\nRhdAa99dBtApjIqAFutuAHSdVM2gAWhSZwSgvW/1HIOHA/rBM2jnulMDgF4LlwHN190A6Eqp\nWYMGoEmdHKB9TBWsmA3Qc6xBTwhobeqDAU1TtQLQzHsAdK1U7OIAoEmdIYDuvga9F9Dka6Xr\nA7pomrgEQI8BNB+xGjNIi48FdHLyXID++XMMoOngnwTozrs49gM6eQCAzpo6E6B9NZ0A/XMG\nQF8W0HqNCYCut6JUWXpKmxUFgGaGAtCPBnQIADQrqMrkNAPQ9nGm5BMA7ZASgAagtZa8/3+W\nD+8DaItKAHQqOReg49AA0K7qDYDWT9wVTQWgxwM6+Vmqts5k9R8BoElBVSanGYC2jzMlieFx\nDw4A7aquB7TxmxVFU4cA2qHsKYBmMXA9QFduYc3IHQC9ljgK0CosRYmHAJrsYm8DdBZrS29A\nv47nBbT1q29FU7sA2gwyXRCAlqqtM1kdM+g0kQOgjwQ0fQ706YC21G8EdAjF2RYAfT1AYw2a\nTOQA6CMBPWQGHaQHHgNozKCt29cH9M12cWwHNJnIPQTQP/9NAOjda9BPAHSFaan1k9agDwd0\nKUFErp0J6HcDOwCdjGuSywP6eTPoaQC9bxeHGddPBvRpuzjGAFqPt3XLtUk26gF6fQGgZwX0\n49ag5wF0tBGA9lRvAfTLuKkBneu2gJj88ThWszLWAOg7APppuzhegNZhcSFAu1y5E6CDf89u\n/k6AZt93dgM0VQlAXwbQ6ysADUBnrAagq252ATTbkaIiGYCuFwCalQSg38eqJeYpxtHxgC7l\nVm9A67eF9V7SXgI02XFTMC3JfQDNZtAANABNCqoyOc0AtHlsbMdlqOOr/gD0yYCu4N3BgNYr\nHAB0mwDQrKQPaEFUdXIsoBdjw2w/QFsPTNDEEPtmqgAdWPtGrXRnIR4AoLOmdgE0H+segOYB\n1APQa9AD0AB0PH8qoM1H2tTdAEDn1J8IaGvoMoAWY90B0OFoQC8BgAaghc3i5D6Ath85pomB\nGfTMgFaDlwe0HO3dgFbPrAPQdwC0T6XHAVq/Mh2DAe3wmYVnwxr0QEBnAPRAQOvhqwK0BJ8u\niBm0bT8Aza4B0EMBrfL1fY/nG995vhXQazdmBDTRd01AGwNYBWhpuC64cQ1a5hYA3SRTApr3\nPwdoNkgA9H5AL8YMbL2m7AWgjTNe9nBAb55BF9eg11HetovDzlRHhbJJNQpATw5oD751gLaQ\nCUCL5pOzZON8lhUWzKAnBvTWNeilsIsjrmdt2wc9BNBcAwB9gIT4GtLp+ud1HNgVcUBuBq/M\n13eM2ZpVSWlBiOXClyhrFuSGZIQ3x7TqV6YjvHVILeFLXdpgxRe3n7f0BnTSwzxumqI1BX6o\na5GLcXCUF6wIsTWyYp5zpBWrc80maXRwk9yyvm3eWPljKOMqxObVaKkW3VbVTeGROPLWSKhM\nMP1t1MwHqhhuRgcRRaJxazgDOeaHFelCHEwzlodfdW92yX1n0NaiKmbQqnk+09DTKHJ/3Axa\nDuvoGbQ55XrvUfH7sGkG7dg2bAZtfu+Zm0FbQZbaWrPn/Bl0EBqaZ9DGnDpnysVn0O2639Yv\ngwHtfO1ltQZA24oX+jH47oCORPL78BxAkz2VZwA6Mvk9LgD0DQFtz6CvAWgrFIYCmq40+/aG\naIQ28uKATrsgAOh3a+etQScmB/W+CUDfBtCLwWcZNQD0q+17AZpP+1+2uWbFchefQettGLlW\ni4Bu2sXBbjYDmrxT6vdNAPo+gLaQ2QvQqmZ5xEQjEwGafNZ4LqCvvgbdG9BrR44GNPkw81MF\nM+irApqviGYK24rpwcmA5jGnmhoNaLpa/2BAy5DThWcGtI6MiwJ6YTPoRb5vHgloEQ8AdBug\nteNvDWgjD3cCunYGHYgRysgbAFqrEIUnBrSxen5ZQLM1aEkCABqAXujgPAHQlWvQMWkAaH3G\nywbNVbf5Hkwt9RAAACAASURBVID2NixdE9BsF4e4CUDPAmg18qomAK1srBTJuQSBPYC2H9x8\nKKCtb6jt5jsAmu0opX8uCmjDxKMAnSaGQfYAgAagzwK0G7wAdBug7aekbIt3A5pt+WeLVVcC\ntKX/cECTFW8AmnCHXl2PDwQ0+zGIqQGt7HA4UQwecQxAG4ey8GZAm11V0nUGzb/uBaDNJnwb\nyJ4RAJpzZ1mM/gPQC3NFJaC9z9faCgDa0WQV3gxoyzZ9qdMa9DspApkE+q0C0KYJdNc1AM25\nsyxG/wHohbmiDtAuHbQVrkcMewFob/xU2YPXoJd17SsA0LLqFkAvAPSqn6ciAM1N2wdo//O1\ntgKAdjRZhbcA+thdHOkqljhE1U2AXleIAOjZAE3+Xh7QmQ/YyooNgF51Hwdo7fwLAdqzTV/q\nCeg0cwegZbM1gF7wJeFLPwA9ENBLgc+Kc5MAmoyt0m4b/ghAa1szgGYfBv1WAeisGQA0AD0S\n0Euez4pzALR5KAtfAtDsDwBtNlE0A4DeCmjhXQCatmMir84KAFq2C0CvV15lAGjbfgAagGYN\nxy4D0IssJ5u7E6DV+ALQpHEf0G4M1eTGfkCvJGkUANpqdXZA8x9eTHVnAXQObs8DtG0cAJ0z\nyTcRgAagl8kBTfZo8haPA/RL21hAa9YsxgUAGoAm1gHQtwK0qnIFQEdRLQLQorl5AW1dawK0\nVA9Ay6ZkyLg/CGaYUQa0nXa8GQA6FWTV7wnos2fQyRYA2lU/A6BZIPmt8pu3B7T/k7qGGQA0\nAO0A2qBYwxp0848lGa2vLYZoCwDtqgegJwU0/b2/nBWpLgCdhgCA5qY5gK7fxdEOaIdc6Rce\nAOicegB6TkDT5UEAukI/AN0C6LdtssXxgI7hDUDn1QPQkwE6rmtgBr1JPwA9KaDFl5BrlKef\n+XocoINhmKv+EYD2h2FeQDevQdNgAqCTANCk5HGAlttEArn80Bn0NQHtfZr38G18+XwvQDfu\n4iD5AED3ArRxRdy5BqBZDw8BtNrIFy187hr0gYC2n8XUtpYBTX8UmlX2foz0ToCmmoPVRNGM\nFOqBzrwB6CQANEmmowCtt1qn3j12F8dxgDZ/g7AJ0OkDj2gsUHID0J4Za6SyfACgnwroIJ3A\n37xnmEGncwA6p34PoO1f8W4BNPnKgFclS1Wq/k0BLQ3aBGjMoGVmRnkQoPnH0TU2aDIdBmhv\nDZqcVwI6fZTmqXUlQMsujAW0+vRiKE0XsoCOb7SqseNm0NYQdgN0bLwToOU8O0Uq1qDXg4X3\n+FBAs+8PGgFdGjHLxpcS/nE0xsYZM+gIVqvkEi1Lh0QYoAkIZGpZ+SHDwMpuy3C7m50Arbqg\nwsGKr9QTyzjrWq8Z9DouK1esyDhuDdoawiLS5LmV0uR6L0BTvxMyvdMz3eFuyAbfSpJGAaBZ\na+RTjAtozUWlPU9FbWNYldPZToqN49eg5T0ra0Kqwm9SQNOP0jK1DNMOArSTa7wd0QdhDrfI\nii+bf4aiKL3WoGM0v623DSTjrfNNXXgEoNk7Y/RbYO3wpvze0HdAADoVXDKFqQSjAPse4HBA\nuzPomGrEURcB9PqmE6h1pwPa+7TK25F94OZwi6z4Sj2xjLOu9drFEeMpabLbs+4+F9ApWN+n\nUbdIjRpAszUkADoVXDKFqQRdgI7P6tYjAe2sQcfSNBsvAui9M2h3RF0yWM0tSf1XtEmWUO2K\nPrCBkhZZ8ZV6YiawcY0g0AaqsjVo9ekcgA7sVWWwsqLfDDrQwAegSUFe2x0KWfal/dwZ9JJm\nyuufywN65xq0Hj8zQjyPm4Bm86Qp16Dt22p8Aw8JZc6JgDaS2Qx4U3So2flPrg9Zg17bxww6\nudpMP2+AYk0xAkaSWQlktXbGGrQKHWLCvIBe0mLMwF0cevzMCPE83mcGvSyyC0FaZMUX6YmL\nRy4AtChpKZJR9D4ZsItjbR9r0MnVZvp5AxRrihEwksxKIKtAzS4OzUWmvRh/hpG8bWLazIAm\nVfhNsQ86titTy4QG94B2uhkhnsdtQG9cg47HgWrnfrLii/TExSOX5wA6myHynpf/5Hq/fdBE\nUaKSGBPs4tABYw1QrClGwEgyK4GyBVa3AtDm2UJMUSk9PaA37uJYjwPVXuINAC2GquQwaZin\nSEbR+2Q+QBPtAHQqyGv7QxHyBVa37ga0tWFKGcnbJqYB0FK9GSFejniAdnKNt6P6EKj2Em9m\nADQ7diwI8i4AvR4lKgkfAtA6YKwBijXFCBhJZiVQtsDq1r2Apl8LW9V4VRXkALRUb0aIlyMA\ndNGCIO8+G9DWGjQAnVxtpp83QLGmGAEjyawEyhZY3boT0GxjpVFLVFVBfiagrViXDQdh/48A\n0LInhQBY5fqAZsPDh6rkMGmYp4iPaGwcgJ4W0EGOgJFkVgJlC6xu3QdosfVd1xJVWVcpxagR\nETTaEKXHpKBrhrhixHo6JVu2AWgzvkhPXDxyAaBNW938pwMiAR1k3wHoNv1xKI0xfR+7A7S8\n3SNGwEgyl5BegdWtF59B+9FjmSGuBK/k2q9oF795P0CLbXY6IK34Ij0pBMAq2wGtsoOa82RA\n02dyBR5yVACglf44lMaYvo/dAVrYMM0IaHcN2kkJ2lVKMWpEBI02RGnyo8cyQ1wJXknxsyEA\ntBlfpCcuHrkA0Katbv4H0jgHNA1P5g3ZhNId+GEgF+2g8VMs1QKgU0Fe2x+KkC+wunUvoL1d\nHF5KBG7SpIA+fAYtfmPMQ5LTHFG/AdB0VHgQ6IC04ov0xMUjlx6AZlrDUrQgyLt3ADRfWqTe\nkE0o3XzQmfPsoPFTLFUGoFNBXtsfipAvsLp1N6BddNBj1jtq0qyAPngNmj1ZYhrueVkOCgAt\nLAjy7h0A3W0GzZxnB42bYnd8UMXyHAC9LMyICBptiNLlRo9phrgSvJI/53Tg+M3ugObPZpuG\ne16WgwJACwuCvHsLQPdagw5meQBaB4w5QAsbprMBrY8c1fLqFQDttBIsHb0BbXxedclgNkfU\nA9DCAuW8iwCaR96oXRzBLA9A64AxB2hZ3RNSQV7bH4qQL7C6FYDWx+Ky0nHGDNo2EIAuWqCc\ndxNAq74D0G3601AG23MA9LIwIyJotCFKlxs9phniSrkXIk3ecsYatG2gB+iq3+Kgo8KDQAek\nFV8MlcZ9LbMC+vX/0wDNe06aoznnA1r/sKxPBQBa6U9DGWzPAdDLwoyIoDETqXzNN0NcKfdC\npMlbNgGab3Jp3sVhG3gEoB3tALTOVKeibZiygN/lkZcBdPrZT5XBllP4oAezPACtA8YcoFiJ\nj4DBGCuBsgVWtwLQ+lhcVjpqAf3zf74N0QO0OlBmmgYC0EULlPk3AzT54XwVTO6ovY7ZePO/\n3A1OiqfKAHQqyGvnhiJbYHUrAK2PxWWlYwOg5YOWNwW0H39MDgW092Ok9wJ0+oJ5K6ADH2/+\nl7vBSfFU+ThAf/68/JLDAB3kgKphD7G+l7yZBPEKrG4FoPWxuKx01ANa/VTJCYDmNe0+zwJo\nbSsA/T7rPoO+JKB/wPwZSQ1AS0NkWVO1vDoToD3LnVZ4mrzlWjNoXtPu8+GA9n6+RdkKQL/P\n+qxBXxzQn18AtMVFXkKMmDN67Jj1jpp0d0BPsAbNa9p97g9o8wcA+gKaZY5hYBDlueGsxUAR\n6Nmj+qsy1euItMy4YOY/zbk+uziuDejPLwBaF2WGyLKmann1yYCu3MWhDtQYmwZOC2j7J7Sa\nAS3Tg5jrGLA8B9DxVQWTO2rxMJjlLwPof3xLsVpeAn0J9GI8DOxKkH9CrB+s2vKS2YwqkK5L\n22RRZogsa6qWVwPvHTVpvUWNyBiidFnXfDOsC7YuelnrCEZV1jFaLRg1AztjpbwxNg0MRCer\nQpsTBljH3GJjFKz44j3hN3/Esnhtz7jJ0yBeEPpZPpk5EW2wzQ/KWBHcnj2qvypTvY5Iy4wL\nZv4rs2Sa0tAwgskdtXgYzPLMRW6KBV55txQB/fmFGbRRlBkiy5qq5dVHz6DlpJDPvbTTvTE2\nDdw8g1YzVMtiHpC6E2ZP2D3nZ8K7z6DtnAjsjzQPM2hyGMzyc86gI5cBaKchdeSollcBaFKW\np7Z2uh6wIM51c0TbFIBW342+5RBAiy/NjFE346oIaDYMRt+5ibmozEcxaY7m3AmAFgtfqq1U\n+RhAvwSA1vHLS/ARc/5RQC8lhBMAaKlfD1gQ57o5om0OQB+1Bm3khNx2Zoy6GVcAtArg+Iu7\nToqnysfug34SoFfVcuRVQ8RGPmKnArqUChpOHq2cVswIvR2gg+hoWKRBbqrrkFyEBUQOALR6\ncMMYdTOurgfowG1qB7T8HZj3rfRvVjgpnrQD0K9DnQ25ocgWeLt1Vc1G3mqI2MhHrBOgiRER\nNGYiKS25VNBw8mjltCJ98yMS0Hp0aU8Ec3hqa6frAQviXDdH1M8CaNNezKBFSWYBv8sjbySg\n1S8p/tyi/+qbk+JJO54kfB3qbMgNRb5AAKBdcikF/C4AbfRE39eCNWhRklnA7/LI6wRonubv\njqvfIl8mnkEb0q77Rz+LEsNzNJfpvUBv04gzosaKd1HWGqunA9pwpFVf6S0DegnJNKGRp7Z2\nuh6wIM51c0Q9AC0e3FDmjwI091guKq1cNPM/kLNRgKY7bgK9Neca9F0Bbd4HoO2CWgG/C0Ab\nPdH3tQwEtB5LADqvyJ9Br6Um28UBQGvj0imxkY8YAA1AO/Gl5Cu1btxWg0kCRHgjiNu8JgOW\nMh+AXlL511iINWjesJF2yYB3IQD6daizYb3iJkgugS4PaPIPZzqi4GQTym1F+uZHNgLacEVg\nZ0y/DpEgznVzRH13QPMPv35P9H0tlwK0rMiGweo7G8JcVKp7QemVkTcS0GoXB2/YTTEAOt1+\n19fZsF5xEySXQFcHdPyW2RcFJ5tQbkJJ3/zIkwCdFiJt1V58meYC0NJUagG/yyNvKKAN1aRh\nrzd0hywA/TrU2aAzXWjwEuj7ysUB7T1Q7Jsh29SOtOqrOB4BaBUa8o5p4HBAk6/ybdVefJnm\nAtDSVGoBv8sjD4AeCujYEzuauAuC/BOip3Q2GJnOy3gJ9H3lDECLlAq0a9SQMqD1r+EXzLAJ\nYBVUVfjd5wCaboY1VXtBY5sLQEtTqQX8Lo88DWjCV9Zf0yJLEQD90p/6F0zPBemCIP+E6Klg\n1Wa35A2jSrpxbUAvLjscM2wCWAVVFX73OYAuzqC9oLHNvSWgtQs8pKmC3AJ+l0ceAA1Ae7km\nc1aM63mAXjx2OGbYBLAKqir87oMAXVqD9oLGNpcA2o5Ia7yow9ajIG7zmgxYorqhek0xAFom\nOHGz1YtU6BaADsH0XJAuCPJPiJ4KVm12S94wqqQbVwf04rDDMcMmgFVQVeF3nwTowi4OL2hs\ncwFoaSq1gN/lkTcE0MoVMsGJm81exPt3ADT7OM7HnbsgyD/JE8GqzW7JG0aVdONagLYCpZQK\nVsLbd51WpG9+5EhAiyxU5jGdS2KgvC5a5ydBdJQ6ytMOQEvXsINcVKp7QemVkQdAjwY0/0KL\njzt3QZB/kieCVZvdkjeMKukGAO0UVFX43QMBnd7VTQOnAbSKAtPc/oA2o7bPb3HIiswRQV0R\nB7moVPeC0iu91AfQzLDAqgjVpGGa+SKU4v3LAzpJ7NwqQfhtCfJP8oRZm92SN4wq6QYA7RRU\nVfjddkDToF64Y2RSveuqH7IR5nFnngVovZnGNPcZgFYapah7QemVXpoC0PEnO1jAp6hrkjkA\nvSyc0DpnzQGKt2nEWVwZCWg5TCLnHw/oBALSsT6AdkJG6SZ92wBo9oGOdZQ6ytNOAW1sdzTN\nBaClqdQCfpd7aQZAxx09/EeUUtQ1ySyA5oTWOWsOULxNI87iypmA9tDhFFFMSZFIDQGg/ZBR\nuknfdB6LoUiH7AMd6ygfbFs766EmtGkuAC1NpRbwu9xLXQDNv1MPrIpQTRqOmcmEx/IdAG3+\nrt9CkyNdYH9SA0a2GJnOy2QSbFJAv273AXShBe1Iq4Eg7x49g/Y3q+wAtIhG1lE+2LweVx1I\nW+K2IVMCOvb87oAWu1IDqyJUr+MaDVkWSWgay7cAtLOgGIgL6D2Ww5wTmitXBXRSz48AaJET\njoHtgJbsZx3lg83qCdXr7QuvQceeJ+sWqyLL3KCuyJFT3ZMt8Qtm/ncFdOIqUapdQbVwQK+E\nv+sMmoaxzllzgBaOLiNbjEznZTIJBkBrR1oNBHn3OEAvvQCtA6/nDJp30qmwbAV0ID0M8urC\n+8XHUtV0o3EhPZ8E0GwMUpt7Ac3Wy2Jb2hVUiwD06th7rkGnDi5yOHhkysxQ6WNwpSegrfCR\nOav5ZFayigDQSVsZ0Oljl+NlWjymirQlTQ0YxuhF1lE+2KIeU62Y4J3/SHdAE+CwnsmabjRS\nNfcDNO93eQad2nsfkMig91nAx6hrk6kAHUXnrMpUlsOcE5orALQthRa0I60GgtGO7hD3oO4Q\nq2kMm3R/KuJ/SShGLaaKssX68iPt4lBBEB1lfeRj3TZR4JnbHdB0Ski9rGq60UjV3BzQFWvQ\nqb33AYkM2t5tZ9BRdM6qTGU5zDmhuQJA21JoQTvSaiAY7egOcQ92BLTkgG3Iqs4CtPdVo6zL\ndP38Nzeg2Yd26mVV041GqubugC7v4kjtBV5BBiWNlhh1bQJAyyrpxjmA5hFCI5HGJAAt7LIM\nFKMWU0XZYs6gVV2W8d8nJv5Yt13zTH+OmUErCwFoR5McMQAagFZFAOik7ShAk2fA+LioTjI4\nBAfsxHbXPNOfQ9agjaRQNd1opGq6AjoXllaGmYoAaABaNe4YS2w0+WRWsooA0ElbG6DZF2O0\neEwVaUtkFt8OJ+om96wX2mfQtjtH7OIwwvbpgNZBRU55+pnDlhoOotLae5oWMeraBICWVdKN\nxwPaD2VRRdXSDuDDMxDQfNZIi8dU4dcpzRihRd3knkAqCO2i29o8r/yyjAC0aYAGdC5gY+Ez\nAa36Lbw0L6B/Lj0Y0MxJOluMTBfVVZV0A4B2Q1lUUbW0A/jwjAO0WHelxb//ywBaboSVdZN7\n4pE1P2XdVua55ZdlCKAtjS2ADosJaDVAdFi4i8TIZcLSyDDVb+GlyQD9LhJvXRnQOr8XES8i\nMkVmAtCkRauXmUwotuCGsqiiamkH8OEZBmi2dUGM2vd/5Rm07j3pZGCNZYJiEYB2HUvlGEAH\no2YmYF+lQiOgjZ3YSqMUI8NUv4WXyIPoNHYCq6AHS2hiHg7GKIR05+cgiEpCd7wFQC/EbaL2\n64+FLqM1VuCLNezmYgpGZnG8a4YijzhankcIjUQakwC0sCvFQ+sMmtFEqmJBwI+YGaLbngNt\nd54AaCtljIqtgLZ2YsuKSowM08PCvdQP0DwyrAJJCwC9iMwg91JCLoITRo71ALRbNN6U2euo\nNoyk5WkGcIrRmHwEoBdnvYH8DfL+jjVopm9Rda0h1jnPu+050HZnNaDTjt25AW3uxNZZKsTI\nMJ3T3EvzAZrdAqBTQd4aHS1Tgw7QdOMwQDsnkmI0Jm1AWwGVyQSjBT+r3QbUAAbLAdJBskOs\nJhtcboA3cKRkwy4Oc3BFXWuIdc7zbnsOtN1ZBvQKhpDsFuMe+Iuh8Skz6Hg7iEbcqOaxZ4yC\nGH4AehGZQe6xHGac0INpxLuX57QAAO2GsqiiamkHSAepYaM12eByA7yB4yGjDFnV3QHQ9Fcj\nJgf0mWvQCwANQMcLVvY6qnUrzgkADUDLOmnZwNiLQUplNB4K6MN3cRALTgS0uAVAp4K8tVhY\nqvDynBYAoN1QFlVULe0A6SA1bLQmG1xugDdwPGSUIas670EVCxuirjXEOud5tz0H2u6sm0Ff\nC9BqhNxHe7Sltkkyil5nzwP0vz6/vv778fknAM1HzjbWyl5HtW7FOXksoGVO00Nv4IyitO21\n2Tyg7d6HRVjGj3TF1G3PgbY7b7jEoSu4D8drS22TZBS9zh4H6H99fHz99fnx8VEidLvul+kq\nvxeZbWakR5+oTNeDacS7l+e0QA9AW71TrTgnADSPA+tvrihte222AdCBldN90RVTtz0H2u68\n8peEfGIcrBKr6f7vd0tbTJNkFL3OHgfo3z7+++u/f/3v4xOAZiNnG2tlLzHfar54AkDzOLD+\n5oqStqMJtwB0j2123NV6vESDoQBoMTEOusRLXVyd8cPS86VW/GhA/5pA/+fjt5+/ALSKPdWU\nlb3EfKv54gkAzePA+psrStqOJtwD0IQR0vAgiyqNIwAtJ8ZBlYgNYQa9SVxAf3789X8f//te\nhb4joOXeHzMdAGg3lEUVVUsnvHSQGjZSU0CAHXoDZxQlbUcTngHowlASv+ugbgG0mhgHWYIV\nFRqtfoorOqe5l2YDdHLGz6URgP7z4+ObzR8ff9wQ0Gr3vJkO9wB0JhWMFvysdhtQXeQXCKlk\naqnacrB5HNC/6mfkjKKk7ah+J6CtwdYVRbeNErY7jwJ0+r8R1GNn0ItYrDbE86VWPC2gyde4\nP5eG7OL44+PzP78m0iU+XxHQ+vlTMx0AaDeURRVVSyW8yNi9gFbPD1tFSdtR/TUAbUaNDMKQ\n1Cg9haEMpOPSHqk7oqjHGrRxWYnnS624BOjAK+jByqVLkHqF6mXxAM12qv9cwj7oVJC3Fguz\ni/wHz2SdeMUENP89nXid56xCjtW8fULaB6B5HKS/avzMoqTtWHY7oPkP4xmDrSuKbhslbHde\nGNC1uzj0ZSWeL7XiSQF90Az6voDeM4Mmvy3AdPCcVcixmjdPaPsANI+DVFtMUJyipO2ofjOg\nk57AGuKx5kHFc6DtzisDmp8Ho0SwChri+VIrItfDDIBOCg9Yg/76+tc/Pz6+fv/fDQHdvgZN\n5t5cB89ZhRyreeuEtV8CtJVIhhY/FYwczmS114DqIr8w3wyaqgjUHssf6Z0gsIZ4rHlQcRzo\neHMGQKuaEUUPBLQ0RTjXB/QBuzj+/u3jl3x9fPz3BEBnclaG1KG7OOjiEtfBc1aZn+kgPeHt\nA9CsGfp31xo0VRGoPUY/yPaEwBri6s34kV0zLOTSAmgZ81YQqhKBdNyob8RVAKCF6mXJAZoX\nHAHo//v443sP9L8/fr8joOVgmRZgBu2GsqjCBkP0eb5dHFRFoPZY/mifQauuGRZyAaDtOx6g\n6S8xZQC9WqMHK5cutAGtOqlnOnVU/BwPelAl/gdAxzIzrUFbiWQo8VPBApJz32mEOV6u18pe\nMAepYVvSicppcugNnFGUWra+bAH0605cSwmsIZ2Kqq7smmEhlzKg6fsSRZTUUxjKQDpu1Dfi\nKgDQTHVSz3TqqPg5vieg2XRMOTU6QWW6HsxFAVpGjWnBZLs4WJjNCOi0GkCLXxzQCYGBNaRT\nUdWVXTMs5FIENFvZ4dbxpgtDGUjHjfpGXAUAmqlO6plOHRU/xwOXOP74+L+TAM2nY8qp0Qkq\n0/VgLh0BrYsaOauQYzXvnNDLqW/JiFfhCQEd12t5n/sC2h04XZS2HdVvB3R8TSWCuOdFsOtA\nx5slQPPvRimipJ7CUAbScaO+EVcBgGaqU5NMp46Kn+MhXxJ+/5Ld99OEf50DaDEdU06NTlCZ\nrgdzAaA9DfKs4CergeT4kTNoO93NXKOJKYFxFKCtrsmGlRQALXYXUkRJPXoopZMlWoThoiIA\nLVSnJplOHRU/x2O22f3528fHb3/8XeDzIEDL6ZhyanSCynQ9mAsA7WmQZwU/WQ2kLo5cg7bT\n3cy1ZkD7+Rgdbwy2NJR0kvvBPiaCGbR9B4A2AV0p7bpfpheCUeasDCkAWpoh2/VTwShe8JPV\nAI3Q1QgGJhLQqY4aNlLT1Gqmu5lrtwW0sQbt+EH3RjpZokUYLipWPEmo/4iI5L7yo9Kkgbof\nzXpfBKAPBjTWoJfrAToawcBEAjrVUcNGappaTSCYuTYa0EHec4JC+sE+JtKwi8Pxg+6NdLJE\nizBcVLwGoEWa7gZ0JiBSk8yLOip+jrsD+oPKSYBu3cXB3vaE5+R1I0DJDQBa+clqgFajQ6Z6\nwRwkh20hNU2tJhDMXLsxoGl/uHXaZisWWPsMLcJwWTFUAppeFhFplDDF6rkTCAB0BaD3Svj5\nv76YXsIXLRLYn1RyLfhLvnRhoSKoAqYFtGG3KLXgy7BWty1bMUusVof1KKie6EZ4S0GXylgh\nLOcFXBN5NeGLZDGxLnzxrmlvmVpFZ2TfqFuINXTQqJGiSBBGax1B9I3rN4OCj73uiyOhmBOv\nHnLreMu6N9LJ3NXcj0Zw6iFxrkvn6BEqRaXVcycQAlcv0jQIm/RgWdFuRYlWnZpkXtRRkR3q\nTTLbEgefjql3PTlnW2cF/EkS8dYmrxszCHIDM2g9QTIaoNWEL3gvmINITeUtU6s5YzMnQ/ef\nQZPfiTLdYvRGOlnO/YThsmKwZ9BBKlbO0SNUikqr504gHD2DVjEgvci7HG/dcg06vciEp3+Y\ny9avFlXYANCeBnlW8JPVAK0mfMF7wRxEaipvmVpNEpm5th3QyhCtA4A2AM0ee9VW6pYNi5VY\nPXcC4dGA/uPsNej4IhOe/mEui5vzdLwWwGNaAEDrCZLRAK0mfMF7wRxEaipvmVpNEpm55gA6\nrN90CYODYYjWcUNAC/84NaMCDWj+wzHaSt2yYbESq+dOIJDGHwfoP07/kjC+yISnf5jLRMws\n0nPysm6NFbEf9fZtpfwhN81QZBHnBOvpgDYmSEYDtJrwBe8FcxCpqeggcWN1RvaNFLUB/QoM\nANrsshoCWTFoQPPZkIoAFZHB+mOI1XPlPDX8JwCaOZKoYIPxczIC0J8f//v946+/fz/x50bX\nF5nw9A9z2c8f9mMZ3HPysm6NFTkI0Prnl2KZFArJiFdZBuiUr1Y3/VQwirNMMCZIRgO0mvDF\n+0x7kAFaRbTEjdUZlaHUbqb6dfSGCQBtdpn7MeiKodsMOh9Q5p0GQL9QwGvowRKqmMHahbRE\nch8pHHVDxwAAIABJREFUdyigf82c//z4z9ffJ/7c6PqiEp78YS57HRuZMDOgxZyflUmhkIx4\nFaWAjk/02Enpp4JRnBLFmiAZDdBqwhfvM+3BFMqsMKcG12qSyMw1C9Dmc9LMOmOkAnvlfeP6\nlXbdohGWUq4G6KY1aDfjtKXpinKeGv4nAvo/H/869edGzRw2I5JFm5EJEwNarpqzMikUkhGv\nkgTQ6Zl4Oyn9VDCKM+fdCNCHzaD5mwC1SjWspB3Q0hBNF2tAgqpu1IxqOu3icDNOW5quKOep\n4X8coP/58e+/Pn77+i8ArfHi2Er5Q26aocgzes8Mmi0FWt30U8EoznNz8BKHGlxODWsog3NK\ni56wBp3aC+nzDG/RPmRyPUAbDhD3vFTzo9LquQoENfwGoKVNwkdalaqkTGExwBxJVMhwHgPo\nbzL//v0d4Vk/N5peVMIvwgk82nRWLzMDevca9LAZ9EJ+nNpphMRqKmZ5QHiwDtDGapXHB+5Q\npjo2PHAXR9QTyGjwFu1DJjcDtJm4fsZpS9MVFQhq+DsAmrepXUibTe4j5Y7dZvef375/FPrj\njwKfAWieuNpaMxSZkU6wnrwGzQq4JvJqwhfvM+3BKkBb3/d6fKAGHrcPWqvHDNq1Ilh/DLF6\nrnJaDX8J0EGYaKjibRrZIOKbOZLYKcP5kQ+qBFUyqFuL9Jy8TAsYFhwFaE/EXrRAe3LELg56\n6jRCDEzFLA8ID9YA2twx6fGBGngmoKvWoL0RmRfQ1T+WxPxiJa6fcdrSdEXltBp+ABqA9ktS\nG5W1Zij68UnLsFAItCd8HzTHhlCSUaWLB6eA0wgxMBWzPCA8WAY032WrO6MylBwRa+j4fr/k\nAG2nY3zlfRPuJkc6IkUJd0QOA/Qi12DkXVExLt/7A6AiQLUVrD+GWD1XOa2G/3mA/tfn90L0\n558AtBMTlgWLYa0Zin580jIsFALtye0BvTTPoE8GtBGRZglD6gGtol3ARw8lN3UboNMGGH8A\nVASotoL1xxCr5yqn1fA/DtD/+vj4+uv7n70qEbpd98v0QjDKHDYDgye2bEcnnxc1vAgArfPP\naIBWE75YVtulB0euQU8PaO9L4VkBbW+IN0+5X6zE9TNOW0pMkPfV8D8O0L99/PfXf//638cn\nAG3HhGXBYlhrhqIfn7QMC4VAezInoMW/x7QW0R4cuYtjdkC72yonBXQAoGMJ9qATjR1qp07L\nYQ+q/Db9gyrGVzI6q2Xy6bQxLWgHNBsjMxT9+KRlWN8C7ckjAJ3rjMpQckRyjI7v98v5gPYf\nTJoS0CGa3H2Jw91dqq+onFbDPwLQ0kC+Q4dlJbVTp+WY3+L46/8+/ve9Cn0WoOW7FblFiKA3\nNQXZkEo+nTamBQC0zj+jAVINgKZ3gr686C8/icwK6DFfEvrPZ+kr2iJp9gBASwPFHneWldRO\nnZYjAP3nx8c3m8sbodt1v0x3g9EBNBsG67GAIBtSI2ykjWUBAK3zz2iAVLsEoGXuBmaSp3I3\noJOPLjeDXkZss3PdYPVcWaSGvz+gpYFsrUdmJbVTp+Wg34P+/M+vifR5D6qUAS1dZgCJZdf7\nkt4bYFvQAdA6UbjerADQmc6oDCVHxPt0fL9fBKCJTzcC2qYP0yV6wjLf6uHEgGbW0RsqQKR3\nvVTzP0hYPVcWqeEfBWg6sFPNoKulXffLdDcYYxSKmKHD0DCD5m5XAUpuANA6/4wGSDUAmuoS\nPUmmX2kXRzruC2j/N2isniuL1PD3BnQw5vhTrUFfAtANa9DijVEFKKkIQOv8Mxog1QBoqkv0\nxONCkgcC2kC0dUVZpIbf/DU7bofwkVIlHarNC/JTPQAtCLDeo8O8iBFgrbHsWmtgBm1aYRir\n8s9ogFQL8sJqu8qdeIEVFpmU64zKUHJEvE/H9/tlBkC7A1IBaGKx5Ik8tWIh3eMGyrtWvSyg\n+WXTCmVpsL8otHquLHq9kDzWgE55LgbDHDXZo8Dbl7plVlI7dVo+GNC0uEraJV2i9bEGbVth\nGFuCihieekAHck/1I+Mxhw/8iHifju/3CwBNOhtUdV0zHXcHtPNFodVzZdEriMgnYQVo0rgY\nDHPUZI+MdGK61yZ5f3mt2H8AeiEjEOQdNcKyMccCALoIFTE81YDm4yL7kfGYwwd+RBlA7n6/\nbAe0Tr6k2kx1iwmG6YY8DND0K35TY7qiLPo2nVZWgA49AG1YQrpFs5LaqdMSgF7ICAR5xxxh\nfmxacBlAB2EjV5JRZXrRLOA0IobnyoA2nptwki+pNlPdYoJhuiFZQCuLTZ6QUysW0j1uoLxr\n1esPaHsKbWWYskji3ZtBUzuUrbl0sQeJxQDNSmqnDGcAmo9AkHfMEebHpgUAdBEqYnguCuh3\nW0qtk3ws65V6Vo5eLvnygYA2txxaGaYsWuu6M+iFLGWqKLVVmQ41bKPNBd5fM5wBaB5tQd4R\nI2zcty0AoGU6mg2w0NfjRXijHPQgQOudQ1q6AtobyZRb0j9Gt+jxCEBbWw6tDFMWvetm1qDJ\ngKootVWZDjVso80B0Avz7XrPRosBJAaCxbtvWwBAy3Q0G2Chr8eL8EY5aC5A2yp18hEEGOpZ\nuWRu4BM6Ux4IaM/r4oqy6D1wSa21D5rWYFFqqzIdathGmwOgF+bb9Z6NFmdsxAgb920LAGiZ\njmYDLPT1eBHeKAftALTsLz0i3g+i8JdMqWU5AtB8vdTq3rIcCujAS4m7Zr35AE0vAtB3AbQ1\nKLYFALRMR7MBFvp6vAhvlINOAHRIO+fj9eLIclNTcTOqaLnUs0EzaNlmOs2O5DyAdjvKriiL\nZCEAGoA2A4NeV/zR4e5YYQsArU0R42gNaxbQKyjZdc9PLPliIb53S6lnvyFDCpT53ABoNStP\npbIjCUAbqljNioB/DQCrY4YzAM3TQY0Ny1n58Cb7w28A0Dr/jAZY6OvxIrxRDpJJqrCmTBHJ\nZeVaDtBxqYFd9/zEki9aTObgZqp7/2jsAEDzrb68lDOStMvCP/EoWPW6A9pzhzUOyiJZCIA+\nF9CFAWKl1NiQEdZP1y+6znqlE6DdOiUBoLUpIrmsXGucQXu/ChEj5/2HtmCmugPoUuov2wFN\nVraDKuWMJOuyMcAyCNIxAC2aCrEXLPwNXwLQtJSRFBEEat+lPxyhFtBi/Fkxr46fpKwQUQ9A\nC0OCccoapU3Fwu4atLEhl8OGRtA6BzdT/ThAL/MBWn0Fq1zES/odZVcK+b/MCejoYACaljKS\nYvWc8eSSC7EegA5eHT9JWSGiHoAWhuhciEekuSAKe7s4rEfajKGcawa9pK3AQZXSI0lQPgrQ\n+u1PuSjW8Nxh0aCQ/wsAfQtAW2noQqwDoMXsRmktCACtTRHJZeVayz5o661blIwWN65BG12Q\nsiLQDBrek+jS+i8J6eLOIEAbC0jKRbGGODc0EtvlfVkIgL4FoI0Psm7SNAKaQoiHq9ZaEABa\n2xKyp6xR2lQs/MWsSLSqnkEvjbs4hE5TGgC9vgZVSo4k+3p0DKCtr2CVi2INcW5oTFcK+b8A\n0NcBtO10GRaqgGHCTkDLcNVaC3ICoG3v+G2o0BcXYqsyd/i4UDVmPIh63ilrlDYVC3uALq5B\n04EVR1z9wYB+qxS4006Mi+epy7RULC11p+OZZtA6jQHoewDaQZAxHLPMoGPCkpOLAlr5cRCg\nNaZiYRfQpV0cpII84upPADSZ/que8zKBeTzI3qluUa9MtAZtfBAGoM8DtB4gy7V5Rom40gUM\nE/YCus8a9AJAExtC9lR0gx29XnxAlzSmCvKIq6eAttyZGQ4KaG8oUhSkkKZT41hKEoytQUcV\naoBFtwgJm3ZxUL9YJf2Octt1T0TsAtAAtFOQjz8fZa9OJktpIdL7OQG91mERqtClsCDHhaox\n40HU805FN9jR6+V0QLvKlmZA182gF7qLI6pQA8y6xUjYtA+a+mXJ1NAdZVdY/lvf6ALQALSZ\nNkS7FR9enUyW0kKk93cGNJtMmfEg6nmnohvs6PV6MqCtryKTtAK6ag2a9yeIUkGVi+auTfcF\ndBANqXLsCs//SWfQOgnXKwD0YrknnV0U0NT46wA65QopwbHAx4XjxYwHUc87Fd1gR6/XUwFt\nTf2o1AKaupTo5KWkbt6fIEoFVY4YzK1jNcz6thV8KMKOJY5J16B1ErJsbZN7AJqGrO10EVe6\ngGECAF0KV0mTJkCLD+hmPIh63qnoRhD2h3MBzTdSGNIOaGGl4UQrQIOqp7o1aImDusHpKLsi\n+zrlLg6dhAA0uSZGgRZeAGhHgzxTZfPhKmnSAGi++8uxQlR2T0U3grA/nAnoUOTzhIBeiLUd\nAc0c4XSUXVF9VZUAaADaKcg1G6NsNl4hnQCdUaaKq6KlJjCDlurLM2hH26SAVtaxGmZ92wo6\nFHtn0LoSAA1AOwW5ZmOUzcZrhBp/QUDTpyE4FkTXBq1Bq5wMU6xBO8qWOQGtrWN3zPq2FXwo\n2teg7TgFoAFopyDXbIyy2XiNMIpxV4wAtCZKuYkMoEPc1hWYJ5ibOCGpu21jQ/Z0PUra5ECc\nvYvD0fSS4YDm1tNSLD8CryasY3ds5plW8GRo38VhRggADUCbaZOMteIj03iNUOMvB+h1ukhp\nIv04dh+0ysngANrrHIsn2SaPNQqiFA91wxzlOEBXP+pNDvsC2lThlpB91XE6B6BVVJBsbRMA\n2rz6cwmALjfhApp+I8aQyd3EPcQKm6bYJJBHCqHxAgD9OuDjQkqLFCKHJqBViPNw0E2Vk8Gi\ngeyrjlMAGoB2CnLNxiiXY9IRavzVAL3OoBkIpB8BaCZHAZp/uOH2ixQih6MAbf++JL8i+6rj\nFIAeBWgzjmN8Myqle0b4afekcgB0TgE51YFfaKK4Bk09qPwIQDPZAWgxUNqJkSZpayMtxfIj\n8GrCOkuhPSzBaEpHmHooUJaQjrQiBIAGoN1kZpqNUTYbrxFq/PUAbfysm/SjAPR6x9YmOmid\nrkcKofECAB2WDTNo2sgYQOudLRYNZAEdpwA0AO0U5JqNUTYbrxFq/AUBTR0jecjHhWqx0k9U\ndk/XI54wRF0PQAd9j4ModbtumKP0A7TWHWnyOqhcg6aNDAG0sTfcokHgp0acAtAAtFOQazZG\n2Wy8RqjxkWVkyFk2GublY03fmRrQ8pcBrdP1iCcMUXcAoOOyuxnYWTkM0NW7OGgjmEET5fE/\noVO6j2Rrm2wB9OcvWf9+XhTQDoGM4QCga5oIotdB5gr1oPLjBkCnSd/CC6uuMG1yIC4AaOdH\narla5SUxUAVAx2sqL7xu3XYNWm7ILkS8IM1MgP5cXz7Z5Xbdb9MdQJMoBKAJy8iQ02y0VBVi\nzfCi4x6/iaMATZZNF15YdYVpkwNhADrzcB+NJ9pFeU8nJR2yankkoCt2cSxqiq3jlANa+0YF\nw9qSfKSxEPGCNAD06yzwewZaDPekcq2AZrXNtFmvBV7AiV6htSRUvWAZBXQKlHzSFs2YF9B0\n48HCC6uuMG1yIDSgc49f03iiXZT3dFLSIasWB9Dss0PyZ3asLwRoy1JZIvACRoA0Alr/KEgh\n4iVpRNJL972OD1yD/pR8fhagzWHTA+ZFr9BaEqr+XoBmvwPFtSj0vG6NmkFnf8CItkC7KO6J\no9TtumGOYgOa9zz5MzvWFqCDsJk2Esg1s1vJOkuhPSxBaluk1dYlc/R5AQMYbYA2flavEPGS\nNCLppftexwcDOi5B/+NbqqrlJPz6n76W/i9LhPgiy8f/RGHSgFIV7Mu0rZBUGuWEZtpecHQ6\n7TilwrtxbSlpP1j98PXbZhgjUWoiiF4H6gbiGGLe91kIbGCplmBre1dJt0QYsKMgS7ivUZze\n0YLcOsOar9QnOmRbJbCurfZxtcpLYqCU7kAto9eE/V631CWm0B6WILXlW8zoDLyACQz1wm6S\nfrGxIoNfSlqqnOd7qind1xYBplQA+gXmuNTxkvY3h/d7y31n0P6bcd3Uiqq/0wyaPAOuHaXm\nhqsmMe7WKbGCl4ivjTNo/dS6O9XsPINmz8wntcpLYqD6zKBZG3ecQS8Na9AcBiLIZFS8jo+d\nQbO/ALTQLIDgNl4jVP2NAJ2IE3j7YaGFTVNsEsijIEvE17Y1aGox87qpPnW7bpijmEscYvU9\n+TM71gC0aJH0ixu7eRcHh4EIMhkVr2MAOljuSeUA6JwCcuq4x28iB2j3SUI1gxa3M8aK5LK6\nIrWx18ZdHOfNoJeBa9BWXgR5oqyzFApHpHtqhMrJYJUIvIABjGZAy94WIn5iQK9LG1jiMJrg\nA1Yc67rMpeqvDGhm/JuJfGCJ9Y2AZnkWZIX4au2D9iXpSBYzr2vtS3dAd9vFAUBLBbxsKWmp\ncp7vIrqVpccDmuzkaNf9Nv1WgA5BjJjXeI1Q9bcCtNzFQfs2J6BP3MWhoEdTQxqQ4tzKEO0z\nlRdBnijrLIU284LuRUUyWCUCL2AAA4DmTxJOB2iHoQIEHoHMsGkANPkknEqXY9IRqv5egJYK\nGVEdZWLcdVvpIMgK8bUZ0LJxlYrpKMVD3TBHuQOgaQNB96IiGawSgRcwgAFAe9Ku+236SEDL\nmZpHIDNsKgFNfxyHb9f1x7ouc6n6OwBaPiixANBMhgNaVgOgF9XbQsQD0D8SWIg3A1qtdXoE\nMsOmDtCJyGx7Amm1HJOOUPU3ALR81IQoZER1lIlxV2NNDoKsEF8BaNP/nFJrW7yJeQBtlQCg\nLwhovVvAI5AZNhrQRmiQTVBsewJptRyTjlD1DYB2++yZMRbQfLsYV8iI6igT4y7hSfMsyArx\nFYA2/c8p9faN2N5yEKAtn40E9M222V0J0MZ+W49AZtgoQBs7ZuljBGEhU3bSajEmPaHq+Q8G\nXBDQ4oELrpAR1VEmxl3Ck+ZZkBXiKwBt+p95761PDtaZgOZnVhsnAXqmH0u6HKB7z6BVyC6J\nOnzAimNdl7lU/eUBjRl0UWYCtH47BaBf1ylp1AdmGRWvYwD6kDVoi9B8iUO05491XeZS9dcH\nNNagSzIToDGDtoWRRn/lJKPidQxAH7KLw+Izw05SXxrrusyl6jcBWjwsXFBATh33+E1kAb0k\nx4RolgkIRlRHmRh33VY6CLJCfAWgTf8z762+qV+DluOQ7slelJPB8pkoYbVxBqDjlC3VlFHx\nOgag3Y0WDLG6XjZsatagl4VNFM30L8akJ1T9FkCzD145ZbYXjRJuE5sArcbnnoAW0VsvNYBO\n7duBHk/V2BrVeu3ikOOQ7slelJPB8pkoYbWBGfTDAP3L8VW7OKjWpF6mlK21JFT9BkDzsMkp\ns71olHCbAKCFdoLBqwNaNDEM0PxascBEgMYatJWzxggs3QHNP7o4jZMmRAmZUrbWkij16U8G\n0OKDV06Z7UWjhNvE9QCtNfpixlOw7gVRgkRvvewBtHBPlxm0bR2vobKRNyB7YbokuCfmtYkA\njV0cRs4aIyDdpgu7sLLDhn0hSPBiDlvUmtTLlLK1loSp54Ez6wz6+0I9oMXnAmOwpSkiuay+\nBNEcewWguc9UjJggY9bxGiobeQOyF6ZLgntiXpsJ0LKmvP46BqA7AzpcGtBnrkEvALSM3npx\nf82OnpukXaR7AGjDJNUvkjnSQG/oyoAOqjAAbbuNFnZhZYdND0AHV2cRDNEIop4Hzqy7OBYA\nWkZvvQDQNQXsEkcBmoyGHP33Ndbl1wkA3RvQ1hq0kRSpCaE+LGTLh1GpJnPFUza8scI+aJnS\nngp56rgnE64SgwC0jN56AaBrCtglAOhnAdrYxWEkRWpCqE87cMzGazI3zuExg17oXXqqwuJ9\nEGSF+HpJQDNdJmkX6Z4bA9rcStUG6B8LWdcrIt4gDYtu1vzrBIDuD+hF7YN2Ey5qTerZIrbZ\neEkCAG2ZwpNChQW7ISz7eb0LoHXjvNKhgGaPB7Bk0wNk0tU9Ma45DyMA0E8D9GLMoO1RY0SI\nRfvMoBfWt/TnLoBmf43BlmV5Uuj8pzeEZT+vADT3mYoRG2TUOl4jLEtgzGTJpgfIzDT3RF+z\nH+cFoCcDtKwxH6D7rEETtbwxAFq2pREjLPt5BaC5z1SM2CCj1vEaIa3FMfu0EZlMc0/UtRBs\nQgPQALSbcIwIZKx8QNpPJDqlAOiF3qWnOv/pDWHZz+slAK1apLq8xrl7jgN0EMxkyaYHyMw0\n90RfwwwagF7v7AR0Rqe5jOYJAL3Qu/RU5z+9ISz7eQWguc9UjIgY9qwjFQ+dQXvJA0AD0G7C\nMSIw1Ng6nUmAJwA0KRScMwsxwrKf1zsA2nYTB5MDaPHZrQugj12Dll1YLwLQAHQnQHvLaJ5c\nFdCJVAsAXSUXBfSxuzhsAaABaD/hEocEamydD5lBB+oYFsLaAOY1T5lOCp3/9Iaw7OcVgOYX\nVYyIGPas4xXFOAhTmYoif4sFTGkGdOBdr4h4AHqRIX4zQHdeg37d5SB6MKCD8ZJeAWh+EYDm\nXa+IeAB6kSHeAdCu388AdOUujljdA7SJIFUjE94AtNevWMjmnLoHQAtF2ggAukUAaPsyVdsf\n0JsyF4AmhQDoRkCvrZwMaCfRvJPMNVGiG6BLkQFAfwsArcy4A6BF/ALQXABopwQA/XBA26MB\nQB8GaJZbcwM6mPfGAJo+SjoE0BJOlwa0kXqpOgDdqB+ALgkATco8CtDsx1gA6JwA0BcFdGZw\nyAUAmtYzSgDQ8cpxgOY/ZzgW0Mx9dk7cFdAyT1oBvb48BNBB/4n3AOgpAb2OlQFom2oANBcO\n6PhA0ymA1huNAOjXDYs08fSWgDYBNgbQWlUfQKfWAehbA9rrygBAnzqDNrbq3wXQ3CYAuqA/\nD2iLjFcBNIePobVSAGhS5kmA3rYGLWNuF6Cth13vDmieLgD0spp+HUD75JgK0EH06gxAx9AH\noOtl1y4OGXN7AG3+XAwA/boBQC+TAPpLqAeg88YB0Ol6H0BTj+wGNB+JRZwxQHeaQXNtAHSL\nTApoHk4AdKoCQJtnALSMuV2A7rMGfSCgk9pjAG0MPwC93loeDOjVBgAagNbGUn/uA7S7i0P+\nQ5tXAHQaEG3sZkCn+wA0AE1afzsk0CGnN9gFAJq9pFcAWl9jHaCoMaxT/1T9TQGd0QhAf8tV\nAU0Guy+gXxuuYn4IQLO0AaDlS3oFoPU11oE8oNOXhwC0HH4Aer21XAzQntZKeQURlUUCmqeN\nBHQOr2Y/dAkAOl4aDmjyYajrLg6jx1sBHQBoAPolADRrXfKZAzrdAKC7Atrn3DhA0w9DWwD9\n+oRVNHwXoMlHOADaBDR3PACdrjE0GaUvDWjF59IMmhsAQF8H0GwoA3tlJsnGxdblQYBOX4IA\n0AA0AB1bT1Pkd83MGjQ/yGo7G9CBmwhAiw9D9YAW79/7Aa1NZwswcwPagIADaFIagDb1zwxo\n4fPT16CZbbEZ7qmFzr9K2k4GNJvxkQYy1l4J0H7AONI+g1afsHYB2sqj/fugX8GpmpXVAWgm\nALR9+ce2eWbQK3eTbakZ7hs2/yppOxfQfMZHGshYy5PihoAWH4Z8QPO2u86ghwFazDKk7mVx\nSgDQALRpA/2S5mRAC/EAvWbp+YB+W+ADWsz4SAMZaycGdALrLkCzXRyktTyga9egOf8OBjSz\nkFdhRTIFXDkM0OSzKjfQZBUAvdASXQFNPmxeDtBsJ9SkgGYJewigf/0ZB2ji9X2ATu1vAXTd\nLg7Bv0MBLeb4vAov4hbw5ShAkw84APSpgKZf11wO0NyASQFNcXF5QJNoOQfQNYZL/j1nBq1j\nIRm4BdB09gNAYwbtqp1/DboC0OQD910AbS+9V8poQKsJqga0DGRt3Q5An7gG3QnQ8n2YGuix\narkxoN1OHwHoadagNwF6Scsb8wNamHgkoLN5SBrdCOj1+umA1iMZVivNUocA2rFaIVOZXnbk\nMYBeAOi3zADocbs4tiXuNkCnixcANNdzZUCfvgbtmMmviAnq4YDOjb5xvLZSQWiWe+MALYaZ\nGg1Ar7eW3Aj0BDRvvEgpAHoRgFY0uTGgyS6OSogqGQ9otSrM1C3EXVsALTHcF9Du0rVs4hBA\nk2EGoN1O66+wAWiutxegK7sOQDNVvQFNle0DtHttWkD7mz9kE8cA2nRRYtJ8gN4tIfgX11da\n5NdZkHXeJcLXl2wskP/03a9YL2egW1kXCFwr0aGUVotfWhkf6MXAilW0HDz/FLtOXlYPBHo7\nxOJOU7QVTxl3qmwr0L/ixRqWioG3jHG6wkNsjd5t4yxVv9UHrky61KmtY86oQK4F+scdJllQ\nDQqvG+Sd3Ogbx+9Ggk54q4kgj8hNHQvJQKNH5Qz1mCSv95PrzKCNN1TMoIXe82bQYcEMeo1e\nzKDFnYYZ9DLXGrRokprItnyxNh+2xGEQGoAWegFoALp0ZQygqc/6AHrbLo4zAR0A6IW+W5Fr\npwKaWHs8oO0cAKBvAOj4/9sA2jG6AOgamQLQ+vrrz8MAbexmPwLQmZQAoNOLBWga/AC0KzyX\nxBaOEYDWKAWg2wAdmQRA/wyAPwLDAJ1bCCsDWn/YqxcAOpUBoCt3iGwDdAzuzoCWyu4L6Hl3\ncbTrfpt+jX3Q2a0+RUDLBwScdpzWXdvuA2hqeQdAc0fcCtDmhmbLcs9wo1QKbgC6FdAuqxYA\nejygC5sxS4BWj9jazTjyLED76MkCmoJzEY44DdCF1qWcBWgS3FbCcesAaNokqQNAr7eW3AiM\nAfSybwYtCQ1Am3p2ADq5F4C2dW+bQQPQRX3C6OBc/xYAevI1aMygU2tDAE0cLIYCgJaGW6WU\n954CaHIBgDb1XwbQu3ZxYA06tjYC0PQjyr0AHV/laPYFtNrFAUAX9T0G0KYzJgR0RixAC5Q8\nBdDLgYBOJ7edQR8FaE4pABqAXvUvtjPuBugFgH7/HQJoaw0agOYXngPozGMSljIAOqd/sZ1x\nP0DLC/WyF9CZtXN5ellAG7s4jgY0CVkA2jLiKEDnHjS2lAHQOf2L7QwAOl96A6AzuwPV+Sac\n3/1AAAAds0lEQVT/kCrnA5rn10BAkwMAel5Ai9gAoFv1L7Yz8oDW0QdA8wuUdy6hAWgAWhyd\nDuhGPpMBNx5Z8ABN934D0Lb+xXYG20t0D0DrbKiULKDlVIF09IWKzBM2ADQALY6uD+gNM+h3\nOQA6p3+xnfHmM0/zeOuigHYCtyQ5QOv9exzQy2kzaNbiIwCdmgSgLSMOBbRlkhiVleQAdE7/\nYjvjFebx+VPr/dC4NDWgSdh0A7TxBIwE9GFr0ASCSzJDJgUA7cslAC1GdEJAV+7iiB8uAeic\n/sV2RkgOvAmgrViokyKgWZopQOeJx86NggcBmiwGAtBUNwBdJwnLJgQMQGMGXaV/sZ2RmLZ0\nBPQ2AI0AdEvmFgHNimpAu+oOALR8R3J8SRcDGwEtEQNAiws3B3TMhGpAd12DDs71H7kpoJ01\n6EsDmiitlgygK9agM+qmATSbygDQ7yZJ7APQJUn55QNajXnHXRyPBLS9i+OigB6yBi3zbh+g\nN/rndacDoPliIAD9bvISgNY5dwqgQxOgmUoA2tS/2M7IEfmKgCZp6+pzW3dtC/LuNQFdOYNW\nXgWgfakZ29GAtje75Y1tBHTVEgcA3aB/sZ0xFaDLo1UF6DIxndZd2+4C6Lo16A2ADswRALRn\nzFBAy+1u4wHtqQGg2/UvtjMAaGGiadttAF21i6Me0HQ+zu8B0M5FDmg/5OoBbXyDPRLQJNYA\n6AsBer12LKC5jQ8EtFhPLgKatLAf0HrDzIUBrQL7IoAWu4wXy5mGbTsA7asBoNv1L7YzAGhh\nomlbFtAq+coNdwN0XA/cAmhZNlPGaipWN3Y0Hgdo2u1HA/r4GbSvBoBu17/YzgCghYmmbbMC\nOn2jfgagT51BDwd0aa+LtNO9wC/2B/TBa9AzAnrtPwANQHNN5wI6TWHPAfSZa9CjAS0/m/iW\nly7wiwMAfewujgkBHd+hAGgAmms6F9BqBk03GB4B6BN3cQwGNNtNlre8dIFfHAFopWwkoHMh\ndg6g0wc5ABqA5ppOBrSY57FHdHxjOgJa5GQ/QLO97McDmj+Pkbe8dGGhvdkKaM8PCwAdj9Jg\nAdB3BnQmW6YFNJs60y+LpgF01TRU62BPg8oUHQHo1b/R7I4zaLpGvA3Qvh8eCmhLO2bQ6tId\nAS2+aWG2zQvo9XZY6KxvHkDXTUNV5LG3mjMAvRBPFiwvXWC92QbojB8AaJJ3912Dzn678ChA\ny71KzLZLAHrGGXT8EtPVZemQ+/fOALT+3tWzvHAhsN5sAnTODwA07cxdd3Hk9+c8CNAii6Rt\nMwE6rTpLQM+3Bh29ug3QM8ygicKslMu3A3rCGXSYBtA51zXIlICWTHouoLUvmG0K0DQUjwX0\nOiX9JQrQNbs4DgV04wxavNVcHNAitJi7CoCebg2aL9YA0GMBrWaN0wNaU/GwNWhx7yRAp6m+\neGtVYzsHoBvXoPlbzcyA1jFjjS1PMvJaAvRkuzjEZwEA+qIzaAt10wO6sItjDkCHYBNaA9pt\naiSg06js3MXhGjMC0PRPFXDJTR3qVnmeZDltiwA0i+XdgK6I1ZzIxRoAejCgB61Bm4sF8wM6\nY9v5gE6LGJUz6HGAFuTgE9C1BN8HXU7DWmOGAVotEvHbjm1GqJffi5RS27r5AC33owDQowFd\n2MVhEL0C0Ioe620AOlOwCOj3n+wadOYCaQiAlgqWOFXZBGj9RllhzJUBzWZ0APQBgObSBdBm\n1D4D0H7GlC7UAzq3i2PJXCAN3QfQEmKVogEdQ3b3DLoYxJcGNLUYgJ4Q0GlJ0QW0sx8CgM5d\n2ADoVGhqQLMxmB3QaVKxdw3a/qpZtzcU0FlnqqNtknznz98A6Ab9y2GAtoPUnp5E2zx9Risc\n0Dx5JTyKDZbkIoBWNQHojLBcek+cm2bQqrw9OTHayxgOQFtNSp0AdDug7Yr+7AKAXi89FtDV\nxnQHdARzwxq0ttVe3jPaA6DbAJ3TDkDHawVA2wByYxeAXny/iSrXA7QZLJbKKmN6A1pOnfcB\n+tgZtKfnEYA2awLQOwDtzy4A6MX3m6gCQHcFtArKnYDeugadsw6Apk3yuk7NawO6zD/MoB3b\nAGhtytpKCMn0cwBdZKIUawYdz+stM2XbLo6cdQA0bfKtMt+BSwO6/N4+FNBvQtu2+fq0Eq4e\ngLZbHA5owuegxv1QQJdXFaQYa9DptN6yNim+swDQVpMvjWwbds64zXI6oCtWx0YDGrs4MuUO\nA3S81QPQZH8abXIkoGmcvYJqM6H1Lg7nLG9ZmxTfWQBoq8lFjvTNAF3z/XIVoNfXFkA7w3Fl\nQHOfPQ7QJ8ygBaAz3224ksmlAwHt2X1bQFvJuQHQYqRvBuhuM+j19RRAB6VeANp6k94lAHQe\n0MevQQtA755BC22HAdp9ZxkM6CDa3SjnAfreM+hua9Dr6wBAF0eLwOC5gE5lpgD04bs4JKB3\nrkFLbYcBum4GnXFjG6DZG2qDnAjoe69BZ8ftLZMDmn6cBqBnAbR1sS+gVVByQO/axaG0HQfo\nqjXo3oDmS1INciag772Lo0LmBjT7QqoK0B1yC4CeH9CbZRJA1+ziGAPoqiGx5VRA68Y84zYL\nAO0HxbAZNABttgRAZ+w4BtC5OT8AbTXpNOYZt1m2APrzl9C/AHQ0aNsaNABttgRAZ+w4BNDZ\nVfPxa9DJf9sFgP76fL98xhMAmlsEQBPb7BZHApoAUhgAQJclLOmjoCljAb2kSU6TANDXALTp\n/eGA1nbajxkA0AB0Rs4FdGnndi2gXcsK+6D3eA6AJpS+LqBNlwLQ2XIAtHtHD/Ha5NbtG2+5\nxwx6F6CbewVAG4D+x7dUVdsn4df/6GmwihgF1zvhK/3n3c/rrxOiPpgW8z/7Rdse9TJXOArV\nZc+xGYNjl+wy8qo1duJWpsQX75Rq3FJIm2QNVAx83hg9xGushUw320Q32F3DV6XhIiKMGPQq\nZke2GGm1YgZxSLdMRHyxIKmwwwv47uMSpQLQry8HMYOusPO0GXSaB/SbQee+OsIM+n2aZtDb\nHyF8y5YZdOMkPaOh1OplZtBW88+cQQPQrp13AnSWN3lAb/lkfhNAl5ZyM7IB0I1vARnhlDLE\nBbTpcleDd2vfd4QANAC9yc4bATrPmyygjXrzANrPMVnduWMDejliBt2sIqOBvJoCQFtNOo15\nxm2WDYC+/i4OAFoULl4gM0LHkBygrYoPAHTz9LYa0O2T9IwG8moKAG016TTmGbdZLglos4hR\ncL0DQNuNVAG6MFvLANrESBHQhd2yzDLDliygl3AIoMfv4sAM2rPuwYCe50lCs4hRcL0DQNuN\nqMwyYzs/IcwAeuMMemVb9s3gGoBuFKxBdwC0HcSPALQt7bqrTQeglYwAtJn0YZGdMdvosAb9\nVpVfTgGgvQt75SaAdoIYgG7VX1Oo4lMyAC30bge0zcZSuGYBve35irDa4MGHD++zAd1dhgO6\n8DbfB9BeEAPQrfprCgHQSvoD2mHjPkAXdOpbhRn00YDOru0A0K+jOkCXFsq6ANoN4jKgAz2r\neecGoJMA0FKGzaBroGe00QvQhTXogwFdbwwALVuSF0tfNfecQZ8IaLOPAPRjAa1CsR3Q9gMp\nxwH6rbx60joe0Bum8wC0bElcK27W7LgGbQTxUYC2+whA7wK0NxpPA/RiBddhgK7YOFbaD98Z\n0FsWxAFo2ZK8eMwM2gvigwDt9BKAfiigM1/u99oHXYJOL0DXPHpxMKAfOIPOabnCGrTTxFGA\n9t7SnwVoc5wBaHGhCdBOoQMAHbzY5nWPBfTz1qAHArq4i6OSjAXrnOYxg27VX1WKdtlOmukA\nzW8A0CWdM86gs1ABoNfTSkAXlB8AaG+S3g/QWIP23qN8QJORfzSgvT3OJTkI0D3WoC1b9wF6\nozHjAN0jZvJyf0C/A2wooB+/i8P7JAxAiwsS0O4e55IcBWjz2x1ZF4AeJicDOtSS0ZEyoFdw\njAX0duMKVS8GaMygX7IV0Ob7Wk9AkzKt+6ArTAGgh8ndAR2ndgD0Jv1Vpagvtq5BA9Dpc0fF\nI5lKJga01TgA3Sh3BzRm0G36q0oVJk6xxLSA5n8xg24UsTfGahyAbpRTAb2s5BwI6GPWoLcb\nV6h6PUBnSgDQp61BVwJ6326EvoDeZ8xjAS1S6TqAPmIXR4NxhaoA9DMAvWMXR7bYNkCXd2rk\nbckD2voAC0BXygMA7fURgN5rei2gzZQDoOn8wTIrKz0BXbHXOW9LFtBm68MAbT2LBEAv5kyg\nQjsA7VQFoAHorHQEdM3TgnlbcoB2WmcDD0DnFXQAdNsIA9BeVQAagM7KRWbQaaOK5DYtORDQ\n75enA7rxPRiA9qoC0AB0Vq6yBu0RGoCukz6Abv2QBEB7VR8A6Oh/AFoUrtHUFdAjd3FgBr1L\nNgGaxZYxg96uHYB2qgLQIwDtPRES+Gm7tABa6T0B0Puk5ktCq5MAdFk6AbrxQxIA7VUFoN3G\n2wEtg/RsQL97H0SNmwH6+7b9MQGALksvQLd5dSJA140iAE3lYoBWM7l5AM0Muxug7Tq0JACd\nV9AD0G3aDwG0owKA3mv6tQCt1kIDweaW9jLSCGhuGADd2RgAulk7AO1UBaCHz6DJ2cmAFm8d\nAHRnY8YBep+pNQJAk1MAepvpfQBttzJ8DZpC8URAh4RocrUsBTQA0MSYYYDeuT2xSkp8HAvo\nCgOyAkAD0BVGRDwqPs8A6Deh6dWy5MkQDMcD0I1SeARzR8s1AkCnUwB6m+mXAzRXMMUSxzs2\nt+/iyJVK7zwA9DIM0K1Pf2yTGwN6ofkHQG/SX1Xq0oCms9abATpxA4B+v2AGvUs5AC2rAtD9\nAO21JVd9TwQ0vVyX8plSZGYHQL9fhgD69mvQAYD2qt4D0NZSKL93JqBJgW3t+dII6ECfRq9L\nesyg640ZBugDdnGcCehXFI0ENPkLQG/SX1WqyD1rKTTdfDcBQMc8WChc83LjNeh9A3HsPujx\nch6g36EIQFtV7wBoeyKX7r6beDygUx6oLdG+3HgXR0dAF4KsTp4J6EBjEYCWVW8AaGcpNN1+\nN/F0QHMmd5lBm6UeCOiEFwC6QTNm0H7VGwAaM2jDAg1oOWnusAZtl3oeoMkEEIBuUY01aLfq\nHQCNNWhtgTuDXpc4lsqNAQB00Zj0zndxQGeNP2IXR3tTAPTMgMYuDq5A3QlxEv0O0vptW5WA\n1rYNkFl3cdxlBn0aoKsMyAoAPTWgY8ERgK7P48kBnSYqGx58qMegsG2A9AX0zs3Fxho0AD3S\ngKwA0LcFtNtYhGC/2WZ3QNsKlCm09/LbwoLcFtBb3qWKxqxLbAD0OAOyAkA/FdCbZpvXAPSW\nPjVg/BqA3vQuVTZmVQZADzMgK9WANkdtodcB6M2mnwjobbPNiwC6/lNBbcHLAbp+I3idMasy\nAHqYAVnpCuiKsACgqXQAtOvRJ86g6yfGtZ0/AdAb3jrGL3FEZQD0MAOy0hPQNYEBQFM5E9A3\nXIOutqF+lnk8oLe8dZiA7vklYVIGQA8zICvdAV1MZQA6yUBAZ0biCrs4bAXKFBaYIh5zMu8M\netNbhw3oftvsiDIAepgBWdkLaL2rvWALAE1kHKBzI7G9a3WA7hHQRUDzWwrQ9Z8J5lyDrl9C\nzgC6lzFUGQC9x4LTAE1DCTPozaYPA3R2LADopToOLzmD7mYMUQZA77FgNKAdCvBPinWRBUAT\nGQXo/DwMgK4W1vGrrEF3NCYpexygdy4UcQtOAjTHQN2vIADQRDCDljIXoLkPL7KLo6sxURkA\nvceCOWbQVekBQBMZBmisQfcQ8S53iX3QvY1ZlQHQeyw4C9B8DboO0N2My1d9OKBrdnHUyzMB\nLdeJjgJ0ZZ0FgK6SRwOafb1RZQYATWQgoDMCQFfKSTPoyjoLAF0lzwY0yw8AeqPpALSUqQB9\nzhp0bZ3lSEDvah6ABqBV1d2APkJCdUGj5PtaqG+lWSz1vEB86aRPthWMoy/R+dDVhrchfdvr\nqIb1tmcQZGLtkhJqo0IU7NfncSmaDwCREHVmHD7SmEFLmX4GbXzD6c6gAy/TdwbNBTPoRsEM\n+sQ16K1mXGYG3a673nQAWsrXEr+c0wrE0fJ0QAcAukI2AJrHFgBdEgA6FnwQoK2HbEINoIup\nuN+2QdIGaLrFFYB25bmAFl0HoDebDkBLSTNorp/t5qR6g3vWXSYDNHtIDIB2BYDeZAYATQSA\nlhLXoLl6/jwU1ftUQPPHeAFoXwDoTWYA0ER2AXq5LaDlk3XiFwWY3qcCGjPoWgGgN5kBQBPp\nAujNgz8/oJV6zKB1HaxB10kzoDtaAECrqjcDtH/xAYDGGrRVh1brN9sDoEm9bhYA0KoqAO3K\n9QBdvYvjYYDe1cAWYwDofRbMAegqKwBoIgC0lLJtAPS7DgBdJwD0egZAbzUdgJYCQFfXAaDr\n5NGAZukBQG81/TKArioBQLcKAD1QAOj1DIDeajoALQWArq4DQNdJKSoAaLvJCgGgswUBaAB6\nRwOZhvU1AHqgBTkBoAHoRvWqxOmA7sopLQB0owDQALSqCkC7MgjQXSCxE9AdLPBlIGf2Arpn\nzwHo9fQoC3ICQAPQjepFicy/UrtBNgJaPhS+34CMzAZovrrTTQDo9fQoC3JSCWjvWWMAepfp\nNwK08RvOLbIL0GNXOADoVgGgAWhVFYB2ZSCgdwd10Tb/h6I7zeF9AaAbBYAGoFVVANqVAYAO\nRwFaKqHPgPeZw/sCQDcKAA1Aq6oAtCsXXuJQaujvBY0mNADdKAD0HICuUghAJ6nHyfyAPuRL\nQg1hzKCbG/AbNq4B0AMtyAkAfR6gNwDlAoA+ZJudgjDWoJsb8Bs2rj0B0MO2BJ0H6IYOAdCr\nbPlIfglAb27WkJo1aH7unfSXBwN6X/sA9AyA3oMaR24N6E1rpgB0VBRyp0NlMkAPogkAHesd\nZUFOugG6ljUA9Cpb1kwvAOg+8bzVNgC6uQG34eqLtQJAnw/oatoA0FE2rJkC0J5eALq1Abfh\n6ou18nhA72gq6zv6L8HlAV3/eR2ATlI/cBnvPxzQXbTWCQDdKAB0e92c79i/pVw1gwagO5hu\nieG11d2TALpTOAPQ1VUA6Dq5LaAZc6vWoLHE0cN0S7TX4uAA0EcJAN0o5wK6FJvjAb2nKd93\n/Ondml0c+JKwi+mWSK+RwZkC0N12IAPQ1VUA6Eq5KaA3zqBrrQCgW2TyGXS/R0QA6OoqAHSl\n3BXQm9agqwWAbpG516A7PmQNQNfW4FUAaF9uC+gNuzjqBYBukal3cfT8mSIAurKCfKJysC0A\n9C4L2qvu/C2O7QJAt0jGa+cDuttP2S0AdG159Zskg20BoHdZ0F611ncA9Eb9+6pLmRvQW372\nqSAAdFVx9ZYIQPvSBuiev7x1EqCbegBAt8jkgMYujp2CGfRAqQc0q9SR0OcAuq0HAHSLzA7o\nboDYaNuRT3rPBGisQW+QFkB3XLVbTgJ0Yw8A6AbJ+XkOQPeSbbb1nOWUZSZAYxdHvTQAuuf3\n3ss5gG7tAgC9XbJ+fjCguyZRWaYCdO8GCk09DNCdQ+sAQGsdmEEPMl1J3tPbh+AugO48zSnK\nOM7s7wQA7UvzGnQ/C9qrtgMaa9CDTJdS4NBzAX2bGXSHbgwG9D7zrgjorl9vnANo7OIYY7oS\nANqTe6xB9/ggMJYmO807G9D52w6gD7QgJ3sA3SQA9HbBEocnd9jF0WWlZiig99oHQLdXBaAv\nAOjsGuUBgL7DMkIHGTuD3tlGH1PMpna/gwDQ7VUB6CsAOrsPenNjmx8GucUXcftl6Br03ia6\nGOI0hRn0TgOOeHMDoLfp31d9gwwH9KFfxT0S0B0+omAN2pezAb0rfwBoALrQ/qGb2Z4J6N0y\nesvBtXdx5G+PBvS+/Nn1Y0ktAkB3Fsygj5J5bZtl064jjwZ02DfDqfRdvwgAoDsL1qCPkmlt\nm+axN0ceDehDZtAdIwCA7izYxXGUzGpb30WoAYN9EUCPCvPxa9AdI2BTIwB0hRyxD/o4gW0N\n0pfP/Tl1DUCP+6A4fhdHRz5vaQaArhAA+iiZ17a+fO7OqUsA+tCvWurl2DXojU4AoCsEgD5K\nJratL597c+oKgD52s1K9HLqLY6sTDgL05y9Z/35eDdANMTUxaGBbo/Sy7YaALvXmFjPoTjLl\nDPpzfflkl9t17zR9k7RE1RNAM0IeYdvtljiK/Rm/Br1HDvbdjGvQVwZ004TnEaAZIM+w7WZf\nEpYTZPgujl1ytO9m3cXxKfl8CUC3bYJ/Bmj6y0Nsu9U2u4oEmXlYJ7fuYEDHJeh/fEtVtbPl\nHX5nmwGBTCpIkNmlCtBxheNqXxJiDfo4gW2Nco016DllauuOm0F/qoOLABq7OI4T2NYol9jF\nMalMbd1hgP40jk4zfbjAtjaBbY0ytXGwrl2OAvRnegWgzxXY1iYz2za3cbCuXY56UCX9ITs5\nTjN9uMC2NoFtjTK1cbCuXQ7aB71u32APEgLQpwhsa5OZbZvbOFjXLvgtjiEC29oEtjXK1MbB\nunYBoIcIbGsT2NYoUxsH69oFgB4isK1NYFujTG0crGsXAHqIwLY2gW2NMrVxsK5dAOghAtva\nBLY1ytTGwbp2AaCHCGxrE9jWKFMbB+vaBYAeIrCtTWBbo0xtHKxrFwB6iMC2NoFtjTK1cbCu\nXQDoIQLb2gS2NcrUxsG6dgGghwhsaxPY1ihTGwfr2gWAHiKwrU1gW6NMbRysaxcAeojAtjaB\nbY0ytXGwrl0A6CEC29oEtjXK1MbBunYBoIcIbGsT2NYoUxsH69oFgB4isK1NYFujTG0crGsX\nAHqIwLY2gW2NMrVxsK5dAOghAtvaBLY1ytTGwbp2AaCHCGxrE9jWKFMbB+vaBYAeIrCtTWBb\no0xtHKxrFwB6iMC2NoFtjTK1cbCuXQDoIQLb2gS2NcrUxsG6dgGghwhsaxPY1ihTGwfr2uVU\nQO+Tf5yi9foCv7UJ/NYscF2zdHEdAH0lgd/aBH5rFriuWQDoxwn81ibwW7PAdc0CQD9O4Lc2\ngd+aBa5rlgsDGgKBQCBFAaAhEAhkUgGgIRAIZFIBoCEQCGRSAaAhEAhkUgGgIRAIZFIZCuhP\n7/ovyf19usBvzfKpD+G1svi+gPdKsjVb/RqWnAHoz/eL9/fp8uk4AX4riwY0vFaUFSD0Ev0L\n7+VkI+WEo0sCQM8nAHS7ANANYkzsAOhq2QpoL71tGQ7o98T+80t8JJKDjEGP8rl6IrmO3oTf\nMiIzQl82zx8tn/Tgla98AQPey8lGyn1t89toQMdsedlv3jPPnyurp1aX4Y1tgwDQ24UC2nIe\nvJeVjZT72ua3Q5Y4jAGNPfm0zx8sn1/cHTJX4LeM2IyB13KiAP3FHQPvZWUj5b62+W08oN+f\nmeJ5uoVBtyS+yQLQDQJAbxcAepdspNzXNr+NX4P+st5bPvmLOn+wfL7EBjT8VhDTb/BaVgqA\nhvfyspFyX9v8NgrQLEuU6fZIY9C/JTeDht8yYoZcvAGv+SJnxl/UMfCeLy2U+9rmtyMArSb/\nn7yMOn+yJB/FLwnlPfjNFDPkvuC1spB90M67G7xnSgvlvrb5bdgSB3l+Rr63rJ/hv8gfev5o\nIYCO2+zWS/BbVqyQg9eqhDzlFp0TT+E9V1ooNwmgIXsF8Q+BPF0A6GkFgIZAni4A9LQCQEMg\nTxcAGgKBQCYVABoCgUAmFQAaAoFAJhUAGgKBQCYVABoCgUAmFQAaAoFAJhUAGnJf+fjQRxDI\nhQRxC7mvANCQiwviFvIEAaAhlxTELeS+8oPlv37/+Of30T8//vf19b+P3882CgKpFwAacl/5\nBvTfnx8fH//8dfT3x29fX79/UxoCuYoA0JD7yjeg//g1Z/779++jPz/+8++PP862CQLZIAA0\n5L7yjeXfPv76+vrrZ7EDv2EMuZoA0JD7yjeWX18P/rz+++Pj3ydbBIFsEgAacl8BoCEXFwAa\ncl+RSxy//YYlDsilBICG3FdeXw3+/vfX+iXhfz7+PNsmCGSDANCQ+4reZvfbx99nGwWB1AsA\nDbmvvB5U+Sd7UOWfZxsFgdQLAA2BQCCTCgANgUAgkwoADYFAIJMKAA2BQCCTCgANgUAgkwoA\nDYFAIJMKAA2BQCCTCgANgUAgkwoADYFAIJMKAA2BQCCTCgANgUAgkwoADYFAIJPK/wM6Mx3m\nnXZjTwAAAABJRU5ErkJggg==", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "start_date <- mdy(\"Jan 1, 2020\")\n", + "end_date <- mdy(\"Dec 31, 2020\")\n", + "idx = seq(start_date,end_date,by ='day')\n", + "print(paste(\"length of index is \",length(idx)))\n", + "size = length(idx)\n", + "sales = runif(366,min=25,max=50)\n", + "sold_items <- data.frame(row.names=idx[0:size],sales)\n", + "ggplot(sold_items,aes(x=idx,y=sales)) + geom_point(color = \"firebrick\", shape = \"diamond\", size = 2) +\n", + " geom_line(color = \"firebrick\", size = .3)" + ] + }, + { + "cell_type": "markdown", + "id": "3f199e43", + "metadata": {}, + "source": [ + "We are merging additional_items and sold_items so that we can find the total no of products.\n", + "As you can see, we are having problems here to find the total, we are getting NaN value as in the weekly series non-mentioned days are considered to be missing (NaN) if we add NaN to a number that gives us NaN.\n", + "In order to do addition, we need to replace NAN with 0." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "abe41544", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 53 × 1
additional_product
<dbl>
2020-01-0110
2020-01-0810
2020-01-1510
2020-01-2210
2020-01-2910
2020-02-0510
2020-02-1210
2020-02-1910
2020-02-2610
2020-03-0410
2020-03-1110
2020-03-1810
2020-03-2510
2020-04-0110
2020-04-0810
2020-04-1510
2020-04-2210
2020-04-2910
2020-05-0610
2020-05-1310
2020-05-2010
2020-05-2710
2020-06-0310
2020-06-1010
2020-06-1710
2020-06-2410
2020-07-0110
2020-07-0810
2020-07-1510
2020-07-2210
2020-07-2910
2020-08-0510
2020-08-1210
2020-08-1910
2020-08-2610
2020-09-0210
2020-09-0910
2020-09-1610
2020-09-2310
2020-09-3010
2020-10-0710
2020-10-1410
2020-10-2110
2020-10-2810
2020-11-0410
2020-11-1110
2020-11-1810
2020-11-2510
2020-12-0210
2020-12-0910
2020-12-1610
2020-12-2310
2020-12-3010
\n" + ], + "text/latex": [ + "A data.frame: 53 × 1\n", + "\\begin{tabular}{r|l}\n", + " & additional\\_product\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t2020-01-01 & 10\\\\\n", + "\t2020-01-08 & 10\\\\\n", + "\t2020-01-15 & 10\\\\\n", + "\t2020-01-22 & 10\\\\\n", + "\t2020-01-29 & 10\\\\\n", + "\t2020-02-05 & 10\\\\\n", + "\t2020-02-12 & 10\\\\\n", + "\t2020-02-19 & 10\\\\\n", + "\t2020-02-26 & 10\\\\\n", + "\t2020-03-04 & 10\\\\\n", + "\t2020-03-11 & 10\\\\\n", + "\t2020-03-18 & 10\\\\\n", + "\t2020-03-25 & 10\\\\\n", + "\t2020-04-01 & 10\\\\\n", + "\t2020-04-08 & 10\\\\\n", + "\t2020-04-15 & 10\\\\\n", + "\t2020-04-22 & 10\\\\\n", + "\t2020-04-29 & 10\\\\\n", + "\t2020-05-06 & 10\\\\\n", + "\t2020-05-13 & 10\\\\\n", + "\t2020-05-20 & 10\\\\\n", + "\t2020-05-27 & 10\\\\\n", + "\t2020-06-03 & 10\\\\\n", + "\t2020-06-10 & 10\\\\\n", + "\t2020-06-17 & 10\\\\\n", + "\t2020-06-24 & 10\\\\\n", + "\t2020-07-01 & 10\\\\\n", + "\t2020-07-08 & 10\\\\\n", + "\t2020-07-15 & 10\\\\\n", + "\t2020-07-22 & 10\\\\\n", + "\t2020-07-29 & 10\\\\\n", + "\t2020-08-05 & 10\\\\\n", + "\t2020-08-12 & 10\\\\\n", + "\t2020-08-19 & 10\\\\\n", + "\t2020-08-26 & 10\\\\\n", + "\t2020-09-02 & 10\\\\\n", + "\t2020-09-09 & 10\\\\\n", + "\t2020-09-16 & 10\\\\\n", + "\t2020-09-23 & 10\\\\\n", + "\t2020-09-30 & 10\\\\\n", + "\t2020-10-07 & 10\\\\\n", + "\t2020-10-14 & 10\\\\\n", + "\t2020-10-21 & 10\\\\\n", + "\t2020-10-28 & 10\\\\\n", + "\t2020-11-04 & 10\\\\\n", + "\t2020-11-11 & 10\\\\\n", + "\t2020-11-18 & 10\\\\\n", + "\t2020-11-25 & 10\\\\\n", + "\t2020-12-02 & 10\\\\\n", + "\t2020-12-09 & 10\\\\\n", + "\t2020-12-16 & 10\\\\\n", + "\t2020-12-23 & 10\\\\\n", + "\t2020-12-30 & 10\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 53 × 1\n", + "\n", + "| | additional_product <dbl> |\n", + "|---|---|\n", + "| 2020-01-01 | 10 |\n", + "| 2020-01-08 | 10 |\n", + "| 2020-01-15 | 10 |\n", + "| 2020-01-22 | 10 |\n", + "| 2020-01-29 | 10 |\n", + "| 2020-02-05 | 10 |\n", + "| 2020-02-12 | 10 |\n", + "| 2020-02-19 | 10 |\n", + "| 2020-02-26 | 10 |\n", + "| 2020-03-04 | 10 |\n", + "| 2020-03-11 | 10 |\n", + "| 2020-03-18 | 10 |\n", + "| 2020-03-25 | 10 |\n", + "| 2020-04-01 | 10 |\n", + "| 2020-04-08 | 10 |\n", + "| 2020-04-15 | 10 |\n", + "| 2020-04-22 | 10 |\n", + "| 2020-04-29 | 10 |\n", + "| 2020-05-06 | 10 |\n", + "| 2020-05-13 | 10 |\n", + "| 2020-05-20 | 10 |\n", + "| 2020-05-27 | 10 |\n", + "| 2020-06-03 | 10 |\n", + "| 2020-06-10 | 10 |\n", + "| 2020-06-17 | 10 |\n", + "| 2020-06-24 | 10 |\n", + "| 2020-07-01 | 10 |\n", + "| 2020-07-08 | 10 |\n", + "| 2020-07-15 | 10 |\n", + "| 2020-07-22 | 10 |\n", + "| 2020-07-29 | 10 |\n", + "| 2020-08-05 | 10 |\n", + "| 2020-08-12 | 10 |\n", + "| 2020-08-19 | 10 |\n", + "| 2020-08-26 | 10 |\n", + "| 2020-09-02 | 10 |\n", + "| 2020-09-09 | 10 |\n", + "| 2020-09-16 | 10 |\n", + "| 2020-09-23 | 10 |\n", + "| 2020-09-30 | 10 |\n", + "| 2020-10-07 | 10 |\n", + "| 2020-10-14 | 10 |\n", + "| 2020-10-21 | 10 |\n", + "| 2020-10-28 | 10 |\n", + "| 2020-11-04 | 10 |\n", + "| 2020-11-11 | 10 |\n", + "| 2020-11-18 | 10 |\n", + "| 2020-11-25 | 10 |\n", + "| 2020-12-02 | 10 |\n", + "| 2020-12-09 | 10 |\n", + "| 2020-12-16 | 10 |\n", + "| 2020-12-23 | 10 |\n", + "| 2020-12-30 | 10 |\n", + "\n" + ], + "text/plain": [ + " additional_product\n", + "2020-01-01 10 \n", + "2020-01-08 10 \n", + "2020-01-15 10 \n", + "2020-01-22 10 \n", + "2020-01-29 10 \n", + "2020-02-05 10 \n", + "2020-02-12 10 \n", + "2020-02-19 10 \n", + "2020-02-26 10 \n", + "2020-03-04 10 \n", + "2020-03-11 10 \n", + "2020-03-18 10 \n", + "2020-03-25 10 \n", + "2020-04-01 10 \n", + "2020-04-08 10 \n", + "2020-04-15 10 \n", + "2020-04-22 10 \n", + "2020-04-29 10 \n", + "2020-05-06 10 \n", + "2020-05-13 10 \n", + "2020-05-20 10 \n", + "2020-05-27 10 \n", + "2020-06-03 10 \n", + "2020-06-10 10 \n", + "2020-06-17 10 \n", + "2020-06-24 10 \n", + "2020-07-01 10 \n", + "2020-07-08 10 \n", + "2020-07-15 10 \n", + "2020-07-22 10 \n", + "2020-07-29 10 \n", + "2020-08-05 10 \n", + "2020-08-12 10 \n", + "2020-08-19 10 \n", + "2020-08-26 10 \n", + "2020-09-02 10 \n", + "2020-09-09 10 \n", + "2020-09-16 10 \n", + "2020-09-23 10 \n", + "2020-09-30 10 \n", + "2020-10-07 10 \n", + "2020-10-14 10 \n", + "2020-10-21 10 \n", + "2020-10-28 10 \n", + "2020-11-04 10 \n", + "2020-11-11 10 \n", + "2020-11-18 10 \n", + "2020-11-25 10 \n", + "2020-12-02 10 \n", + "2020-12-09 10 \n", + "2020-12-16 10 \n", + "2020-12-23 10 \n", + "2020-12-30 10 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 366 × 1
total
<dbl>
2020-01-0153.59979
2020-01-02 NA
2020-01-03 NA
2020-01-04 NA
2020-01-05 NA
2020-01-06 NA
2020-01-07 NA
2020-01-0840.93455
2020-01-09 NA
2020-01-10 NA
2020-01-11 NA
2020-01-12 NA
2020-01-13 NA
2020-01-14 NA
2020-01-1559.24704
2020-01-16 NA
2020-01-17 NA
2020-01-18 NA
2020-01-19 NA
2020-01-20 NA
2020-01-21 NA
2020-01-2238.26416
2020-01-23 NA
2020-01-24 NA
2020-01-25 NA
2020-01-26 NA
2020-01-27 NA
2020-01-28 NA
2020-01-2944.58327
2020-01-30 NA
......
2020-12-0241.74811
2020-12-03 NA
2020-12-04 NA
2020-12-05 NA
2020-12-06 NA
2020-12-07 NA
2020-12-08 NA
2020-12-0937.85650
2020-12-10 NA
2020-12-11 NA
2020-12-12 NA
2020-12-13 NA
2020-12-14 NA
2020-12-15 NA
2020-12-1646.73560
2020-12-17 NA
2020-12-18 NA
2020-12-19 NA
2020-12-20 NA
2020-12-21 NA
2020-12-22 NA
2020-12-2340.42143
2020-12-24 NA
2020-12-25 NA
2020-12-26 NA
2020-12-27 NA
2020-12-28 NA
2020-12-29 NA
2020-12-3041.20298
2020-12-31 NA
\n" + ], + "text/latex": [ + "A data.frame: 366 × 1\n", + "\\begin{tabular}{r|l}\n", + " & total\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t2020-01-01 & 53.59979\\\\\n", + "\t2020-01-02 & NA\\\\\n", + "\t2020-01-03 & NA\\\\\n", + "\t2020-01-04 & NA\\\\\n", + "\t2020-01-05 & NA\\\\\n", + "\t2020-01-06 & NA\\\\\n", + "\t2020-01-07 & NA\\\\\n", + "\t2020-01-08 & 40.93455\\\\\n", + "\t2020-01-09 & NA\\\\\n", + "\t2020-01-10 & NA\\\\\n", + "\t2020-01-11 & NA\\\\\n", + "\t2020-01-12 & NA\\\\\n", + "\t2020-01-13 & NA\\\\\n", + "\t2020-01-14 & NA\\\\\n", + "\t2020-01-15 & 59.24704\\\\\n", + "\t2020-01-16 & NA\\\\\n", + "\t2020-01-17 & NA\\\\\n", + "\t2020-01-18 & NA\\\\\n", + "\t2020-01-19 & NA\\\\\n", + "\t2020-01-20 & NA\\\\\n", + "\t2020-01-21 & NA\\\\\n", + "\t2020-01-22 & 38.26416\\\\\n", + "\t2020-01-23 & NA\\\\\n", + "\t2020-01-24 & NA\\\\\n", + "\t2020-01-25 & NA\\\\\n", + "\t2020-01-26 & NA\\\\\n", + "\t2020-01-27 & NA\\\\\n", + "\t2020-01-28 & NA\\\\\n", + "\t2020-01-29 & 44.58327\\\\\n", + "\t2020-01-30 & NA\\\\\n", + "\t... & ...\\\\\n", + "\t2020-12-02 & 41.74811\\\\\n", + "\t2020-12-03 & NA\\\\\n", + "\t2020-12-04 & NA\\\\\n", + "\t2020-12-05 & NA\\\\\n", + "\t2020-12-06 & NA\\\\\n", + "\t2020-12-07 & NA\\\\\n", + "\t2020-12-08 & NA\\\\\n", + "\t2020-12-09 & 37.85650\\\\\n", + "\t2020-12-10 & NA\\\\\n", + "\t2020-12-11 & NA\\\\\n", + "\t2020-12-12 & NA\\\\\n", + "\t2020-12-13 & NA\\\\\n", + "\t2020-12-14 & NA\\\\\n", + "\t2020-12-15 & NA\\\\\n", + "\t2020-12-16 & 46.73560\\\\\n", + "\t2020-12-17 & NA\\\\\n", + "\t2020-12-18 & NA\\\\\n", + "\t2020-12-19 & NA\\\\\n", + "\t2020-12-20 & NA\\\\\n", + "\t2020-12-21 & NA\\\\\n", + "\t2020-12-22 & NA\\\\\n", + "\t2020-12-23 & 40.42143\\\\\n", + "\t2020-12-24 & NA\\\\\n", + "\t2020-12-25 & NA\\\\\n", + "\t2020-12-26 & NA\\\\\n", + "\t2020-12-27 & NA\\\\\n", + "\t2020-12-28 & NA\\\\\n", + "\t2020-12-29 & NA\\\\\n", + "\t2020-12-30 & 41.20298\\\\\n", + "\t2020-12-31 & NA\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 366 × 1\n", + "\n", + "| | total <dbl> |\n", + "|---|---|\n", + "| 2020-01-01 | 53.59979 |\n", + "| 2020-01-02 | NA |\n", + "| 2020-01-03 | NA |\n", + "| 2020-01-04 | NA |\n", + "| 2020-01-05 | NA |\n", + "| 2020-01-06 | NA |\n", + "| 2020-01-07 | NA |\n", + "| 2020-01-08 | 40.93455 |\n", + "| 2020-01-09 | NA |\n", + "| 2020-01-10 | NA |\n", + "| 2020-01-11 | NA |\n", + "| 2020-01-12 | NA |\n", + "| 2020-01-13 | NA |\n", + "| 2020-01-14 | NA |\n", + "| 2020-01-15 | 59.24704 |\n", + "| 2020-01-16 | NA |\n", + "| 2020-01-17 | NA |\n", + "| 2020-01-18 | NA |\n", + "| 2020-01-19 | NA |\n", + "| 2020-01-20 | NA |\n", + "| 2020-01-21 | NA |\n", + "| 2020-01-22 | 38.26416 |\n", + "| 2020-01-23 | NA |\n", + "| 2020-01-24 | NA |\n", + "| 2020-01-25 | NA |\n", + "| 2020-01-26 | NA |\n", + "| 2020-01-27 | NA |\n", + "| 2020-01-28 | NA |\n", + "| 2020-01-29 | 44.58327 |\n", + "| 2020-01-30 | NA |\n", + "| ... | ... |\n", + "| 2020-12-02 | 41.74811 |\n", + "| 2020-12-03 | NA |\n", + "| 2020-12-04 | NA |\n", + "| 2020-12-05 | NA |\n", + "| 2020-12-06 | NA |\n", + "| 2020-12-07 | NA |\n", + "| 2020-12-08 | NA |\n", + "| 2020-12-09 | 37.85650 |\n", + "| 2020-12-10 | NA |\n", + "| 2020-12-11 | NA |\n", + "| 2020-12-12 | NA |\n", + "| 2020-12-13 | NA |\n", + "| 2020-12-14 | NA |\n", + "| 2020-12-15 | NA |\n", + "| 2020-12-16 | 46.73560 |\n", + "| 2020-12-17 | NA |\n", + "| 2020-12-18 | NA |\n", + "| 2020-12-19 | NA |\n", + "| 2020-12-20 | NA |\n", + "| 2020-12-21 | NA |\n", + "| 2020-12-22 | NA |\n", + "| 2020-12-23 | 40.42143 |\n", + "| 2020-12-24 | NA |\n", + "| 2020-12-25 | NA |\n", + "| 2020-12-26 | NA |\n", + "| 2020-12-27 | NA |\n", + "| 2020-12-28 | NA |\n", + "| 2020-12-29 | NA |\n", + "| 2020-12-30 | 41.20298 |\n", + "| 2020-12-31 | NA |\n", + "\n" + ], + "text/plain": [ + " total \n", + "2020-01-01 53.59979\n", + "2020-01-02 NA\n", + "2020-01-03 NA\n", + "2020-01-04 NA\n", + "2020-01-05 NA\n", + "2020-01-06 NA\n", + "2020-01-07 NA\n", + "2020-01-08 40.93455\n", + "2020-01-09 NA\n", + "2020-01-10 NA\n", + "2020-01-11 NA\n", + "2020-01-12 NA\n", + "2020-01-13 NA\n", + "2020-01-14 NA\n", + "2020-01-15 59.24704\n", + "2020-01-16 NA\n", + "2020-01-17 NA\n", + "2020-01-18 NA\n", + "2020-01-19 NA\n", + "2020-01-20 NA\n", + "2020-01-21 NA\n", + "2020-01-22 38.26416\n", + "2020-01-23 NA\n", + "2020-01-24 NA\n", + "2020-01-25 NA\n", + "2020-01-26 NA\n", + "2020-01-27 NA\n", + "2020-01-28 NA\n", + "2020-01-29 44.58327\n", + "2020-01-30 NA\n", + "... ... \n", + "2020-12-02 41.74811\n", + "2020-12-03 NA\n", + "2020-12-04 NA\n", + "2020-12-05 NA\n", + "2020-12-06 NA\n", + "2020-12-07 NA\n", + "2020-12-08 NA\n", + "2020-12-09 37.85650\n", + "2020-12-10 NA\n", + "2020-12-11 NA\n", + "2020-12-12 NA\n", + "2020-12-13 NA\n", + "2020-12-14 NA\n", + "2020-12-15 NA\n", + "2020-12-16 46.73560\n", + "2020-12-17 NA\n", + "2020-12-18 NA\n", + "2020-12-19 NA\n", + "2020-12-20 NA\n", + "2020-12-21 NA\n", + "2020-12-22 NA\n", + "2020-12-23 40.42143\n", + "2020-12-24 NA\n", + "2020-12-25 NA\n", + "2020-12-26 NA\n", + "2020-12-27 NA\n", + "2020-12-28 NA\n", + "2020-12-29 NA\n", + "2020-12-30 41.20298\n", + "2020-12-31 NA" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "index = seq(start_date,end_date,by = 'week')\n", + "sz = length(index)\n", + "additional_product <- rep(10,53)\n", + "additional_items <- data.frame(row.names = index[0:sz],additional_product)\n", + "additional_items\n", + "# we are merging two dataframe so that we can add\n", + "additional_item = merge(additional_items,sold_items, by = 0, all = TRUE)[-1] \n", + "total = data.frame(row.names=idx[0:size],additional_item$additional_product + additional_item$sales)\n", + "colnames(total) = c('total')\n", + "total" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "387cb4c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 366 × 1
total
<dbl>
2020-01-0153.59979
2020-01-0230.41127
2020-01-0348.54839
2020-01-0439.20897
2020-01-0539.09894
2020-01-0647.53019
2020-01-0744.94766
2020-01-0840.93455
2020-01-0937.66561
2020-01-1031.68825
2020-01-1145.30576
2020-01-1226.45509
2020-01-1345.81249
2020-01-1446.84547
2020-01-1559.24704
2020-01-1629.28688
2020-01-1732.41731
2020-01-1845.23295
2020-01-1948.54330
2020-01-2036.69353
2020-01-2143.09588
2020-01-2238.26416
2020-01-2345.56863
2020-01-2425.70944
2020-01-2537.38721
2020-01-2644.53955
2020-01-2746.88427
2020-01-2848.05540
2020-01-2944.58327
2020-01-3026.19490
......
2020-12-0241.74811
2020-12-0335.03915
2020-12-0425.84637
2020-12-0527.73147
2020-12-0639.00993
2020-12-0741.03187
2020-12-0826.33862
2020-12-0937.85650
2020-12-1041.98943
2020-12-1136.68901
2020-12-1246.96883
2020-12-1339.70374
2020-12-1446.59464
2020-12-1541.24742
2020-12-1646.73560
2020-12-1732.68275
2020-12-1846.64238
2020-12-1925.22163
2020-12-2039.79997
2020-12-2134.45013
2020-12-2248.71183
2020-12-2340.42143
2020-12-2432.41991
2020-12-2539.12296
2020-12-2629.43616
2020-12-2739.09337
2020-12-2838.09288
2020-12-2941.00681
2020-12-3041.20298
2020-12-3143.25232
\n" + ], + "text/latex": [ + "A data.frame: 366 × 1\n", + "\\begin{tabular}{r|l}\n", + " & total\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t2020-01-01 & 53.59979\\\\\n", + "\t2020-01-02 & 30.41127\\\\\n", + "\t2020-01-03 & 48.54839\\\\\n", + "\t2020-01-04 & 39.20897\\\\\n", + "\t2020-01-05 & 39.09894\\\\\n", + "\t2020-01-06 & 47.53019\\\\\n", + "\t2020-01-07 & 44.94766\\\\\n", + "\t2020-01-08 & 40.93455\\\\\n", + "\t2020-01-09 & 37.66561\\\\\n", + "\t2020-01-10 & 31.68825\\\\\n", + "\t2020-01-11 & 45.30576\\\\\n", + "\t2020-01-12 & 26.45509\\\\\n", + "\t2020-01-13 & 45.81249\\\\\n", + "\t2020-01-14 & 46.84547\\\\\n", + "\t2020-01-15 & 59.24704\\\\\n", + "\t2020-01-16 & 29.28688\\\\\n", + "\t2020-01-17 & 32.41731\\\\\n", + "\t2020-01-18 & 45.23295\\\\\n", + "\t2020-01-19 & 48.54330\\\\\n", + "\t2020-01-20 & 36.69353\\\\\n", + "\t2020-01-21 & 43.09588\\\\\n", + "\t2020-01-22 & 38.26416\\\\\n", + "\t2020-01-23 & 45.56863\\\\\n", + "\t2020-01-24 & 25.70944\\\\\n", + "\t2020-01-25 & 37.38721\\\\\n", + "\t2020-01-26 & 44.53955\\\\\n", + "\t2020-01-27 & 46.88427\\\\\n", + "\t2020-01-28 & 48.05540\\\\\n", + "\t2020-01-29 & 44.58327\\\\\n", + "\t2020-01-30 & 26.19490\\\\\n", + "\t... & ...\\\\\n", + "\t2020-12-02 & 41.74811\\\\\n", + "\t2020-12-03 & 35.03915\\\\\n", + "\t2020-12-04 & 25.84637\\\\\n", + "\t2020-12-05 & 27.73147\\\\\n", + "\t2020-12-06 & 39.00993\\\\\n", + "\t2020-12-07 & 41.03187\\\\\n", + "\t2020-12-08 & 26.33862\\\\\n", + "\t2020-12-09 & 37.85650\\\\\n", + "\t2020-12-10 & 41.98943\\\\\n", + "\t2020-12-11 & 36.68901\\\\\n", + "\t2020-12-12 & 46.96883\\\\\n", + "\t2020-12-13 & 39.70374\\\\\n", + "\t2020-12-14 & 46.59464\\\\\n", + "\t2020-12-15 & 41.24742\\\\\n", + "\t2020-12-16 & 46.73560\\\\\n", + "\t2020-12-17 & 32.68275\\\\\n", + "\t2020-12-18 & 46.64238\\\\\n", + "\t2020-12-19 & 25.22163\\\\\n", + "\t2020-12-20 & 39.79997\\\\\n", + "\t2020-12-21 & 34.45013\\\\\n", + "\t2020-12-22 & 48.71183\\\\\n", + "\t2020-12-23 & 40.42143\\\\\n", + "\t2020-12-24 & 32.41991\\\\\n", + "\t2020-12-25 & 39.12296\\\\\n", + "\t2020-12-26 & 29.43616\\\\\n", + "\t2020-12-27 & 39.09337\\\\\n", + "\t2020-12-28 & 38.09288\\\\\n", + "\t2020-12-29 & 41.00681\\\\\n", + "\t2020-12-30 & 41.20298\\\\\n", + "\t2020-12-31 & 43.25232\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 366 × 1\n", + "\n", + "| | total <dbl> |\n", + "|---|---|\n", + "| 2020-01-01 | 53.59979 |\n", + "| 2020-01-02 | 30.41127 |\n", + "| 2020-01-03 | 48.54839 |\n", + "| 2020-01-04 | 39.20897 |\n", + "| 2020-01-05 | 39.09894 |\n", + "| 2020-01-06 | 47.53019 |\n", + "| 2020-01-07 | 44.94766 |\n", + "| 2020-01-08 | 40.93455 |\n", + "| 2020-01-09 | 37.66561 |\n", + "| 2020-01-10 | 31.68825 |\n", + "| 2020-01-11 | 45.30576 |\n", + "| 2020-01-12 | 26.45509 |\n", + "| 2020-01-13 | 45.81249 |\n", + "| 2020-01-14 | 46.84547 |\n", + "| 2020-01-15 | 59.24704 |\n", + "| 2020-01-16 | 29.28688 |\n", + "| 2020-01-17 | 32.41731 |\n", + "| 2020-01-18 | 45.23295 |\n", + "| 2020-01-19 | 48.54330 |\n", + "| 2020-01-20 | 36.69353 |\n", + "| 2020-01-21 | 43.09588 |\n", + "| 2020-01-22 | 38.26416 |\n", + "| 2020-01-23 | 45.56863 |\n", + "| 2020-01-24 | 25.70944 |\n", + "| 2020-01-25 | 37.38721 |\n", + "| 2020-01-26 | 44.53955 |\n", + "| 2020-01-27 | 46.88427 |\n", + "| 2020-01-28 | 48.05540 |\n", + "| 2020-01-29 | 44.58327 |\n", + "| 2020-01-30 | 26.19490 |\n", + "| ... | ... |\n", + "| 2020-12-02 | 41.74811 |\n", + "| 2020-12-03 | 35.03915 |\n", + "| 2020-12-04 | 25.84637 |\n", + "| 2020-12-05 | 27.73147 |\n", + "| 2020-12-06 | 39.00993 |\n", + "| 2020-12-07 | 41.03187 |\n", + "| 2020-12-08 | 26.33862 |\n", + "| 2020-12-09 | 37.85650 |\n", + "| 2020-12-10 | 41.98943 |\n", + "| 2020-12-11 | 36.68901 |\n", + "| 2020-12-12 | 46.96883 |\n", + "| 2020-12-13 | 39.70374 |\n", + "| 2020-12-14 | 46.59464 |\n", + "| 2020-12-15 | 41.24742 |\n", + "| 2020-12-16 | 46.73560 |\n", + "| 2020-12-17 | 32.68275 |\n", + "| 2020-12-18 | 46.64238 |\n", + "| 2020-12-19 | 25.22163 |\n", + "| 2020-12-20 | 39.79997 |\n", + "| 2020-12-21 | 34.45013 |\n", + "| 2020-12-22 | 48.71183 |\n", + "| 2020-12-23 | 40.42143 |\n", + "| 2020-12-24 | 32.41991 |\n", + "| 2020-12-25 | 39.12296 |\n", + "| 2020-12-26 | 29.43616 |\n", + "| 2020-12-27 | 39.09337 |\n", + "| 2020-12-28 | 38.09288 |\n", + "| 2020-12-29 | 41.00681 |\n", + "| 2020-12-30 | 41.20298 |\n", + "| 2020-12-31 | 43.25232 |\n", + "\n" + ], + "text/plain": [ + " total \n", + "2020-01-01 53.59979\n", + "2020-01-02 30.41127\n", + "2020-01-03 48.54839\n", + "2020-01-04 39.20897\n", + "2020-01-05 39.09894\n", + "2020-01-06 47.53019\n", + "2020-01-07 44.94766\n", + "2020-01-08 40.93455\n", + "2020-01-09 37.66561\n", + "2020-01-10 31.68825\n", + "2020-01-11 45.30576\n", + "2020-01-12 26.45509\n", + "2020-01-13 45.81249\n", + "2020-01-14 46.84547\n", + "2020-01-15 59.24704\n", + "2020-01-16 29.28688\n", + "2020-01-17 32.41731\n", + "2020-01-18 45.23295\n", + "2020-01-19 48.54330\n", + "2020-01-20 36.69353\n", + "2020-01-21 43.09588\n", + "2020-01-22 38.26416\n", + "2020-01-23 45.56863\n", + "2020-01-24 25.70944\n", + "2020-01-25 37.38721\n", + "2020-01-26 44.53955\n", + "2020-01-27 46.88427\n", + "2020-01-28 48.05540\n", + "2020-01-29 44.58327\n", + "2020-01-30 26.19490\n", + "... ... \n", + "2020-12-02 41.74811\n", + "2020-12-03 35.03915\n", + "2020-12-04 25.84637\n", + "2020-12-05 27.73147\n", + "2020-12-06 39.00993\n", + "2020-12-07 41.03187\n", + "2020-12-08 26.33862\n", + "2020-12-09 37.85650\n", + "2020-12-10 41.98943\n", + "2020-12-11 36.68901\n", + "2020-12-12 46.96883\n", + "2020-12-13 39.70374\n", + "2020-12-14 46.59464\n", + "2020-12-15 41.24742\n", + "2020-12-16 46.73560\n", + "2020-12-17 32.68275\n", + "2020-12-18 46.64238\n", + "2020-12-19 25.22163\n", + "2020-12-20 39.79997\n", + "2020-12-21 34.45013\n", + "2020-12-22 48.71183\n", + "2020-12-23 40.42143\n", + "2020-12-24 32.41991\n", + "2020-12-25 39.12296\n", + "2020-12-26 29.43616\n", + "2020-12-27 39.09337\n", + "2020-12-28 38.09288\n", + "2020-12-29 41.00681\n", + "2020-12-30 41.20298\n", + "2020-12-31 43.25232" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "additional_item[is.na(additional_item)] = 0\n", + "total = data.frame(row.names=idx[0:size],additional_item$additional_product + additional_item$sales)\n", + "colnames(total) = c('total')\n", + "total" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "bdb60236", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAMAAABR+ye1AAAAOVBMVEUAAAAzMzNNTU1oaGh8\nfHyMjIyampqnp6eyIiKysrK9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PD///+vl18TAAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO196YK0OI7t119VTzMzfaej8v0f9lZmLGBbu2Uj\ng86PzAjwIrwcSwdD/PpKJBKJREj8OtuARCKRSMBIgk4kEomgSIJOJBKJoEiCTiQSiaBIgk4k\nEomgSIJOJBKJoEiCTiQSiaBIgk4kEomgsBL0owud2YcibbMhbTMitHFpnR0dxiVB40jbbEjb\njAhtXFpnRxL0EKRtNqRtRoQ2Lq2zIwl6CNI2G9I2I0Ibl9bZkQQ9BGmbDWmbEaGNS+vsSIIe\ngrTNhrTNiNDGpXV2JEEPQdpmQ9pmRGjj0jo7kqCHIG2zIW0zIrRxaZ0dSdBDkLbZkLYZEdq4\ntM6OJOghSNtsSNuMCG1cWmdHEvQQpG02pG1GhDYurbMjCXoI0jYb0jYjQhuX1tmRBD0EaZsN\naZsRoY1L6+xIgh6CtM2GtM2I0MaldXYkQQ9B2mZD2mZEaOPSOjuSoIcgbbMhbTMitHFpnR1J\n0EOQttmQthkR2ri0zo4k6CFI22xI24wIbVxaZ0cS9BCkbTakbUaENi6tsyMJegjSNhvSNiNC\nG5fW2ZEEPQRpmw1pmxGhjUvr7EiCHoK0zYa0zYjQxqV1diRBD0HaZkPaZkRo49I6O5KghyBt\nsyFtMyK0cWmdHZMI+vffOP5Pgj4PaZsNkW2LbVxaZ8ccgv79+vP78yUJ+jSkbTZEti22cWmd\nHUnQQ3AD27bNp5wCN2i3MQhtXFpnx0SC/kqCDgEf27ZtBENfv90GIbRxaZ0dswj6qT3vBP2P\nb3DZEmGx/eBsKxKJBA+eoF/snB50AHjYtr3gUFSBq7fbMIQ2Lq2zIzXoIbi8bUnQsRDauLTO\njiToIbi+bUP4+QbtNgihjUvr7EiCHoIb2JY3CSMhtHFpnR1J0ENwB9tym10ghDYurbMjnyQc\ngjvYlgQdCKGNS+vsyHdxDMEdbFMStEgRuUO7DUFo49I6O5KghyBtqyG7p5jtZkRo49I6O+5D\n0EMeTcYQuc9PsU24Ky/bzYjQxqV1dtyGoMc8mozhYNvUhUGCMyQO6YMtkedKZNtiG5fW2XEX\ngh7zXAWK3ba5C4MEp2jQ6UGPRWjj0jo7bkLQox5NxvCxbfLCIEFq0DZEti22cWmdHTch6FGP\nJmN42zZ7YZDgpPGYuzhGIrRxaZ0ddyHoQY8mY7iDB537oE9FOaqCGVchrTPjNgQ95tFkDKlB\n29JHniuxbKvGVSzjaqR1ZtyHoId4fBjusItDiyRoR9SRWSjjGqR1ZtyIoGcibbMhbZOhubcR\nybgWaZ0ZSdBDcLTtqh50atAnIj1oP4S27kYEfdaThEnQ8vSR50os21KDdkNo65KghyByn6cG\nbUMw23IXhxdCW3cjgp6JtM2GtM2I0MaldXYkQQ9BShw2rNKnEZAetBNCW3cjgk4N+onUoG2I\nZlsStBNCW5cEPQSR+zw1aBsi2xbbuLTOjhsR9EykbTakbUaENi6tsyMJeghS4rBhlT6NgJQ4\nnBDauhsRdGrQT6QGbYOTbW6P/idBOyG0dUnQQxC5z1ODtsHHtkEvz4rccGldB25E0DORttlw\nedtGvX42csOldR1Igh6ClDhsWKVPrfD8AYeUOJwQ2robEXRq0E+kBm1DNA86CdoJoa1Lgh6C\nyH2eGrQNqUGbkdaZcSOCnom0zYYb2DbmBxwiN1xa14Ek6CFIicOGVfq0B7nNLhhCW3cjgk4N\n+onUoG2IZlsStBNCW5cEPQSR+zw1aBsi2xbbuCWsC/fboU/ciKBnIm2z4Q62pQYdDD/WDbp5\n240k6CG4g8Qx4sJW6dMepAYdDN/WjXqAqBs3IujUoJ9IDdqGYLaVzRnMuArRrds8HyDyRRL0\nEEQekSfZJmr+bDcjQhsX37ok6AAEPRNpmw13sC016GBIiePeBB2t21ODtiEaQacG7YS8SRiD\noFODfiI1aBuC2ZYatBdym929CToaUoO2IbJtsY1L6+y4EUHPRNpmwx1sSw06GEJblwQ9BHeQ\nOFKDtiE16GB4WRdtnj6RBD0EdyDo1KBPRWrQXkiCDkHQU28CSGw7a0CkBm1DZNtiG5fW2XEf\ngp4KgW2nbetZvN1OQzSJo0DkhkvrOpAEPQS8xHHexvjUoG2IRtCpQTshJY4QBD21/VmCPvHR\n0tSgbQhmW2rQXkiCDkHQofZBn/nsf2rQNkS2LbZxaZ0dNyLomWBtO/HZ/6Xb7UREkzgKRG64\ntK4DSdBDINOg59hSIzVoG6IRdGrQTkiJIwRBx9KgT3z2PzVoG4LZlhq0F5KgQxB0KA36G6sT\ntBKpQY9EaOPSOjtuRNAzkbbZcAfbUoMOhtDWJUEPwR0e9U4N2ga3ZjsWFLnhFrEu2jx94j4E\nHU2DXl7iSA36VKQG7YUk6BAEnRr0C6lB2xDZttjGpXV23IigZyJts+EOtqUGHQyhrUuCHoLU\noG1YpU97kBp0MKTEEYKgU4N+4TSiEWSIPJOD2ZYatBeSoEMQdGrQL6QGbUNk22Ibl9bZcSOC\nnom0zYY72JYadDCEti4JeghSg7ZhlT7tQWrQwZASRwiCTg36hdSgbQhmW2rQXkiCDkHQqUG/\nkBq0DZFti21cWmfHjQh6JtI2G+5gW2rQwRDauiToIUgN2oZV+rQHqUEHQ0ocIQg6NegXUoO2\nIZhtqUF7IQk6BEGnBv1CatA2RLYttnFpnR03IuiZSNtsuINtqUEHQ2jrkqCHoLAtWOyUGrQN\n4Qg6NWgfpMQRgqBTg34hNWgbgtmWGrQXkqBDEHRq0C+kBm1DZNtiG5fW2XEjgp6JtM2GtM2I\n0MaldXYkQQ9BatA2LNOndmypQQdDShwhCDo16BdSg7Yhlm1VY8YyrsYS1iVBn+1BT+yB1KAb\njNag/TxTBKFZJrRxaZ0ddyLoiUjbbLDbtm2jGdpL4vAppkLkTk3rOpAEPQQzNWht8ZfUoLdt\nOEPnPmgzlrAuJY5zCTqcBu0ENS9dUYPetvEMHYtlUoN2QxJ0CIKOpkE7sYmely6pQS/kQQ9B\naOPSOjtOJehEN16e49lmnI9lWmENKxNXwiIe9ETM0qAtof0lNeiFdnGkBh0MKXGEIOhoGrSj\nwnGOxBFJg56BWLalBu2GJOgQBB1Ng3ZkaF2OS2rQ0go6EJplQhuX1tlxJ4KeiIm2qUP7q7bb\nIgSd+6CjIbR1SdBDkPugbVimTzuQGnQwpMQRgqCvqUEbcNpsSQ3aEalBuyEJOgRBX1SD1uOk\nUD016JEIbVxaZ8edCHoiZtqWGvQTixB0atDRENq6JOghSA3ahmX6tAOpQQdDShwhCDo16BdO\n8wRTg3ZEatBueFoXk59vRNCpQb8QebbcQOIYg9DGpXV23ImgJyI16BoyK29A0KlBR0No65Kg\nhyCABo0+wJIatA2pQZuxhHUxNY77EPTNNGj8EfDUoG2IZVtq0G5IDToEQYfToIfaQ7xEKSUO\nG0KzTGjj0jo77kTQEzHVNoCZqNeQXrXdFiHo1KCjIbR1SdBDcLoGPYOgU4M2ITXoYEgNOgRB\nn6VBY/VO0KCHShypQZ+K1KDdkBp0CIK+lwZN/JhsatA2hGaZ0MaldXbciaAn4mwNmjh82XZb\nhKBTg46G0NatS9DDf4OuB6dr0AT8xqP/hUWeK6lBm7GEdTH5ZFmCVv/U0800aBypQdsQy7bU\noN2QGvQAgjb8WOrNNOhgEkdq0EMR2ri0zo5FCZra5xsBqUHbcAOCTg06GkJbtyhBmzzoiUgN\n2obIcyU1aDOWsC4mm6xK0KlBm5EatA2xbEsN2g2pQY8gaMMujtSgf5AatA2hWSa0cWmdHesS\ndNQl7wepQdtwA4JODToaQlu3MEFHbtfUoG1Ypk87kBp0MKQGHYKgU4N+ITVoGyLbFtu4JayL\nyc83IujUoF9IDdqGUCxTX2wo4xqkdWYsTNBBl7wfpAZtww0IOjXoaAht3cIEHbldU4O2YZk+\n7UBq0MGQGnQEgp7b/KlB23JEnsmhbEuJww+pQUcg6Edq0C+kBm1DaJYJbVxaZ8fCBB10yfvB\njTXorgfwb0DQqUHTmP8Ch9BttzBBR27X+2rQfa9IWaZPO5AaNIUTXrHzti6kx3cbgk4N+o2h\nniD1EqvUoP1wVQ36jJegpQYdgaAfqUG/MHIu46+BTQ16KEIbJ7ZuO+U1wqHbbmGCDrrk/eC2\nGnTn/LoBQacGTeE8DzooFiboyO2aGrQNy/RpD7zGQ2rQPkgNOgJBpwb9xmBPEJ9fqUH74aoa\n9Hm7OELS840I+pEa9Auj5zJy91CU9wYSxxiENu4U6+REH7rtFibooEveD+b2uY4SI4/HGxB0\natAMfBpIIZWEbruFCTpyu95Xg+7DMn3ag9SgSbg0j+ZmY2rQEQg6Neg3RnuCqUFPwHU1aA/o\ntuulBh2BoB+pQb+QGrQNoTkwtHEnWGfxoENiYYIOuuT9IDVoG25A0KlBM0gN+oiFCTpyu6YG\nbcMyfdqDES/jiNxwpxC0YRdHSI/vNgSdGvQbqUHbEMq21KD9kBp0BIJ+pAb9QmrQNoRmmdDG\nnWNd7oM+maCDLnk/SA3ahhsQdGrQDEbsQiQRuu0WJujI7TpRg1aXnhq0DalBm3EKQYuRGnQE\ngk4N+o3UoG0IZVtq0H5IDToCQT9Sg37hohr08N4NzTKhjUsN2o6FCTrokveDwBr0/LeFKZAa\ntBGhSeacbXbilKHbbmGCjtyucTVoz/ftpgZtQmrQJFKDPuI2BJ0a9LNWt1+sSA36TKQG7YfU\noCMQ9CM16MeD+M3AsfWmBj0YoY07ybp81Ptcgg665P0grAZ9xm++KZAatBGhSSY1aDsWJujI\n7ZoatA3L9GkPUoMmkRr0Ebch6HAa9Fnw4ufUoM9EatB+SA06AkE/gmnQW+6DBpAatBG7cREF\nrNSgzViYoAMOxA/CatDE8QhIDdqIj3EhbzGkBm3GwgQdrV2PIyKuBu1pTmrQJozUoGPeBE4N\n2ozbEPTw1i/mBa9Bnzca8l0cNoSyDdGgZ2yjNCBU0zVIDToCQT8Gd0E5LyLsg8bKjywIpgZt\nxIU8aDekBn0uQYcahpXnEliD3gbb1tUtqUEbcSENevrEToIO4kEPRB1apgZtQ6Q+rbGEBn2B\nXRw+9itKSQ06AkGP3tOGShypQbMndtyCoEcg8Mb7R/CmSw06BEE/JmjQ+7cba9A926BTgxai\nudhIxrVIDdqMhQk62JJXhJYRNGgsceTx2GXb4AGxhgYdEicEuwaJIyQWJuho7RpsH3SP0tBZ\ntR3R+vSIRTToaI7LN3IftBm3Ieho7+K4rgbd8wjjLQjaAZTEEZBnIjVdi9SgIxD0I9i7OB6p\nQQMYoUF7NXNolgltXGrQdqxM0MHWvPM0aHAoon5s5PE4QIN22xecGrQZqUGbsTJB92X3B7aL\nI/dBi+Hfp35P1qUGbUZq0GbchqBTg37jVhq047spIjkEqUE7IjXoCAT9SA36hTtp0J4vDwrN\nMqGNSw3ajpUJOtaaV1gTV4PeQo9Hdw3a8eVBqUGbkRq0GSsTdF92fyyiQfstbKto0D4lpQZt\nRmrQZkwi6N/feP0/h6BTg37jNA1acM0DFl23lwdFcghSg3ZEatB/E/Ph387Qk01PDfoHd9Kg\nPRGaZUIb12mduWfHD7rxWJmgY615qUE7YMS7OIJ50KlBc6haaOQLrn+KDt12cwj69/H/aR70\naKQG3Y0RffqxsnOipwZtRo8GbbvLK8vxLDo16F2C/hD0P77BZfPENrMyQcWn2QNi05uD50DP\nnHvN37PxVAMcQV3IZS7yB699kgPLfn8ZUkUMyDzo32d70I6P0HFFLaZBe/5OUlQNunvDXaCI\nrb2OQMYBsFvXtZGdyfUuO3TbTdxm507Qp4Uk4IhZWIOO80uj4zTo/kdWfPrUo5mB6whNMj0a\ntLHXRDleZYduu5UJui+7HeiY2Y+tpEFvZu5aSoPuZugwGvTnOq6pQVcY6TukBr1z89kE7alv\n8DN9rX3QJuZaZR/0XnsnQ0dxtMDruA5BN+aPjO0OuzjEtcyNNecRdHmT8AwP2qdhRQ5natAy\nW2oM3QfdydBRCBpcT8MYByLuPmj9NrvJauDEJwmP/10I+ixXAZ7mC2vQs70CHEP3Qdu1nB+k\nBm3G/GBXU4ZuE+Dk+zX5Lg4DsC4yatB9He6zD3rIbXI9XPq0bM7teOJ8gn54tNrrEi6pQc83\nX6FBd67xBtyGoF2bVLPNjtWgZ2+hOONdHM8LnKNBE815DYnjAbTkdQi6xcgLUmvQ6UGPMz1a\nsxb7vwYYIdegR9cqvkAHDZpszivcJAQR2rg1NWhkpKzjTp1O0Oe5CqxIIL80l6BJLlpsiG1D\n21J+gf0adNuc1bZafbGvLHE0aABXIugYGjQ6ZK+4iyOGB+0IbquCQoPu5ef4GrRiCXLoU4Kf\nTVT9KS2QBt0WdB2JI4gGTQzZJOgRps/t96ga9HFffm9R0jN7jHC6Bv0olRBpac+UJzkEzCNR\nL1yHoFucoEHPvxmI4TYE/YiqQffu4uDLPxzZxj/ZCt4inCBxHFc8QWqhSYeJeg5Bzws9BuJc\nDZpbr2HNLwY/L03QoTTo8lDMfdDPQTdfg55yk/BwDRt8uDJIw9DdtpHWiKqnEZ2gNWTnMBaP\nRbANqNSgU+IYb3o3uK7TvYvD/QYhnJCK20Zq0A+54DugTxE5WuwhnapB0wvJOhq0wh31Np/v\naGQfNL4VqN8oOW5D0HE16Gm2+epqYg1akuWN8YvuUYOW3uN8/tftxnIC0mMTNGjP6+obeH3+\nC103okH31+uF2xD0Y1yDA+XGfBcHIXEMrJU42sDnXRzSu3/Pf9IKtJGwD87SoD2vq++Wm92M\n7VA5kSS0PLQyQZ+2wlUaZ/3qx8f8PmdF8dcx9CZhCG9hngb9OS6hDcqDVhOPuqEnbCAHa31d\nlwtNs/xcnOuvsSxOKnGIS9cbZMfKBN2XvQu1mlkf/sJSc6V1mSJIvN3gXRwlUM/6ST8CfiUI\n2uQaau8TSs44Sxyf6/JxpDkN+njW4xbhVjM0mRx7F0eHVCeEoG3vQtDDVj14hobUoF84410c\nXJY35mnQP59U/BppNxahQfsYsx3RXRqzi4OpRVt/UxxT9GkatKRt70LQ3xjR4MgYjqlBP5Ea\n9CGlgoDO0aCFGKJBuzH0F9klTC02fgZ0R6zws0JxUduuTNDKmzwF3GbVu5WX0KB/jqYGfTzZ\nqUGrR5K+oU/RoF/CgJsHzVV1rKW3Pq3RJ2nQstVvZYL+/mMcP13DrlybQf0sqgb9jdSgj98E\n44Am6C6L+pKP06A/5Thp0FxVQzVorsizNOjLe9APxWJZzU1P5RAqKDVoXZY3JmvQ5QEGmG1n\nBB/NUuOtQX8KcpkmX5xZZC2GoEMaQ6UGPZagdRrZvkh73fxAIbu0wSMgNWhXRCLo0oAxL1jR\nLmAEaA1aZseYrGdq0KLVb2WCtmtkffwMhkKnatDQtaQGDX6zlyu1jR5Y/hr0z1gO/bCFoOmc\nA0pVEcq285wq1ybo7z9naNA/BYBfPoXO1aCV90RSgz5+89ag+c7w1aCbaDDIWnuEhqAH8F9Q\nDVqE1QlaqpE1jT+ikfeJMlWDVsYDqUEXn5w16NHiWV1nI9eJ6paY6CpxVB6NqlB7qPuqJ6oG\nLcHyBK0A7PX64TBTJmrQWzNFmeLP0KClV+qiQQ+aWCKCHn97o6neIHGITPQk6HYRk2fu4WfR\nU6InykPXlji45bED1HNNzaljpLl5vjtYCJgSUoMGv9nLFS66DC34N/Smvkk4fRGpFD+gdl8N\nGtZ+MKQGPdSDHqtVYKcgDkA96NSgpRi7sC2pQfPPQG+bRFM7ljiboYumA2v3j38O1aQGfSZB\nyyB0MF/n8OFLjuyTNGilpncvDRqfdWM06EG3N+gqlfugZfw8TIPWLg9GC/ZaUoOOT9DfkGrQ\nhIPB+B7ILg6RQf5IDdoV4n3Q0yc2plvhGRQEOUiDHs7PssAyNeiBBD1Mg1Z60EAUdZN3ccSS\nOEJo0MLCPDMYSEZ+j9AFtXVt9QM0aHEskxr0UA86ggb9+Qp70KM1aB3Ax7pMJvTLmHUBYyWO\nKRo0D2WjibQk7bs4pnr5gjvYQ+Of1KDPJGgZxI3/Ok3MCkn3kPOl0cXmxsRuGjSqA+FZ6gN1\nAevvg9aUaIZFg1Yvpm4a9E8vdxTjFQJhZ76QNKlBzzZdQYqdnUPZtpOS/e6HLB182IsEETle\noUG3BaQGbYFEg1bv2nC7it4dI0OzpgY9kKCHadA0wAkpD9W7NzhBBXRr0EYzuq4FKMBHg3YW\noa+gQdctLTaj332FhwmiETrVqUqdGvRQD3q/NTT1+S3kKziZC8+d3AQqqbkqwEWDtoSgXvzs\nRtBwLcjnK2jQh1Nf4NH9UPeosUM04sdaRpeJadAhROj1CfoNmi2UGrQWxM2uamT2EnS/4xpH\ng3aVOKSo19J7aNCGMeOqQZ+kcXAFUBp0CAn6OgQtoS2xBq11KBU3u15mbqwNdAGSrIM1aDhm\nQZUVpABpu/HGcJX1IhBBtxUO06A9LuY0ek4N+lSCPmrQ/Y6lGO2EVHmC3UaO0KDP8hZct9nd\nVIPevUA6ma/MqwIYZ+H2pAa9Y2WCfv57r/Sz+Lmo9Vj10Smm9kFL32uE112U4KJBW715Syaq\nhPkatOASLqBB99rQiabpttpPSQ0awfoE/YanBq1nTNyDFsT82v7uGx/3ehcHYYSYoZ8IJHHo\nNWjqBJ3B42q+mmI07lRq0MassQhaoHRpHE9V9yi11K36b4Pqcg+Y+cY4+miL1KBNEL1u1Oa4\nu1xM60F330kRQRYepQY9iKA9h5AC0ITUaKlO9nK7ppbQoF0ljtSg1aVO6fd2+WjvGLlq0Mr8\nqUEP9aCHe04gsLoEGrS8MCrHZ4CnBi2uIDXoKs2smzaYB13bU37yQ2rQJxL0DqrZVBp0f/sP\n16A7Nq2kBl186tag8QqGwaJBQ0EWPYJGatCazUypQRuzRiNoFsM06AbftuED0EODVm77PiA1\naBsQ27o35fThFUVZNGh6jfcTQWDrZtwiPFeDllwhm2Rlgh6ko6l5D0j+pXIRTMBCRPzI62Bq\n0LZyQ2rQ71Fg0KAnPTmwYRSId9I1NGhJ295Lg6ZCGXmfCQctkuQzmY+Dn9MzDAPy+2FEYwjq\nqEG7R58hNehXmoga9GeUWTToSfwM/aStSFd3NII8O0aDdmrd9Ql6B8XPcsHLpWG/dvdkiAbd\nY+JwDVojg1ZYUIM+Q+F4L/z7KDNr0GwtfZfztO+LK8d+UmIDc2aIBu0Vn1yJoFG0XIm+bGPb\nXFr2i15Ae8UZmYWpQbsi4D7ofbDa9kHztwj7LsZjMq2qQVcXjjRCatAP5WLGp+3UoB2mL3BB\nqUHfUoMGJY4hZhixe9CMCRfXoN/9pH6P5coE/fwn0KBVq7gwLadBH/uCK04/aQ9GpgYtrmCw\nBj1qXwIVor/HgfVdHMOJWqZBCyZxlxHkWb0GLTPyfZNo290+fTSxPkHvUGjQpIfsK+2nBi3J\n8sLKGvS7T+Zp0M9af/6ZNGiR9tvtzr5EBHs5S2rQezENVNmvRNAE2qnj7tUWQPq8Kryjjg4n\n/wQNupcEdRVP1qDfRLZPvumCUeh3cXSqvKtq0K/qW37WvYtyZYJ2G0I6CDVo2DDPbU2pQWNl\nnaBBS90jXw1aaJyDGV24pQb9jnQPxKzn56UJ+vnPs2cVoCNJ7F0c8BTuMjs1aHH51usWadDy\n8NVTg37j67D2q4yYMmXuqUE/U76GxfseYWrQIpAatMGWGogGvU/iTg26B6lBv/5fQoN+4ctW\n/QQN+ht9GnSvCf4atIZlS05WR9BXImgckBgiCx2NgPt8D4OnaJU31aBHtSqjQWtd2CpPF7b3\nk1FUktSgkSRq63ShEnljIjVof3Ro0Ia7uEJDUoM+WYOWVlSZxg4H4WntDoEra9BjnVRASWYM\n2dovcqxM0M9/F9CgR3sJJVKDPn6RT7QB7+Lova+4nzl60ArvLjXoh1qDNu2Wg8sUlLE+Qe+Q\nDGQ26VANeg9puypJDboDtZ/tpkGjB1BLzFPdoEEbImyufeSGT9WgJT95X5zRatBdBK3FlQia\nhWr16uoAZh90X9QjRWrQrmA1aL1X6jXTt2IXB5pIVySXSxHnz9Sgj2YJ8m5GDdoqccBJcKxM\n0IP5DYFoqcUJ2tFaRNyhAl1stkxuQ7Ti1KCVZb5Pz98HrVlcJmrQhjVPq0E/pA8bQwR9P4nD\nq2eVoMN4TINWFmaxg5W5PTVoL/J742YatEwmkEh3RxFBQx72jtcE+vM0aNgsusyh+6B7c65P\n0B8QmlF7iCjXg+VV7+JQV0haD0+bw7HUoMtP0uZ316ANqdFM7Ls40GHI/TIb2pntQEOLmqhB\nQ2YxBY99F0cnLkTQGPb+UoUXXf3DadDPcwOGwNGD2KrDR9uGoU/XWVuDHn1TAcVTg2YTgUcR\nL5i/BoCfscdkXV6xIs3AaNAtew99F8fnH++ogViZoGXTwfuOq2ip5TRor+cT2o8ffi4D6ddR\nbLac5y2UNd9Ng+5Nbw6LPj4LMz3oYK36ihY1dR80PbcAG/UatC7p1n6Rl7UyQT//MVc8ak8M\nHcYzGnRtkWf4B1xtKczdV4OGzshJdYgGLamfvYaHWYP23NNLFBVnHzRkY2rQQwn6A9hhBcfN\ncIeR1qAri/RRHH0WW6Va23pgcLv4Cx0qv9ShplKQiK5B05eDCxwoQVOhOVoWeCrKuzhqNjis\nvKLA+ARciKBhHHsEdV2K15kA5222oTz1tmnAENhf9FG6Jf43CTEDxAchpAZtyw//qJSkVIxV\nDZcSQ4OmMzeryDZyQmzNXzgFgZUJWjaGBCGcKsgTeUy0Bu2lurTLSuMdfM7voyQ1aFu50zTo\nDfIX4ISfj/Z90B0jsZXSkIRzNWj67DwNuuAncFoKylqZoJ//2CsW8bN6lKLpt4NtWNpRGrTo\nSm6rQYOMIB+oO3kAACAASURBVCfVRlKzXjvT9U0fUpHY+7N9H7Snniom6Iba+TK6UAaT1cnU\noIcS9Ac0ZeJHQF2qE9w+aOXPKtS5seOEomh3tlgjxC8/4C90oX3Q74ZWTGvanEO53Cq77Ql3\n48jLQcojq3ESbB5xNOj662HlZUjiNFyIoFuQDxQVQR4wI7r8I3YfdFcVeIH4UuNO0EWlUD1g\n5Qzstnl4hDSqqAi6teFAaeRtOzShXYNmUkMOvqqcUzVoQe5tvAb9gBfyB370gJUJmpsO+O3p\nmrgdNehnUVPexaHRoA8HnTXoTkG9zBlRgz44qYeDEI8SFckDtKpcIsyuPGgVzG1CGieWONrE\nXSGlyAgUqUGP9KCJbkZvUDeHXd74uFd64rs4BFcCP3RmNGEDmUqRv/y6jgatu2qc1iAXVcj7\nZ2jQtBqoImgk45AAiGxQgwbdscAp0y9P0DsaT/Y9mAB/mRA/ugbIu072XRxI5bJKlOmrTM4a\ntMKTFC0eQDbXOWsWJIQaNOYSyJ+o5q/3Ey8djSMvB/MnJLUUppmW41qDNqgkHeDmemrQcwi6\nRjuUtsc+xNhBZumfT9EnadBVsfCcWE2DlhGC0SNUAN3FwVG+OsowxHOzNGhbuJQatHLh3LEy\nQXMeEDyUOmNyOhB6F40SNFOtziySF1GmdN8H3eXhlnkB2+S9VRGl176cd3bNXrH6zH4Ng8Kl\nsBr0z6GZGrRkMWcHXV/5Zcqy3xuPkcHKBP3ztxY28G/7UVLikAJZEbf9JqG89KNc0GmGSEbA\nJpIevtEnMBzN6+lPJmI6KPjyEAkbodGgkeppzNsHTd3AxIpid8RyIVgvKlooh1Nq0CMJeseG\n+sz19zaV3wDZapdBFGXthkk2WJns+nxa7F0cdaMIuRptS06Q0NgGZccWblnuw0HiQtsz+9NH\nmlCavnRM5SAzgYi1D7oOZ1KDnoVn0x8PVOc/6dpzQGnd5igTvJ1Ft3qJpvAE1eQOdZdNgjXQ\nVn7yakvSMLjq/jb4XIHalN40Terxk2BofiB3NTJmjJANr2ho9R+cq0EXAoHgjlUnRIGQTYPW\nBvNBNOguCOTA0n/Gm6jwjTtkX6TYDg1am+ix2z9Gg3bqb2kLhNKgmyGUGvQggv75W3Ss+faf\nmwb9gO6KXFiD7pzqvAZdpZd3cSgNGigO+nI4fLjQWBq0JWdq0OaMyxP0jrfb1CQUHLEPVxjW\nfdAy6tHbM1SDFg9skwb9qBpIwdBMYTM1aNXh74OyUOFgnIqeZWnhNQzPhJ6JpUF/RsbrX2rQ\ncwj6G9WYbroGPweUZbDpDfM+aI9RsTUfis/+2z658FR+USxBowztvcS2QCWOxv3ra4NXWlU0\nxe2DFnviZQ6HxgQCSn3+gbm3Wfug8bWYxNIEDQwiKIzVYJ8U2PwQ+YvWfdA6kIEhOh6W06CP\nqTfCh8aI0skBm6tBC6OpN1KDtudNDXqkB005yXJ8mu8z89lAmozjT3sXh0xGcHTdfT0czhE8\nQlI4MR0ItwYoiLdNDs0c3fgkP5ioQUNlMCXF0qAxr0Cjcpit1GZcnqB3oJfON/yRn7dt/2Tu\nBvO7OCQ1mqxylziIGU6uXSRoiUPHzw84CmrsljbnXA0azwKeYDRonVHl6Ybc9OMvmAZdfUoN\neg5BA6AWTsiL/Mx9ngVohgC9e848SRYJtuZD8fkLVW+6K3zAFyCvjSLojeRnsN6eNZa3DaBE\n3C3X2KGXZhgNWr4bpDKhfzwCAaU6e2ftXIrUoEcRNDuQtd1be9B4mYezUCrUZXBlRpIY0eq/\ngEs7z1uAo00k7b584kXtXPSmcqdJPluDViUnG25Yf0tbQKlBT/a2VTykWTWP/0C2EBS2NEF/\nw2fkHYPo+hOYHnfOAJeBNcpvQApKgl1Qqwl9U73OLdCg5WXXzjbECApSPUWDFiYhNWimv+1L\nhngMpQZtzrg8Qe9AL51v+MNo3dpPQImcAhJYg1aJuKIC8VPiE29w2+xUVnMrkVJJCK5BoyD6\nm7l0ZA3Tj5wVNejzgsoCFyJoANTC2eXWchR3qgYNulJHkvPVZk3XiYDfB83WcXTG1tagFXm2\n5r0Hx5NvZWioCVRBqUGjtnAWLk3QrAs0YhV8tXZq0KxJhgzCIcGO9ffI+LlOW8TRML6LBq21\npdO9fxUyrL+Fxfpp0B0rLppzpgZNXDSMpQn6G5ZZ0kKfC+1uwGXoctZ1WUVdDo1yqwl9U73O\nzQ4JixcIf6fcmorTnp+W1aDBwdoE+lK0yyBfkpsGzcZEyMmt7NG3k1Vap5kU9mVCmX55gt6B\nXjrf8NLxIUY4DfqQxzuiU4xr1nK7xCFGw0ygIAEwQWwNmtYkdEaVp2WxGQkvDZpV53Cl/ZOz\nKOxjncdVDsGFCBoA5V6OdGtDa9A+BI2sKhThCOCrQZsB3leLrUErih1jAlWOkwbN3t9uztXU\nvpVpn3swU4MeRdCcpzFkFRQttedr0PhwWPldHGAm4KhWRWiKOkznd/Z1Neh+M4TlYMV6adAC\nfkbfAAjyM/D7dAwULcev04LClibob1hmSQvLHKaOx9agXV33rrleZ/7i7gFZvED4O+XWPEqx\ns9cNpOwQXJDkmo9huqiNNuCTCES4hJZk1qCbm5s8P2MqR92hLUG3GSkxBT8FJTQ39/IEvQPv\nOPYIF6OrcX0NmjJC0RN1AnB+jQo7yNCzMaRLgyaXc+SgphmvqUHXsjHULVVyIMG7OavL+aRN\nDXoOQQOg3MuRbq1dg3YZF9Bk3T87S24bv77JvQ3YA1KtWoOid5kG/fzc26802ZJZetNUabsb\nsyv4gIYDaVGTnkv9k4K3ztoMRUfqVu43liZodhSNWAVFS21q0FIU18DepQcygUe1KgJV2vtD\natBsOVixAg0aGMzi4XDIqPop9I2wDitVvWiWfvsGpCCxNEF/wzJLWhhykUHrfTTovkf1auvZ\nGck3pXSGUvpGdabLDWTsEDSfpIUvo0G3C7bGOFLLwS6Z06Ap3UQPZcblCXoHeuUqj8zHt7Bq\n0Mq5Jcchj6sGrZMkBPTaKUIf8pMr6OGTs5OqimTJxJpmvIsG3e9KtbON0aD1frwnLkTQABD3\ncgPOsZlViKdB7188Neh2dyllD48vMz8fo2JxdSq07fYiDyA4b3OrAnV9HnkTqcrrbsrO4KPX\ncxV5R7R1BqGlqZ4gHK7cpQna4Gn0QzRkVtOgrQb0exd1tNkRQxx+r1CrIlB1vD+kBs2WgxUr\nef6o003mc4oFmDofsOVSYUu5ZOPXbDOOzHo6QX/DMktadAdO1fHFNOg6jpTX3snPddbed3Ec\n7WFWUk7faMKCa2nQjdIjBZFPTIEWGu1C7cIWtXyBR/cD5p1FuClyLE/QO+SONHXAZ4Dstukm\nYIf/KM4TWYMW7jXGIVgvaobpc1KFLIVUQibWNCPj4amqr053qgzf4DRokR3WynGv9fWR3Qd9\nlgD9Xa87Qf86YipBA6Dcy5Fu7W006NfgtXpjDWCJQ6MdjJtMsAb9gPiDYlABDPG0t7yicsbZ\ncpzexQEe0GWHUkTdB/3jbCxN0AZPox+iITNHg6Z8b3w4AM0+1kMAORdcRHo1aDiB7eoaloys\nQTvtRlOD8oAOiKBB42fGvoujXLLxa26z/2B5icMySw6p7Z4CuSwspkF32qDHW4moK+3VoMmk\n0OQQTeheN5CyQ3BBAjdwez8VJyyySNXrH/IFcWok4Wg4oYzzylo4DRot0GyJKF33DfgYBL1f\nEJoQb/eWJ5zGx200aN25XYdAhl63Bi1A3dnSwmUaNFKa6rA2MjxOZVUgzVw6VOLWHBHAug+6\nsKP9bMgOzTb+XRxTnZdPpeMI+l+LaNB0C/T0yn006Koi0SXhzkG/Bj1uMoXVoDe8PXtN6G7M\n3uCj0wBB8DFSgy6aUbV0/pwaJXH8axEN2hZEiOIgzGVwZg/C98Zrmq5BA/VhHp9Qg4ZTYa1h\nu7qGJeNq0Ppx7NbhlAu0Q6lBq16oIT2vmhCWCpCU5TBHrxksYcRNwr/x+9f//fnrP3/9+ev/\nTfCgLbPkk/YzrrsDp+pEUA3652xq0Idvsgn9bjcfqCapLMU8DZrwCfCCdBr0iIdBt6aWHTE1\n6FfaEQT9t+f837/+/fXXrz8nEPTxYhDg7Z4atBmkEdjJQzvDSVKD3o9qnMEN2RVjs4qzQ90d\nsMqL1dqEA885qlp+muzAtyI0Isl5doR5wCCC/vev//n5P5GgIVDuZdHrgswqyDRoKIHHWAAn\n6+fLuRo07RylBl0klmeSdKrSd9NmIYrRDLlCeNyKw3qDROFJVA36ByMI+p+//vc/v/74+n/R\nNWhhEi4HVERQDRoL1ed5CM3UK6tODdqY/Kx3cWA/0lpCpUGDgrpUZbdwQVwN+jGGoL+Z+c/v\ne4T/NcGDFvElC0MmcigE1aB/MFKDZn9ScCs9oTp5atBsehhO7+JQbQXZqrfD4lm7NejuTcGV\n910UFFeDfgx6F8e///j6+q9fv/7F8PP5GnT73cm1uKkGzd1zZedZatD7QcWApkhGU33VOVj7\nbMfkEtZUadDtMv/ZR1jRrLA07GsRGvk4ev5Y/klCEpR7yc7Onh66pwYNz9f2x+7xgkCJQ7dq\nDZtYIg36gS5QGrvggJiCiwbdsiCZRbD/epNbR+XfB46yd0XuER+29brLhNfCFb00QXPDSOe9\nIglYFwkq4o4aNDJfK6esuf1TRZva+Bw+qFURqNIKR4sodkT0I07uoUELCBfMgJf7PufwLg6h\nXWga0itQQBEHHP/BVMUU9n160C6OH/z+PcGD9glN8H5FxwU5FM7SoCUFjdOgMX4uGfpYW10p\nNyQsbihygPBqmtTYwgbkUjsFHl6EkwYt4ediFWQ06M9Zj3dx9P/4JVbLvTTo32e9blSxdsrH\nh/XWRGrQhyN7E7KWr65Bo6NFs8qzjQWcOUWDftA3FfeeV2rQcH2q5afKDS4jRWhEkbPr8FPC\nnaD/58DP/zOToCGQQajAhTLfPL6jBr1t0HxtPGiyoMU1aEopNTn/4kxO+6BrAaon9jtMnn4N\nWlAfkZ+aw5KnqXvdZYJquKJHShws7HU/TeeGUX/0qAz6PrihBo21U328ZrUq2tTG5/BBYCk2\no3C0iFI3yXpuIxgeXvugtU1FuUCVB83k3dAzHfbUhoBQPUajTkqteAJiWfom4ecqjjB1Lj5g\nEX5hxvj9NGh8EoBHkXg1jgbd3vsS3OyXBVzqLhMkcdoHrbKF9QlcNegON/bdLcglmzRosznK\nfEMI+q9//fHr1x//+msGQX+gcAo048MkQd9Pg5Zpzazli2vQxCrF2dIeVFGVhwYN6FNwXnF3\nFLs4et1i1fJT5C66pWXpe2nQf+M/rxuFv/8zk6AhUAEYPz1187fA/TRowndUBK+gbbpVa9hs\nQjXo45zf0IcpLM6/3Dlw0KCP/QdH5HocCbojP3FAlD816AL/9evPv6n5P38Of9SbG0Z8u+rj\nS5k/MV+D5u18H5ysQSOVwYT6pSoDP6pWEQRlieJ09ll3lQ3y8K1fgz6GQIqt0Gy535inQSMg\nL8hdgz5uZRL4iGRdI28STtlm17vGsrnU7P99QvwYuuy8OKukIGTxaBtS660o0mNLaxwNuiWM\n6e/i+DCm4Kq7NeijRkU7nNBHpt5pGrSA8dp03ho00HyiCwSxPEF/IBlSyBF782G4gAat346A\nObBkphKLa9CSSsVp8VuOwKF+Dbrk54MTKIsZSZy+Dxr8WoRGFDnrqhTdKBZjaYmDB+WssNOz\no5HX16BVw0zquLCX9wWd161a7uHxGxINmrBBc2WvoanoAkcN+rAwdLflq4CzNWg6ia8GXayr\nxxGiWjo/WPomITpBmOOaFLSIhJWxvAYt3DFmQbUwVtGmNj6Hj1ILswyIo0WU6h/9TNWgH4/3\nIzaanpeMuokatCmjSYPGW+jdfMdxjrgPpLmb2rgKKEFP3WbXu8ayudTs/31ifQ16HEEfK6vL\nTw26PMdGeW+47oMmOp6iUbzec/dBAyVUXgFWA2EM1UbkvFFexvIPqnxAEiZ9RDQ+VLiIBq0b\nZ8SUZ45/cDMNmjyqoiqfd3F8jh9N4BdzFi4atLK76tzt1yI0osgZDTCxGh3H63UIGgTlrLD9\n3dHMdg3ag4xA//TzRdrsCv+ZTqhYgPo16FE+/xANGoP+IlzexdFwV3djvgq4mgb9FgBZR+Q4\nQpSL5Asjd3EMf90oNyn57tH5t3AOqIzlNWj8aDeqhbGONjuCCMyF7ws5CkeLKHVY9CNBxHdx\n7LicBi0RALfm70M1MDe1cRVggp79utHeNZbNpWb/7xPra9DCwozAltZbaNBIZCNMD2PWuzgo\nGsXLWVWDBlznzwfrDRplLneCPu11owqnwDQ+VLiABq03gp3y/JhODXo/qvJyaQ3aFl3ji5i2\nP66iQR9Y2fNGIIWREgeL8aZT/iXb3x3NfAkNWl8hYw7vdQTQoFETU4PW41XARTRo8camRtHY\ncFu4GSGoDsuKEbQY9rqfpnOTkm9LfXwpUwIuoUE746PblX5ZHW12BBFYKKLixuNDdEXu1KD5\n9Ej2a2jQymcDtubvQzMue9e2CAR9uI4DTJ2EZ1KP5e/j99ag4eeToSfU6nSna9DVY87HtDfU\noJExgWzPxsu5iAZd8LNu1ceKJLJspXF6xCDoDxREahofKsTRoNvJ5CNxEBSPuBkS/+NsDZpy\nkno0aFV4y/EsFrLhuWzR9QN53lt/fyyQBg1MNizcbfNoFQ5dtjpLr1sQjKBBUP4l298dtDBf\ng25/AeTn3z42Puf9PMG6vrclFccxxH3E6Ro0sYjcToMmF1qRVUcKNEHUspr8UBLQOjjK0b4N\nd2/HjVmOq4OfRl6aoLlJybemPr7k/fFvTNegmzmzfQ7Xv2g8WIMmNvEfxYNyDL9RatCCJwGw\no/D8EsBbgwa7xR8DNGikG6vuFV3eNTRopoK6qd4OYNFgsnF5mENLE/TPtTTHTZ2EZ1JFmu/j\nszVoZJEGuXK0Bk2oBM2srlMV7QYU0+WGii760UQc789fehOQ6Fa7egiS+GvQ8Dq7HRZ92Qr1\nsY5Iia2swuKlQC5ZsQ+aOIWHFWU7Si7j0PbLE/QHn8nPjxvT+FDBqEFrp9bnCEaK0GQ6S4OW\n4Ggb6nh0Yi8RLhur6+ttlSj1452aiG7pQEDlGQzQoFHb9d0bUoP+fAI9Fq1Df5yAcu6myrqo\nBl02BjWZ2P7uYIXZGnRF0PtAAUbNaA26ITHFFR006D3ME+VvnHN3fH2sYusslqqt3RXCQX8R\nozRoOJ3Uvnc665CTBEG6AqAkAuu4cratnIHVf2oEMO7W0gQNTBCwmXDo40tZGCSWEfpQ0Rl0\nqr15eNY+6LI2OOQ7atCEVMKPdesKAeQ5sgzl1YOrbX0No1raS4MuPUf19EAyaDVoczOZ8nlo\n0EAMC44SwVWWRS1N0D+XUxxDY30OshErOrE9UPlFXzuLg7MmLCjCuziwKhw1aOZ68PgJWvZf\ntumHF5hcy0WCJAHexUEU46FBO4xG5JJdNGjxwBB4jceilifoD14zrm0nttkHODguGrTZfWyP\nH08O16DZi8ZPl7ZpYiE5ajOlPLN70KLk7/PUwkn2pIqqxryLA0ul7Q5PDbpT5gAGKatBy6rx\nG63HMXYdgn7hOhq0LRQ4llFws0eXM/WZzhYo90FrZuQIKi/x0aD5OiE/0+qnyjDmXRy96HUD\nu2lT5B4JHl8VucYQ7xARB3H0UNTSBA2OfWAC4dDHl7IwyEGDFkXTuPOPe1Lna9CFT1lHmyo6\nRo+qvFy6rJJl8P1SIjd1VEsP0aD1JSG5r69Bo0mpaSnphaUJuryUN0ydZBix2Inv4/0adH1f\nWJRVdOlna9DQPog3HN/FwVwPHj8By/5xYXNw4rR9JkhSiAjKNc7q20tcgifCadBFabU8JHTx\n+qJbKZYn6A8UPYuPLC9OctCgUX5W2rjVeYTNLvfdgUNEZnLZwfrUc62ozZTyzP3exYGm0nbH\nUhr0c3jqScG24nG4DkGDoAIwtr872jk1aOwsHRiE16CFdXaSmv4iXDToHgPIYlbSoMHhqYxJ\nYM8CXjttrw+T4HyC5ialiSCZNDIlwGUftICf8f7HPamTNej3BAA7L74GjXv1rE1WUyTw0KCh\neEJZErbuSoxguUxtjRDt3k585skr2MD09bhkvbClCfobDgEYnUcVab6P++yDVq8foiuXLx5j\n2ITaj5QatLCIGnoNGl9ppJbI156VNOiCn6lK+6Lb1xd4NTgcWJ6g31AwrGV4KOHzLg6RTyYq\nHRyPgnyq09J2JFyGMzRomROYGrQ64w4fDZpYVCW562+fT94atMLL5ncCXIagYVCMx82DHlbw\neReH2YDjpTXOwGwNWnMVhQbNuTHQK7CHaQg30KD9HZV3MStp0MdxpXv0BGo/aIgWVXEax9IE\nza1ZJoJk0ogm46x3cRD9j3tSp++DLuss6tZo0OSD4FQsLkLradWLLhGI4UdHtfT6+6A5LjNY\nI0Rj3WdoGu8WHlKS+bcHokEfjswj6N8/f/6GrwftRIOGEYs6dg+1Bu0Q/smLOVuDpipQaNCc\n78GspBuc5nCwpvvUoEnLNXE6QVvq6aYAUg0mDzEjzGhQWwmZfBpB/xDz7w9TuxH0G4qGtAwP\nJW6pQcszo5Br0MLneAA03S3kS7DdhPWrenJjisZCNjyXNcLEUiHBOlrEUhr0++xnhGmbydWv\nmUXQv78GEzQMivG4edDT0HfUoKmIQgqFBl3xs857tACXhhhnHT2EgkwLMqGvBq1vRHo3wmka\ntCAD8C6Od7fu1ySqF5q50HhWWTiJoH9/jSBoJkiTdA4P1qvFHJrOSSoC3v+4J3UFDfo71U01\naDhuOFeD/uxGQHKnBg3ml8RIZxH0P77BZhNgEx2yFMOdwU5YLLKYDGQUFyOz0WxVhxmKDBuZ\nvT25NV/AArbqf5Wuz2bEEHkJLyIk08lM3JoPfBbUcsIqqur2u3q6KcBV0xwkr8ho0NaT2QiW\noH9/DfGgj1D4BMSq5uVK+mjQXHIRGvnBR+KgIwlrOx5sKzajerr4TXcLve0QGjTmqU7RoPeK\ngd6/nAaNFMBXI5ny4psnUzzoDy+nBs3XcJwP1uqPl9ZICbJmV9VNa6aKgnYNWvI4F7QkjFNr\nYmjQiJIwQ4Om78pS7/VaU4PW1gtwOrhVv5SpmKLnEPQT99KgafJ1Au614p7UEhq0aBOdNBSy\nXF7LVowGLRuD/S0Nt8sEDRp23gWjblkNuquC75RIc7HbQw4n5u6DHuBBd/oqfB6R/1Yfn7YP\nWjQ/SqywDxqL5BUWMSspyPBFsprujfugRYZoSgDXrRn7oOsuEa1QP2D2QYuo2WEwIrYT8hBV\nqcD/g8bwptshujxBv6FgWKnj1QGNBo1Wj2RV2tgwkY/E0U87EPa5UvoYrktF7QQLCw+hQWMn\nvohznSOpjMw1OT/o1KDLFtGWg02qzycXDRpIjxKxZgf/8k8S0qAWeXasdYwoobdFenAOfvWR\nnIvxyJegqptMrCnpdA1a4QY+iCG0tS0IzVODFQjm7IPW3hV5J19MgzbW23A0slW/GNxc0Vd+\nF4fKeZUmkfXd6hq0fIU3A2TUQ7vRBoDOFOb1WC6lnVc6DfrVglS05tnG+S4Oe76JGnQ5uCWF\nLU3QGAzdZOgTyv9ZXIPmbmJ4oalA8S4OddkAaZMRTE33Kg2afAptO6YwOAkAitVDaKKieDAp\nGyJ8wEwHETU7DEZkAR+mQYNehrK/VydowShjfV7M8epAHA26JQm+2SV3MST8pwd2N8l1qaid\nYKHrptGg6xYEWgtvY4zXqSoHatDcai7APTVouVEEVidoBtQiz7obHSMqoAZdhep0fsVdjKJs\n7bkaX9A4F1HVECovoNKg2xZs3AKikfUXIbuxID3t1YiKIUdlp46oi2hTDNOgiULEbb00QX8m\npXWYG8JLWd+doUELXNifg6KF7XwNWpIbX3+73fl2Bo3QoN0aOTVoez5mE6CxApaj8cJ08S6K\n8wn6dS2NXmroJiKLpBnrE2tp0ADbgezijqaCCBo04BcfFzapCcQmlHcF0kYWJOnRoK2sQ69Q\nRyyrQVt4QW7E8SjWdasT9OPBKqasz8uFJgasrUFLapHwnx4X0aCZ5+0+qeCKwOiAKSs1aC5z\n/W0/7KFBazkEjreAd3QsT9DbDiANNU9Yd6NjRC2uQZsr1J6rMVeD1ikMcg269yFIQ8ffQ4PW\n2yXxjxw06CYW4sioHOefHT3twFmaoF8rKsbQLsOMLRRzaATrRT9wrxWvSjAeZwDk36kaNKkB\nt2xVu4Fo5b63/2RIDdqer1+DFi/IcGttJQzxLojzCfrxvMaGoKXdJItLsFOUYxdTg36eRvZB\nc6LFCDQVzNSgubCrJgxaRTikPYzH2rECDWEhSJIatADIfDdq0AcXQ3O/FxxxJUEfsTpB/4AW\nobm1zWPlrpEatKiSBhM16JJFBRBr0II9dtixo330acQ4ld8uvHAlbwGoN8BoUSw8Tj7+fpjT\noNkKyg4X5aw5aFc4qjOXIGg8WqUWebZBO1jBR4PujvS25ssjtgYNXrtk5VVHT/B0oHL7atCk\nx6Xv95Aa9KeYpTVoOAoqUrTKBLsiV439uUdYZ1yboA9XaVnmJf1NhWN4IbCW6uoHtiUKfbbU\noN+HibgUKEqsQT/2m/F4+fKYWATdXCKqdvJPS6QGDR4EotCtPr42QStDOgKGIUtN7g4NuuM9\ncrKcqUG/v7S3lY9342vCYFSEtieQcr7/Hrx3wSUJkqQGLQF8yd0atGrSYt4Cknx1ghaADTap\ntEbYNWhezNLZ2LJAatDYd/peD6lB0x4xsBAQdYmJGzBO5bAIq+iPBZ00aFPLIEUdSmE0aFF1\neGTFpi8OqF0WAisQNLXIs5O/YyCYNWjbdhSs3K358ujqcrZC7TkiLT9DwJW1o9Poe82kBi24\nj1+Omn43AAAAIABJREFUPTq9vjmvqEH37SV/5+Dn4IB3cfAhKtbYdca1CVoxJUwJgDSyvrNq\n0LRrxZTIurDb2za1XQMAUuqZ7+IotjkBRREaNNptpLMuskqI0zRoUUubNGhLE5naVKFBK8oH\nk9JkDB1fm6CVIR0BQ6dQnrdZg9bxs4mIFtagjc44dARaP8u78TVhUCoC3G1YRP6kH6I4sBwS\nYg0aCs9s/oDipEWDrpvUYzDCl+ygQduMkBS2OkELwPm8zoPgBzYNuvIbkKw6I1uSmKJBG5vy\nJho0dux4RucXSDXowk5hqyK8pegTgwZdBCXlMLBMgPbrfjw16PMImoiieH+jgxU69kG7eA3H\nS6tJLjVovHqKZel90GzY0+f9cxBq0GSAZnCpufpesAw56TZ17e9KtCnwjlUUU6Vil2S0sauv\naxM03W5sqz75S1UI5zi+MGsfNB624yPkQho04bVzbSE3qljY8DkIVmKb6AYIwyL+HofaQnQE\nHuCkQYMPO/SL+dE06OLw2gTNh3QstmLvq6YwyvM+510cslJuokEzufkOrwlD+i6OuiCmXSXF\n8WlEGvQG6gaKKyINlwcfVM7jClhVB8r8ql1P8CWnBj2QoAVoO/X42WVbWwO7Bg0dx9JL0JLE\nihp0p2NHn2Ii0zfE7+KQpcJzYrxO5RNq0Kbh3h8L0ho07wK/Qt3GmRJEBOiw3D/5atDGEYGt\nrRcnaDIM3R4PsoM76Prkd3EU3b2Vx66tQQ90+uXv4gBhbAYhpPugKTYzuNRsfU+Q1uEmbXUy\nSPXoVWyiadDVerU2QdPtJlmYlQuwVAdIDZoF6MdN0aAlNQDzh9agubVWXrUJ4rnE/syW1kR0\nBB5AadCAY4yMXngro2FbCmNdF9/TSSVjprzItQmaDel4pAZN5B7N3NqArm9+vEld2OE1Yeg1\n6DKCQWzTLRcY5O/iABZG8RVRhlOFENOhdoyJWQW7UranBkAOFM4KwSmZEdDRehlanaAFYNwY\n783wPwA1aMRVxyaKfmHAX+mnX5O5puBCCWdnxm+paP0w4QDQa9CfinQzv+0yPt+67+JgY9g9\nJ/x6KVne5tv+CfJYtKSgXe0QUmpF9YsTNNmXeg4SA9Kghfs6Ta5NXf6RGKpjy2nQVKTSfOZj\nFQkhgCCkSoJ62sQC6M1b+F0cQg260wQiiasGvbVvDAULQd2yS3nQdLvxk1VQC0upYCGAbXZm\noHDoZz5U3N62oYVMBGjpcA1acNu/yoKyDLfaQzUNa2n5XNoYM7QmSi6Q3gcNOMbGdnIO2wwV\nfLpcEsqAaW6hQet7ytAplGfXim70jiDzxN1pTko9aLv1R7JqFMz5/Xe8Bv1uJL7Da8J4R8JC\nI/b+QMJZ3FDMIgLLatDi+kWBlLgMkANZt5c9JZmDHGVdaRcHhq2eXOVZPF+PPUcAGjTad2iw\ng5SNdTByl5uwjYAh+ujyFV+mT9KgkUpULMNmOPSHbubjefDDFg1a2qb9K7f8XRx6x5MrFUu9\nf/LToOVeElZfk/OSBL03EbnK67pWhWAadBF0BdOgn3sqWmeT52ZoFRa0mFVmMmnQQGIJ1CYu\nrEEL8juYQCRx1KDxqKkuRdrYaxM0PjGYKPaVUFALS6lgIaBt/gp01efcLannsVga9E9XfRyP\ns9/FAWQpWAYvFWxvRfDWiZU1aOCrsZ1s2WJp0BXWJmg4/LLcjjN0CuXZnbMPWoZQGvSrq949\nNlKDFk8OgPy/Pxv2QSMZNvKspIQGS2vQklN4HtugOHx03QfNEw9yHjm8OkFDqPhZ4ca4EVKw\nd3EUWeZo0DIzP4vpPA2ajF8VLMNnoFNxVGSbxxLHjbWAT6fsDuZdHEoLdG4olnr/FGEf9IYc\nvyRBmzVomUQsQc+7OCyuDVJEwc7v/6E06M9iWgeGgkaAYuKBPr9ag0YSe6f9gc+qa66eKcY2\n5DysEJThuw+aygEHIHTZaxM0uia3fqMAoC7CcjZYyznv4pAlDqhBf4A9ho7mhg62Z/QXCKwP\npAYtrGFYS+vmEhycE+fEZcG5RRq02mvlS5RhyLs4JEGLpLS1CVobCOKJtketjLBlUZ7d6Ro0\nUSDSbppLl0CSd3edX+mDatCFPq5ulDZSExqiSCPWoCHtz+ZZK8JNejpwjidTvG1QVF4BWpI5\nNtTmQg6vTtAC0PPjc9B0bxHDLA1a+ipd2LYinXJPGEuA2pYECVrPIdKa4O+I3/PeYcKXJauR\nzEmzLDOPJY4ba4Egna4/5PugJRbo3FAkNRO2ab15bBJLgXb6xQmaXOXrkw0/20eUUIMmY01B\nfnRBOfb3Vh4r2+3jv/YtTu0iiN4HEJYjaARoQfEk8k/ZT1xdg9ZykqK+1KCrY5t4lq9N0OIR\nJzo/WoN2Jw+CVQnmPzb7e8O4a/jwsYwsDnSOxRo06HKgE0R/XYfpc4ytemtgBmy3RyC0wDNu\nl/izS2nQPo0jmZaS0tYmaG0giOM5bhmHVljHNkmDNrLqod32/HBRVsKQWtbwXUgNuvKgbWNL\nYAneYnyVhn3Q8BJJglqTqEJSg+ZzIYdXJ2gBFKzj5kHO0aAlLNh6TAfbtoqh+cqJBMU8068c\nMEFv1X9xaYpeZi97iAYN17LHvorI6HFjDVo5UKFFidGglZD1NXKgzXxxgiZX+TF+7Q8W0aCP\nPNolcLQDbi9OUyx06SKnqqrMU655PMpdHHitTCHEt0cVdaiNTw3aXAakQdfDj52ITWXsqiac\n5WsTtHjEmc5DiWjH8YM5GjThKBLMD2nQaBYz5E+8HhM6adC1A6+/NGD60O/i0BYLnOu5C3Ax\nDdpXPWCQGvRADxq5RnVPKSJiNkvrbQ301fUo2o3+xc3RZjVT0kWD3gpnFMnMd3jN/ZSKQBqG\nxbP1N4EGjaZIDVoCeM1ODXogQQtALdTyUzrkuzhsnpiTBk07o/iA0AebKnefy1g8AAsnwC4r\nNWhl3oqgjWMCSKRNXxxoM1+coCnS4ONJ+4jq0qANrg1SwtZ+qdvNZ03y8jOgeSEi2orInTXo\nH5y/D5rYGxNRg95Lcdegxb0rSMdo0NJiylSggcjKoncLZAhA0LrIsjotm8TVAsw6jk/M0qBR\ngHU9D7YEPdOwouLyw8NxH3TvE0fA9KFe2eDDF5IRi4zae2nQ2NS1DeQBGrTIQFFhaxM0epH8\ntVdjnVqty0x8HdtCGjRtw2izGqfNbx80l5nv8HoyvRddtRFYPNt+w4o+xAWkB40GymB9+kCN\n4heqEGcNumoGeYfATU1q0EJmqE5Q3p+OslYnaAHAhRr2RkQujM42wVIBpxUNVR4tp9xAgxbU\nBH5XB5tCs1RrH8GyqUH/fCv27yvzAoeBsE1L/yXzE5EOVija6RcnaJw02DYEckvyFLYZPWe9\na4OUsLVf7qFBjwBB0NpJbE7L7OLoskDgyeuwl+KsQVNaj7CMY/DcWqf13OpUiHWIA6Z2C4QI\nQNDkpUncYb4WIrQiqkkNmgW4Cvm9iwOuSwxg+lR9KqtZZUhHP6yoQZukjudZhKHFtheZGwEG\nZ39xP6cGTWvQkosv2lAWjlxagz5hSWk6IKwG/dgYFUFcMWWJfTQvrEFb1lidytEUUtJ7rUGX\n7C9jhuYUfg450xMaIVkjELQAimWWJ1LhYEgN2sZjqUFDLCu4l02uHjpKEKXT9YevBv2M+mwi\nx3M6lBTchG1F0SKrZa4ekQhdDS5O0H2kYR9R62jQPtTnFTNDXClyK0cQeYXTNGgJEblq0E6N\nuBcz4l0cTxLlTEUmWOEikxq0xkvXGSOb5WsTNHlpPsOM9WrBapbRoJUxoiNAPoitQet+c0Zt\nCOboSlzFe2nQzyRto4htpzXoQ8xStX3vTJEN1yPWJmiheyUAkV5dxZYatBDN0A+tQb/mqkqv\nKM+C7hgz/2U7FgwatOghADAnmIsqxF+D/vmjiV+qlMcGJfZB021vG47YOgwfXp2gBaiv3MDF\nz5OK/higQZte3wl5TLfXoHFLmf5v56rK2y/cMTxnTTuHevFMeg1auGEUya7rjwEatNgOfl3G\nwzbxfj6tk435/m3mixN0H2mUhCke0I8RGrSq+rK/q86frEGrytdwAbicjfP5wbn6amDZpBTf\n1zKMPPWq29oiXKfkAHxUYXo/MwRlgO/ieJ97N5ONdsnzsgBmbYKmPZ6+4qtS0MkFVgPZpvR8\nq94Uz22isufBJTRo8dK2AceIuqQArKu6oAiXJRWw7hh+gi9eq0HjtmDuNl0imVumQTuIvbZc\nlMeSGnRH/d9/RO6VAJwLCA1oYqZ1a9BVXRrvi0Nq0ExRcLi5YRo02zPlGt+4Y5IlRuhBo4Fy\nW9bRan54cnYzhUg06GcdstVrg/4JwCwf4KTQ72g2GYEdXp2geXR6sp9cKoI0adBHuqpr2w8o\nHfHWCG00DFeoX3MkGSJr0F+AJ7uJ1s6CodmqCNrBMw3VoDXOCQiBBk22Ir4WKKYXml6+dUhY\niSE92ukXJ2jFKg+cboIdQY1PdGrQnymhjqPLcrf2i1qDFtXbuFfy8uHEgjkIEsZAnx/bBy1d\nujdhW77LVcFw5xe/4VmfsMVv0D4JIrFfiFiUK0hiIBI8kWShrr4xboEZAQiaXpP7im9KQUYP\neLRXgwZGq27wEp6UToMeMm3KSg/Fq/dBiwQCw1AArPuClwTV2imfvlACIsXQfdA0eQpaRaBB\nV1UQKz4B20BVeCy9M0EfhaxN0E5+G51eP+39NWhRIUKoNOhBjk1bI7B4kOnfR+SmySfHBiXZ\nHS2gsxQ1N9/fAQ7tfzH9YHkXB3EEqhz1AOGvR3ulGrRsstUbuI1D4ANSgzaUZ8uEHF6doHko\nPFk/HurVoIlJrzMSGMKaaBiPPNlmNY12VIMmxCBtPQS1qINNnbdPHatv2YF8h1+s5V0cUmyP\nVpvhiiztFe2DFm8UqTxtzhLi2xOuGrRtREDx4BNXJ2i+e8SZNejToIXyFF/u1n5RatBCB9oS\ngEBpIWeGWKnaW6ejfP1H18uS+LRthA+cJrpi9Ls49Mst4UELSxAUbC2kSOKqQcvPyyb52gQt\nCFR7wTIFeLR/H7SwIlXi50G9Bq2pWA5ogL6dGdGzWw1pSeJjrXH7p6+uxZ7ORNPvdgBSgO6x\nWrLDhSXBGQ7tptOgq694V1LtYBupqUEP9KB9hAAyg37aO2jQxjQSKDToJw061UtXWCwe2AyE\nHUtDbZKlHQtD+8cWwPRShsaqGKtBg+kIen0e2I/IpwM/2Y7twC83kuJTgx5I0DwUnqwfFTlo\n0GxyEYAhPOhdHN0Rw3f6F8/sc5BhxYkatPwxUlEqcK05nNnas9S1DtageTomQWnQat9EFDNp\nyk8N+kSC7gpL7b12tgb9AOb6u6wR3r3TqveUAys2IoOk+mG4Ye4+TI+qi2MrINL+VE+UEE6D\nLrJ4atDHpVL1FiOszNSgxxG0IFDtBTVr8KPX0aDHcR40QH+cGdZdPGbagGN4VWrbPotcY5Fn\neCsokGmOeBr0EY4adJGhHiS2oZoa9EAPmnSvNDC4gMSJ+tJ0a6s9jQRKDXog2hnZSByO5sgn\nR8tixZrRPbZwVjFfYEAN+gDydUSyUqDB+eoSRaNh3hRTuao4aybV2iZBCILmofBk/egoNWh9\na36nb24SyuJAQ03gV2JowGuGzCrdWmNaBchO7Ww7KMrSFSnaB81Z0ByUBFqSWZUa9IkE3RUC\n2XstNWhd9nfaz72uRmNgCsZHeFWaFcM1aHPaH4gGnPSsSyh1zOGrQX8SKJQwKolZg1Y/vYN8\nUwQfGgQgaEGg2gu2GemoiUtoMcSc+igjjKrYUO6hgiHv4jBs9QDWB2g2agumUvc1M6bywhzi\nOm8Egd9ADVoWdpJQTIiytq5xJbR2bYLWCjoEDC4gcaJ6sY5ybbWnkeDYbkX06uI4adDSoPpd\nHJJaIKlSQFF1klaqFO7CZt6qouYlCIUHTRvY1iGtlRzTCjeQ6AndZNuYF5jISik7VlyaahM+\nZwN6fHWC5iEYoPwZLfo1aD65InWRZwENGijE3DeAVIlSC1lJa5tsimrFEYGT2wKUON4GesRu\nymi+hFTxIy1QnUCSoAStNw25b2ybxLiPdCpBT8BGfFNm7q9efH57nzBbsDV/icokRZkTaS5h\nAz6hBWzQFyDxcx4prBDisx1Qkgw2Dc/UY1hZ88FAulSw8T3tUcKnTr4U6/huO185k4T94oDU\noGvUEoeDOf1qJyAjCIK6YSoH5BzrNWhILq6TumjQbZwu8qDFG/T62hmcS4CBAvfcR1eVBG2E\nV25rDVuu0jp52+jHlU73/MHqEodO0CFgED6IE5Z90Nq3CluBt5tdnbShpcHOIYHV065DkmlY\npTFq0ChLQt/M7d2lQUurJfmFKmOUBs3XLElq3gdt2x2UGnSJVTToci55Gbm6Bl2oc179gymA\nSg36Ifw5MOUOaj8N+qG/i4YahLaZBMM0aG1ejKD9wttLadD2usWmG4IKc/IDyHfXHCo4dOxx\nHssYgyy5+Yt6qRLvXlifOfs7LdRuT35gKA52el1hHq6b/td+1deBGScPG0iS0ber3ifor9NW\nylnv4pDN8rUJWq4XmcGujciiLIosD5TMCpoWzxk8tqIG3TYNlNsSH7MZPh+1D/gASak8fe0s\nIujPd9d5Ay6UZSEyDVrUlQNg1aD1MLiLaxO045w0uIDEidZLhcTA490jwQ0np0G7oAbtsl1M\n7kzC7rj9lQ2kJW20YAGsQcNugegQBJJfisuohvIkDVrgLUMHT3oXh+w5xNUJmofElWXPaNFo\n0C39fjZBHVL4Gwm4yD4RHd+sliUS1qD58EJfE/idrMH3BibXwcqLJVVeF79PRCevc3VvnahB\nC/j/HA26aKKt+r/j6gRtCCrMyQ+otVSIYWragfi5c0iXUwvxUmurkLIk9enOAGkRDRrkZzC0\nVlSmRS9BqxpCW7jDnV+KZFT2tOtpatDN+cI3I/KsTdAj9aKmFKQ8YDRvW6VBwy6gzi00eM7w\nMVKDJsReb0B+6zU1aEmezmYOpUFjHrTMOJMR9kynaNAbzAgA1iZoxzlpcAExxoa8PXhHKrBv\ng4ATVVIadG3nSI8UmpDokHDYLgZ53GTKKk1q0FQ42jgkgHVQWqE7QFmoaDRM4lAXZMywZ2oZ\nAS5sdYLm0dKiPKkFtXCxH4XSHmuVEaPBky6zEO32WdcFgaH+gKBEeh+0F1DPjawkNWh5mfAu\nDrMdHRdALSovpAZ9IkEL+keaWZinCF4OXYD4rEghHRYcCihdQcRLLfwZVuzFKjScAdKi+6C5\ngmGn1xUX16BJ96AzHk0NGkgg++nbtQlaOuLs4L1aWM0QPWGLVgq526r5Dfvrz3/hNOjDJ8WL\nxYA1DM3ZE7t+Pq6oQSOj0HXe2ON0whPoEA/UOGsftAhrE7TjnDS4gKj7a3BCWTdWUghXwBP0\nPmiPN6BL0U5Iekj0WSO/MNgdn6FBm8vGNGiZN6xcE/lvFcZq0JqJAR3VvJfBWLEkk2ptkyAE\nQfNQuLJOdPSzi0NeZh3pMDd4BQUeCmhc5Lj7oL8zpAYtcnJbBNOgK+DWybYxdVwAHR7+IM67\nOIDMVydoxTLPZdbkE76LAxmyFb/q63/nL/sd8VLZmdc3hTSXoNGgwZ4d6fGnBi0HFnw06XBP\nxMtbqioDru0kDVqWb22CHqkXNYVoWrd9F4fCGlLDlnkcZg3awRGWAvI6UoM2Yk0NGt7xZDFC\nkAmNTFODHuhBu81JgwtIZGG8VKYsxK3Y8FNNUiLRgu/iaNP31Sabhpgb2N0oRFhnLbsUEWim\nc+pmRXDKELSAmD1oE1MOU4MeSNA8FK6sHx31aNAPgl/p239Y4WWG1KDRIWFhGScb6jPK6x2v\nQffcPsaWD/pui7EyPGtq0PEIWrHMc5k1kGrQXILqNHP/EMtfdv8CGrSECsCeHenxr69Bk8WS\nbmznxImhQSOOT2rQ4wh6pF7UFKJp3S4NmqhG7UEDJjTNPr4VmZL3T30a9BDB6/NxqAbd28y6\nncauPS5YTXHrMH3DVTxgkBr0QA96xJSUnlJk6fWkP2k6+PmNr73C1nlm3WlPtBMyNWhjkTM0\naHJsKNQh6oINc627Q1KDHkjQPBRc6UdHnRo0lVpnJMDDbhEdk0Vdxna2Bk3X4apBs6NQeb2N\nNuT5yivIIlWZYd7FASI16BMJumNU9XTbIA1ajWJqySQOmX8lX/Y0l5AatCHtD5obC+pnUUlC\nd/NR5XDqSoGD5OexcKlEQ7nE2gQ9MvBpCoHLwwITtcghN6SziK/6yNamca2XNqf4ZNCg+S6S\nlwml/3zs16AHBm+1ca97FXJPzW5Ks5q2S0O+i8OcfW2CJuAoJxl0MTU9S8x14sqDBs3WMNIj\nhUpPDdpYZKVB77t9RH60xT/csJOA835VDdpUs+4SFydoQQMpuNKPjkx97hNGAanLLC4RnWCS\nq0P6jdKgPdcKbEjQVayjQdcPgPhEbyQ/H04AG40ur0Gr6mtTER21OEGzEI4qSWYNFBr0UJmm\nmFqtxAFVYvOv8DQqngZmsszhkMTunegmaPe1+gBE4lAU26svFDXDL+zXFdRhhKoYBw1auhIa\n4oPFCXq4O7wBnwTVNBq0c1jcUwSlQVuj3w5zik/01kk4u4RZtFcBlbmSBv1ABA7JOiYSRbCz\n7a+m7daxL+GVrMtSQxSQa9A+/pIKlyXojikpPUWte1p+7vNSRXjPj1qDBn55x6tKzqLmU2rQ\nxiKbfdDEL0ZbV2Ey0jqOJ1iD/hynLtgw17o7ZLIGrXX1zIhA0AJwy7bslBKKyey4kiCpX87U\ne34A0bC+EkEWy2hPDRoIayQY+S4O0CLqAppzP75Ux0OwHRcgyNqvQUuCOCzD8SuQ+eoELR5V\nfGYNLPugobQeU+s5Mfb5UUV09byx+Vc+oUxq0PqkT7QigmI4bRuTtXfefD1gbVpViA2CYvyi\nVy6VJRYXVQxnDUDQw91hIvynDgfSoLcCj0qDZu/3j6M8qGnvqkF3t3IpIqDlgutY754Pfjnd\nPWhK3hCty1JDFEgN+gyCdlQOLOuelp/9VvE6U83PlQZ9Gj8Xhb8/yTVofbRMcgOUskoTXoPe\nu3Ijo+Z6bNa78jCQ0SiZ+bN8bE1SYTGS/rIiiAYNH1+coAWglmnpGTW+iHs0WK3C6nVWfnxk\niQat8KIEVG4Z7WIN2q5nNkWRZHZAdA0ap1ma3TaWoaGxrLLvLcDYw0BRIiiVIGdq0CcSdJ/S\n0KUriArQeS16Ox6751Lu4jikKZxpI9P6LHvQllQwP6acj3T4B2rQLXVpLwS4DSdl6pag4REg\nptc2neVBFf36rl+c5DWZeLc5bYnFRRXDWQMQtEGY0IEc7+hhXm7rMESftTSl2Qe9JwPG+DjK\ng5r2FQuzWY+2StwX7VVAZY7ToCX6AoNGg4b9A9A7r/gZG+iojfxA17+Lw8bPtlYsrBuopZjs\nuyxBd0xJ6SmcDhqu6/akpWkEQN7FAce5I13SDg1aJppiuesvSMoqzTANGlltVCh3cdAjD+t6\nsgIsZiHqqa0DkwqLYfuLUWkoTNKgP/aprnFxghZA7hL6kdE+Vvgyt+aDML01MdZuKp5oE5iU\nkTqDSoO29xfCCnSBozRoWGBQXhxpnKQ3qdbcAP5T2df7Lg6RUAEOCckomaNBU+swMQCvTtCa\ndZ7Nrcgo5Wcugd/I+QBtt9f4MTGtz7K3Ad49HnEDiUY6/MM0aI/IRSbey0oFF1+Ff9qmmvIu\nDoSfBYKZmzW0n483IZFvcYLWCxPmuBgrDzz61eHeaeqxANOgYXdjHOVBTXvPfdBeGnRTF7LW\nMmIGcji4Bg1NbZnsMVODhvk5CXo/ivWXnuo1697EVZwFokEPrZMr/P1piXdxdDdK4ywfBqWx\nbFzldVtzaR+fLFRunWGusaEJx9DT9kEjYTUZbi9O0AKU85LqL0cysryLwyGKEqWWtJthQekn\ngm3WuzhiadDwGeXl9mnQDKD8qjJnaNBgNqkH3dlCkiDueBLjJCDz1Qm6WvWVt3rN/WZ5F4ev\nBXh2rt1MTMsSjgQb5N2L8ssotg8z38URT4NWoE09RYMGCwmkQWN5aE5anKC1woR6K04bhUuq\naZ/WU1TZ1LDhtVugiugGMh7UtAoNGsi9qgbt0MzwXGqKRR21DlsEG/6FGrTYE8UsAQ7JdnEI\n6x0yG2hOuhlBn6NBCxYFYu7WG7B6kRo0VxSsMgzUoNFvYtQqL+VY+PTpZ1BuvAdxkgYtxNnv\n4kgNuvg60I3ZUWjQ9BK5NR/K01Xm3mhzNQ16iHpRC1+iKqZq0A4Sh6QyGeBg9PVPsU/CbsdQ\nP2H+uzgwTgIyX52g66bQVWHut4MGzdxKZqrQquaC0lODrvIKmzc1aChtOz59WGYoJeursrZc\nNxYnaIMwoQMVKhKHS1mri2KfmUd49xfRoPk+oscJ0Dsg3yylQZN+OOcUaCoWRXjnadASnKxB\n00iC5pMbdLHUoHWFvz/N16DBEAWkt6U0aOqzr+tyLQ1a6UmZalZd4+IELYB0CLiSUbUPmnnR\nAV19z2vxLBLHMZ9iz7hJGakznKBB09tQD0gNGj4o3ydht2Oon/B1HO+mWFcQwyHp2eNXJ2gi\ndtXnlkO8D1oWbprtsBD0Mc4UeEd4RfQJMG1q0Ia034CMsy6ZnUutD8tMVBMO9IqqkX3E24HF\nCZpSBvpKfxcDfEISHOHqbRG1W7B796zu0iOes4AExxM0aKgdwCC8W4MeGbvJNOhNVJ29/bHM\nkzRoIw4TgrklP9GoN65K0GpmkYgQ8izqS+PmzCZIJMTbS+WaiB2u3WiZNcY+6Mtq0F1V0KWQ\nhYqtM66wgjQEDh2rHfCmKlV8sjhBY8CFRQMRG+D6Lo7NfqOQkDjIsbhxSSRmqNvTpkEbVhBk\nTNAFpQZtLlSu+Gks8MJX86tvWghiOCQ9e/yaBL37fpp1HihHb9UTvhq03ZHFCRp3j49xplyJ\n6XsNAAAXrElEQVSDNoQZQFpA4pDoMF0atBSpQcvgwzIT1YTjPOhxSIYYvThBo7TgFZyz/i18\n3Nfb8pUaCg9aJK2MASQ46jXo4iq8xEMwCF9Kg4bLlWkBWmt47WiOBm1tRdkQ6qmhAxclaH2s\nYpA+iCy+GjQSDhhx1KBPGHEHtKufWoNWLF48j1RnqzQradAk0/l0uiY21WvQ8M50mSlKHIaQ\nQZSzVKg5vjhB4/j0sHwgObKVpwa9PYZo0Hg4J6mFcn7EhbQZqCeWkdjTEl2YPMvUoM2FqjXo\nuk+HOhL98ekGfJKlZ49flqDhgd45kcVw3gdtlhpIgsYoT1SKNI3G8CdBK3+dTx6gduK+GnR3\nKKptutHbh4Da2ESikvqNqbE4QQ/vQ4l/C8B9H7Qj/EL1PkBh+FcRLQjLkfxelD3wwOQXfeN5\nWQcBNA5jWplTIAavHSk16LfoMMmdOuziEElfU5EE/YJB+iCyeO+DViRioXoXx1C00+KLjDd1\nh8lkkolYpVlJg4Y/i55ol0ITm2o16JafRxJnR8eaKlbxyeIELYB8IDlylrMGjX4TF36AoN0M\nyoyTBt34Tt0/pwpXBH6/uAZtVg3AXJqiYmvQ/R2bGjRYvyTRRTRoKywEfa4G3fCzZofGpHls\npLmTNWjbdhfMGNXG98I6mQ0TNxjZGsWcSIfFCTo1aBLg0FtJg5aRisDJtgceR9s+RqlLpJea\n/o7gNWj5bjIhgcKtzsbp1C3dvnaw5i6sG1JDB5KgXzBIH0SWGBo0zAmxNehiVakED8f5K5mI\nVZpPVGSSCo4XQoV1xmsUqLy7Bf193y6cZJkH6+oIqSoXq48xhz7NQCtQ9FasusjFCVoAucjh\nyFkhNGjE/YynQb95o90HTdBaD+qiRDVonsBsa6yycb6+h8RR1+WmQat3WeyKn21/xlB3wkFN\n0VK8osKrE7ScngW55QigQaOzKJwG/bLy+29jWzgN2sgw2qchXAi6JVZR1fziSzUCraoNfoWt\nAUJ7hoS4guyLE/Twnt69DyZBiRAaNOdBnzxNjo4d7pOpJg/nl2pNK1C9BdBHbyLqU0FE0KLq\nRHyFhwNsnE5JVo4aljiTNLIx19CHJOgXaOkD5g48S2rQYmwlqJSdFcnLOsgMe8KjBm2qH2MB\nhWEoIA0a3fZMNrLMo2wSkVnwXRzCCHd4nGksxzYQNMcXJ2gB5OOI8L+0cVkIDRpxP8No0O9Z\nMYefyaIkwu9hF8cAC1SmtIBeYrKhDI0D6gfwek3Twdxw49wJF8llAz7J0rOHr07QwhWazq3X\nHRUjcnpQtZQGLYTVA9JgqmzVT9BG5oH4uZvAQih+CISXN0ODhrA4QU/SoIlbIoE1aARRNOhD\n7IDu4tAWxCfRFQhJHJYC5fUZ0YgIlFOh0qAFRK/SoKm0J2jQ5RQeJqWYkQT9gk2DxsZuDA0a\nRhgNGtXH5enN1Yk16B2OD/hQqpWt8PY23IdYtRERxM+skylUh5q0Z2vQ38h3cQwjaP3+GKvI\nifnPyNgNokGDCKNBA5Bs53UAo0E7LboqC8ozalUB2Mhm0qABexxE2sAa9CPQuzgup0HrV3ab\nBo2eRr2L1KA1eXeE0KC5RXc89Jx48AK3naHdjNEkBo5GVvxsN7M6EumwMkG73IBlQPu3vAcd\nEPE06B3Gdtuq/6K60KRFp07RoEELVDWoHgXRuilyL4jxVzg7TtGgi7YbU0MHFiZo/d4KsjTD\nqc1Dg1aEoalBe1VH9fbugZYn5PNYZUoj+uqfpH6gj4K0lcFHurF9aobsTg1alOlqEofl9oVV\ng0bzwJnkXup+ATJhKjVoB8DWv3USnRvoja3Xg24G5bS1GF1ZBmvQnU5aatCDCFoi1Q3VoHGI\nCZq7hDNULVPkmRq0qgregjkN5wuZBz2i1p78qUF/ff3+G8f/PgTt8SIqBrQGjUJ6aa4qjRCp\nQbPFHVLP0KABEaJjF4elvj6cq0F/plBq0FVWOUH/fv35/fniQ9COLWbToLFz0sfQMb1TaYgK\nqUHbmnucBk3VKgTRcBM1aGxl+YKSQqYY4rD+W1E9G9xNsqjmxOIELcApepzUSxWMLXf7U4Om\nNWgMkyQOd4IOsBYP1aC7g9DUoD8sPZ+gFRq0D8U8odKgqZQhNGiJFRfSoBHMkXmNVBNDg8aQ\nGrQZZxH0P74hynYutuo/dt5eQXcJ9qpn1EFU4lc/10sddQ3reLisb7JxLBmuzrsGa3ltPltJ\n0+bQeXO1DwKCft4cPEPiEMKoQSMY8y4OnxV6pgZNOjepQTffzOG6QoMecleaLhHXoIXFSG7e\n9Ye799Wgv17EHFqD9hy1hp0SsrG5lgbd9byF3igxYBHndA3a8oTKC/KGO2HfEK5BS+0Irl2l\nBg3WL0mk0KD53HL4bWXzH5rzNGg93/Rp0GN5Z4bMO8KDhmo4a2dnSKQGfeoujj5s1X/sfIXI\nI3LIPmjl2/6w+rsIWlmXouQfTNkHbeVOecMNIGi2MOk+6K5WdfCm2Fv61irsSIJ+ITXoHmBT\nfqYGrSGeTg3aUw6vvvnv4oA0aHemMWrQjW1I6RIN2oyPAGNol6to0IOeJBRALuGmBq2oRaJr\n/ui6OoM7CJqL3el7hCE06A5oxPvpEnTvPujBkszXXovjrxMaUp2sQbew1y02PTXoBv4atJ+u\naX3Uu/gJkUGILFud+6g3i76mm9OxzCAWuXZ9Rnq/AWYJgu4Fp0EjiDyZux/raoGPbWXIYmu3\nV+VX0KCtOHXAjdWgpct/rzclqGboygZXfjOCVgmi7KkNPRVfg/YdbCYfx0uD/sws+XsB42rQ\nRqjexTEAIzVonjn9NGhtSX4aNHKRlyfo6g6MhYcNuJkGDbeswVYLQb89LE11sF5O57mMBj0f\nDhr0DO2KisCE64PZ0cIG8a0IWt3RqUGLjVDc9yBgGhIDNo5BiCxbxTau27opNwkfVKwss6DH\nyrt60AdYJjKjQbtJHBOhd2cGzQ9vDVpZl7Dsz6fUoDFYNWg4kDHVIEwDgm+7j4ZmrUKC22vQ\ndCRs06AxXEqDHuWfemnQshXkthr0FIljpAbdXT0DPqS03QRHi0OrAQ5enqCP+hDNNEE1aEsq\nEloNGhydFoYTwLoPuv/eDu8fpQZtxoCNQ46QetASR819Ft+JoPUb3lODtt2DM4PkmZOnd2TZ\nKrZx61snnAADRujlCbqAfSvYjTXoHn4mc+kkjs41gtOoN+x1Ip9PqUFjcNOgR/YwDknbbV2/\netiBexE0gdSg8VojaNDdXjypQUtkHFRI7bQlNejPN3MPj9WgiRo8NWgQlydobxFYBj8N2qL9\n0tDvgwbmzWwN2llnaS+QLz41aDNk02Geklaiu2NTg+4wvavDU4PutEKbb6AHjWM7gEgWWbaK\nbZzQR514r6NAjwdtSKTD5Qm6D1vzQYbI88V8S9177sTRoAl+nqBBj5Y4hsNJg+7k56EadGcV\ndiRBv2HYf4ePpktp0O/Kvb0bHUH3rg96DbpKlRq0uQ50C/k6GrRjxalBH7G4Bm3af0zD+C6O\nksJma9DOaDV1bBfHjtSgzZBOh3N2UqYGvQZBe2b20qBHaHIWDdq6G9pPgz4fkW2jtaF5ZiAI\n3XSeRHLCHSMi6xIE3Yet+o+cbuBk25C7JkYN2v0WjvObB7jauvMtqkFPuO/mpEGPtgJDatBL\nELRFg0az+GjQjdd6ugbtys++7+5i60O/yLIsqkFP2hnhokGPqp5BatBnEvTSGnQ7u87ToB/H\n7dCyKU8lgonjNA1agCU16NP2rhXw23U6AqlBr0HQnrkvp0E/irctSs0iohKYOCKLlZFtO92D\nphG66VKDPpWg+3CyBj3kDo9Jgy6VFodJP9uDjqtBu3TxqRo02xipQZuRBP3GuRr0xAXaokEf\n6dS4oQMqErNtBHw1aL/dQT4EevYujtSgB+W5PEEvrUFbU5EwaNAFJcv5mU4ydxdHVbchzxgN\n2kmCWEREOFtrAeGpQbtnSIIekjvyiDS9i2MnZY3/rL76yDxT7uJw6livm3iRG+4a1qUGPdF0\nMRgNGsVH512RoCF8WGTstoBVNGi/FriEBx1Bg7aXlRr0EgQ9QoNWzL3YGvRnj93gbVuLaNC9\nbTBVg56C1KAH5bk8QZ+pQavmcSANGt5n9/onvyYD8ayhQfevUiVD28v54GyCphFZ8XPVoIXX\nlxr0jhM16BgPCTSw7YP+nFHws/7SJ/GMqVN2lgnYsYsQdEikBn0mQfeB1KCJKWrwoKfB+qj3\nGwp+Vl/8HA3aFtg4Shz+SA16ggaNVDF0JCRBv0G0MnyKmqTX06C1sHmZUzRo4zZBx5uEoRwt\nF9xYg9aPBU3yyxP0MA2anOaGXRzTGNqoQWttCOZB77AqFJ7b7NwZ+myCpnFlDboYS6lBq00f\nNZHoaR55vvQQtKY1w2rQRgU5cp/GNu4a1hFx9Gc0hQqN1iDoPhAro8iDjog5Escj2C4OVw06\nHlKDPkuDHnw/Ign6jREatE/16lQ0phG0AZP2QQtnFK5BO9rig7NXj5M16K6CUoM+k6AH7oNm\nd3HoSnNLxOC9w8RaS9B71sMx5l0cTojccNfWoIup5O9mJUEPyR15vnz2aKMpfDRoC8K3W1SE\nNu4a1knGfqjQaA2C7oPy7uwHkUfkt23xNvI+Ee5dHIdGitynqUGfuA96KJKg3zCH/BCCa9AB\nH4V7Yta7OKRZjo2UGjQBsQZdJryCBj020+UJeqAGTSC6Bk0TNFnLUFY/m2cqFK2UGrQZF9eg\nwY+yDCySoIfkjjxf9veEYClcgwkVQrVbtdU9lG01Qht3DetSg55nuhiXJWjb+4KGI5gGPcyD\ndkdq0KlBN1mvRdCU2zjhqbPcB/2N1KCNOHv1sGnQfu1wlgZtqjgljgPEjeE6aaJr0B213EmD\nHraLIzXoQEgNegmCds0deb50EfSdNOgKkW2Lbdw1rEsNep7pYmzFPzkij8h72mbdB71/jNxu\nqUGnBt1mvRZB32kfdFhE06CPSA0aB3NBqUGb81yeoFfRoGUSdAANeihusnhcjqAZXFqD3pDP\nshwckqCH5B4zX3we/usj6LFTLDLPRLYttnEXsU4w9EOtvGsQdB9CadBOj2eztpEvuluWoLsf\nyg3NMqlBpwbdZL0WQYfXoL1eoMHZRj5jOPj5llgEnRq0FKlBj8pzdYKW80l0Ddr6U3oNGNuo\nSoa/Yimyl5oEbUZq0GgODhcn6F4+CaVBT5E4qGVg/EvwIvNMZNtiG3cR61KDdje9m09CadBz\nbhJe1YMeLg2ditSgI2jQA+bGpQla5fGF16Afk7bZpQb9yVLkSYkDR2rQP59Nv3VJ49IErfL4\noGRmNhr1oIoHbrqLoxtJ0Gbs1kUUofvabr8iMdskQX/Q5/HZc0eeL2mbDZFti23cRaxjuGDM\nHZqLE3SXx7e3dxAN2gc3ta17P1TkdksNuqMoLw16yB2aqxO0HE3L7itiGA3aBZGJJhZB5z5o\nKVKD/vmcGrST6RDqVuvad5wEbUMo27YkaCfcQ4MWx+tJ0D7oCFkiz5e0TYa68yPZ1iC0cRex\n7pTFJQmawGeKpgY9CYEkjmZ5jtxuZxsnlziKXBfQoEezdhL0G8Q2u9SgZyEOQbcCV0ocOEwE\n7XpLbQZBQ9VaLiElDguiv4vDDTclaC1GetCXI2gGoAY9/LFUKTraznYJSdAG+A6VyPMlbZMh\nNWg3QNaNf7GLFHYNesIlJEE/4dzOkefLPW2zODrDdnH4Y0GJw5fcztCgZ6wxSdA/oBs6NehZ\nGGabwzxKiQOHmKAt24Y9LKBgbzsjP6fEoYX7UpgEbcMo2zy6NwnaDGQfdAR949GtQRtyKdIm\nQf/AO1RR2zZxrEaey4Nsc1mAI7dbbOOuYh0wfobP2yToJ8jpO17imHm3JPJsuYkH7Y9VJI5h\nBnT0rte7OIYgCfoF8h2b6tKUtk29nx2ZaFKDNmIVgh40yLvmj3gXh5fxKXGcDp1tc3ccXafd\nNBj/Y7sKXI6gGYwm6L75I2w7vxmaBH060oO24R62xfplpAn4WDdmkG99Ho6s7fzmqKqUJGgB\nUoOehVvYNqKz15A4Rg3zCR60X5SrKyUJWoAJ+6BzF8cP7mDbkHBpCYIeFyhO0KA9+VlRThI0\nD0O/3IFoRuAGto254XBuw3FX8/VKNZShzXmnatDaRkiCZmEZVDcgmiG4g23XI2j2coZ70F2Y\nu4sjPWhnmObTHYhmBG5h29UkDn6CjNag+zC57VKDdoXtDvEtiGYA7mHbtW4SCibI4F0cnZjd\nduvs4lgCr+F3thmJC+FaoyknSHRc2YNODXom0jYjltCggyK0dSlx8MhdHNOQthmxwi6OqAht\nXRL0EKRtNqRtRoQ2Lq2zIwl6CNI2G9I2I0Ibl9bZkQQ9BGmbDWmbEaGNS+vsSIIegrTNhrTN\niNDGpXV2JEEPQdpmQ9pmRGjj0jo7kqCHIG2zIW0zIrRxaZ0dSdBDkLbZkLYZEdq4tM6OJOgh\nSNtsSNuMCG1cWmdHEvQQpG02pG1GhDYurbMjCXoI0jYb0jYjQhuX1tmRBD0EaZsNaZsRoY1L\n6+xIgh6CtM2GtM2I0MaldXYkQQ9B2mZD2mZEaOPSOjuSoIcgbbMhbTMitHFpnR1J0EOQttmQ\nthkR2ri0zo4k6CFI22xI24wIbVxaZ0cS9BCkbTakbUaENi6tsyMJegjSNhvSNiNCG5fW2ZEE\nPQRpmw1pmxGhjUvr7EiCHoK0zYa0zYjQxqV1diRBD0HaZkPaZkRo49I6O5KghyBtsyFtMyK0\ncWmdHUnQQ5C22ZC2GRHauLTOjiToIUjbbEjbjAhtXFpnRxL0EKRtNqRtRoQ2Lq2zIwl6CNI2\nG9I2I0Ibl9bZcSpB9+Efp9S6PrLdbMh2MyObzgyXpkuCXgnZbjZku5mRTWdGEvTtkO1mQ7ab\nGdl0ZiRB3w7ZbjZku5mRTWfGwgSdSCQSCRZJ0IlEIhEUSdCJRCIRFEnQiUQiERRJ0IlEIhEU\nSdCJRCIRFEMJ+jd2/G9Q/++ObDczfrcfs9V44G2RrcdBO1vxHBDOIOjfrz/Y/7vjN9II2W48\nWoLOVmPxJpDjoeP/bD0KSparGppDEnQ8JEHbkQRtAODYJUGLoSVobHrDGE7QL8f+91cVEtWd\nnJ3+we93S+xNdzyZ7UagnhHtYfD7rfH7+OE5X0sBI1uPgpLlvnTtNpqgP7PlaT94Dvx+X7xb\n6t1kubApkAStx5GgocbL1iOhZLkvXbtNkTiADv1cyW/4+43x+6tsjnquZLsRgDkmW41CQ9Bf\nZcNk65FQstyXrt3GE/QrZvp8309lp0P4LLJJ0AYkQeuRBN0FJct96dptvAb9Ba0tv8s/zfcb\n4/cTMEFnuzEA2y1bjQRD0Nl6NJQs96Vrt1EEXcySxnS4p7PTv0F50NluBMAh9zmRrYaj9oy/\njg2TrYfDwnJfunabQdCN8/+7TNN8vzP2NvrcJKzPZbuBAIfcV7Yaj8M+aGR1y9YDYWG5L127\nDZM4Ds/P1GvLO4b/Ovw7fr81DgT92Wb3PpTtRgIactlqIhyecvs0zudrth4KC8sFIehEL3L8\nJxJ3RxJ0WCRBJxJ3RxJ0WCRBJxJ3RxJ0IpFIBEUSdCKRSARFEnQikUgERRJ0IpFIBEUSdCKR\nSARFEnQikUgERRJ04rr49av9lEgshBy3iesiCTqxOHLcJu6AJOjEkshxm7gufmj5P3/++uf3\np3/++r+vr//79efZRiUSciRBJ66Lb4L+6/evX7/++fenv3798fX15zdLJxKrIAk6cV18E/S/\n/vaZ//rz+9N///r3//7619k2JRIKJEEnrotvWv7j13++vv7zI3bkO4wTqyEJOnFdfNPy8/bg\nz9///fXrf0+2KJFQIQk6cV0kQScWRxJ04rqoJY4//kiJI7EUkqAT18Xz1uCff329bxL++9d/\nn21TIqFAEnTiumi32f3x66+zjUok5EiCTlwXzwdV/lk8qPLPs41KJORIgk4kEomgSIJOJBKJ\noEiCTiQSiaBIgk4kEomgSIJOJBKJoEiCTiQSiaBIgk4kEomgSIJOJBKJoEiCTiQSiaBIgk4k\nEomgSIJOJBKJoEiCTiQSiaD4/87RXKHCQFeFAAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "ggplot(total,aes(x=idx,y=total)) + geom_point(color = \"firebrick\", shape = \"diamond\", size = 2) +\n", + " geom_line(color = \"firebrick\", linetype = \"dotted\", size = .3)" + ] + }, + { + "cell_type": "markdown", + "id": "38e65fd5", + "metadata": {}, + "source": [ + "We want to analyse total no of product in monthly basis.Thus, we find the mean of total no of product in a month and draw a bargraph" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "294dde87", + "metadata": {}, + "outputs": [], + "source": [ + "index = seq(start_date,end_date,by ='month')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "7542d95e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " total\n", + "2020-01-31 41.03847\n", + "2020-02-29 40.91568\n", + "2020-03-31 39.27424\n", + "2020-04-30 37.63589\n", + "2020-05-31 38.75129\n", + "2020-06-30 38.75744\n", + "2020-07-31 38.35212\n", + "2020-08-31 40.43712\n", + "2020-09-30 38.90043\n", + "2020-10-31 37.99855\n", + "2020-11-30 41.20759\n", + "2020-12-31 38.46355" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAMAAABR+ye1AAAAOVBMVEUAAAAzMzNNTU1ZWVlo\naGh8fHyMjIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PD///8Yrk7HAAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3c62KTB66GUde7tPQww5D7v9hNSiEnR0Sx4tcK\nSz8o0CmP/EVZ43Lo4cYYY8xVziG9gDHGmNMDaGOMudIBtDHGXOkA2hhjrnQAbYwxVzqANsaY\nKx1AG2PMlQ6gjTHmSue1QP9vZqZ+nLeeJXsuWXPLnkvWtOj4pPcEdHOW7LlkzS17LlnTouOT\n3hPQzVmy55I1t+y5ZE2Ljk96T0A3Z8meS9bcsueSNS06Puk9Ad2cJXsuWXPLnkvWtOj4pPcE\ndHOW7LlkzS17LlnTouOT3hPQzVmy55I1t+y5ZE2Ljk96T0A3Z8meS9bcsueSNS06Puk9Ad2c\nJXsuWXPLnkvWtOj4pPcEdHOW7LlkzS17LlnTouOT3hPQzVmy55I1t+y5ZE2Ljk96T0A3Z8me\nS9bcsueSNS06Puk9Ad2cJXsuWXPLnkvWtOj4pPcEdHOW7LlkzS17LlnTouOT3hPQzVmy55I1\nt+y5ZE2Ljk96T0A3Z8meS9bcsueSNS06Puk9Ad2cJXsuWXPLnkvWtOj4pPcEdHOW7LlkzS17\nLlnTouOT3hPQzVmy55I1t+y5ZE2Ljk96T0A3Z8meS9bcsueSNS06Puk9Ad2cJXsuWXPLnkvW\ntOj4pPcEdHOW7LlkzS17LlnTouOT3hPQzVmy55I1t+y5ZE2Ljk96T0A3Z8meS9bcsueSNS06\nPuk9Ad2cJXsuWXPLnkvWtOj4pPcEdHOW7LlkzS17LlnTouOT3hPQzVmy55I1t+y5ZE2Ljk96\nT0A3Z8meS9bcsueSNS06Puk9Ad2cJXsuWXPLnkvWtOj4pPcEdHOW7LlkzS17LlnTok/n/55M\n6x9PP1BAN2fJnkvW3LLnkjUt+nQAPbTI0I/z1rNkzyVrbtlzyZoWfTqAPmuePr7e87v4pD9g\nL5wla27Zc8maFn06gD5rAP02s2TNLXsuWdOiTwfQZ83lgT6zmP6AvXCWrLllzyVrWvTpAPqs\nAfTbzJI1t+y5ZE2LPh1AnzWAfptZsuaWPZesadGnA+izBtBvM0vW3LLnkjUt+nQAfdYA+m1m\nyZpb9lyypkWfDqDPGkC/zSxZc8ueS9a06NMB9FkD6LeZJWtu2XPJmhZ9OoA+awD9NrNkzS17\nbuFky/Pc80TTDxTQgE7Okj23cLLlee55oukH2gT6+M8XXwbQ1z1L1tyy5xZOtjzPPU80/UB7\nQP8D8/G71IC+2lmy5pY9t3Cy5XnueaLpB9oC+ngD6PQH7IWzZM0te27hZMvz3PNE0w+0A/Tx\nBtDxD9gLZ8maW/bcwsmW57nniaYf6FlA/3I7P/zHyjnB5Xk/4BUWjXnpOM7peTdP9IdAH2+8\ng87/P+oLZ8maW/bc8n5vy/Pc80TTD/TlQH93GdALZsmaW/bcwsmW57nniaYfaAPorwPoFbNk\nzS17buFky/Pc80TTD/TlQH9/Gw3oBbNkzS17buFky/Pc80TTDxTQgE7Okj23cLLlee55oukH\n+gqg/UnCBbNkzS17buFky/Pc80TTD7QJ9Ik5rw/ot5kla27ZcwsnW57nnieafqCABnRyluy5\nhZMtz3PPE00/UEADOjlL9tzCyZbnueeJph8ooN8Q6Iu/trtJ39VLZ8meWzjZ8jz3PNH0AwU0\noJOzZM8tnGx5nnueaPqBAhrQyVmy5xZOtjzPPU80/UABDejkLNlzCydbnueeJ5p+oIAGdHKW\n7LmFky3Pc88TTT9QQAM6OUv23MLJlue554mmHyigAZ2cJXtu4eQVi4aOdMsTTR8ooAGdnCV7\nbuEE0E8G0GcNoN9mLnJXAx+85p6XP5evs4UTQD+ZM18foC99H2cWAX03Ax88QD+cc18foB/P\nma8P0Je+jzOLgL6bgQ8eoB/Oua8P0I/nzNcH6Evfx5lFQN/NwAcP0A/n3NcH6Mdz5usD9KXv\n48wioO9m4IMH6Idz7usD9OM58/WlDxTQzSKg72bgg5e+/xfOFk4A/WTOfH3pAwV0swjouxn4\n4KXvv5t7y9pEEdCP58zXlz5QQDeLgL6bgQ9e+v67ubesTRQB/XjOfH3pAwV0swjouxn44KXv\nv5t7y9pEEdCP58zXlz5QQDeLgL6bgQ9e+v67ubesTRQB/XjOfH3pAwV0swjouxn44KXvv5t7\ny9pEEdCP58zXlz5QQDeLgL6bgQ9e+v67ubesTRSvHeh1TzR9oIBuFgF9NwMfvPT9d3NvWZso\nAnq4mD5QQDeLgL6bgQ9e+v67ubesTRQBPVxMHyigm0VA383ABy99/93cW9YmioAeLqYPFNDN\nIqDvZuCDl77/bu4taxNFQA8X0wcK6GbxuoFOf7YBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBA\nN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKg\nh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd\n1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MH\nCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpc\nBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0i\noKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi\n+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVA\nh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6\nWQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9\nXEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDPR/o8+bE\nC3o/xYu/tgsX3/UH73TuLWs/Q/Hne31jOe+gXzTeQVc176DDRe+gh4vpAwV0swjoqgbocBHQ\nw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4Cu\naoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kD\nBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0u\nAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR\n0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAx\nfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqg\nw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHd\nLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4Ae\nLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRV\nA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8o\noJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR\n0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uA\nrmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vp\nAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAd\nLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhm\nEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRw\nMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsa\noMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB\n3SwCuqoBOlwE9HAxfaAdoI9f5v5fAd1ONXdtT/qzDdDhIqCHi+kDbQB9/PeL4/dvALqbau7a\nnvRnG6DDRUAPF9MHCuhmEdBVDdDhIqCHi+kDbQD9TWlAvz7V3LU96c82QIeLgB4upg/0LKB/\nuZ0X/WPPzokXdN4PeE3Fi7+2Cxff9QfvdO4taz9D8ed7fWO5FwD99RcHvYN+faq5a3suWxz4\n4KXfoHRzb1mbKHoHPVxMH2gL6Bs/xQHosgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QBtA+10c\ntwPoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QBtA+5OEtwPoqgbocBHQw8X0gXaAPj3n9S/8\nGXd+EdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpc\nBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0i\noKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi\n+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVA\nh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6\nWQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9\nXEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiq\nBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5Q\nQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEi\noIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYB\nXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfT\nBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6\nXAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDN\nIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjh\nYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1\nQIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IEC\nulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcB\nPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAz0f6PPm\nxAt6P8WLv7YLF9/1B+907i1rP0Px53t9YznvoF803kFXNe+gw0XvoIeL6QMFdLMI6KoG6HAR\n0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uA\nrmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vp\nAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAd\nLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhm\nEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRw\nMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsa\noMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB\n3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uA\nHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0\nVQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwf\nKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhw\nEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeL\ngK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg/0NNCH+wPo+wPoqgbocBHQw8X0gQK6WQR0VQN0\nuAjo4WL6QE8D3Znz+hf+jDu/COiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAnwf6o5/iODWA\nrmqADhcBPVxMH+izQH/0c9AnB9BVDdDhIqCHi+kDfRbo4+G/Hw6fPn84/AfQ9wfQVQ3Q4SKg\nh4vpA30W6C/vnP84/H3z+fAB0PcH0FUN0OEioIeL6QOtgP778Oc/fwX0vQF0VQN0uAjo4WL6\nQJ8F+rfDX58Ov978B9APB9BVDdDhIqCHi+kDfRboW5k/3P4a4e+Avj+ArmqADhcBPVxMH+iz\nQN/8/evNze+Hw8cf+AzoTqq5a3vSn22ADhcBPVxMH+jzQL90zutf+DPu/CKgqxqgw0VADxfT\nBwroZhHQVQ3Q4SKgh4vpA30W6G+/OHg8Avr+ALqqATpcBPRwMX2gp4E++q/ZPTeArmqADhcB\nPVxMH+hpoP+85/OfgL4/gK5qgA4XAT1cTB/oaaBvXvAHVAD9ilRz1/akP9sAHS4CeriYPtBn\ngX7xnNe/8Gfc+UVAVzVAh4uAHi6mD/R5oD9//PVw+PXjZ0A/GEBXNUCHi4AeLqYP9FmgP/37\nC4XHT4C+P4CuaoAOFwE9XEwf6LNA/3748IXmTx/u/VHv4/Hr77n79ldAt1PNXduT/mwDdLgI\n6OFi+kCfBfrbLxLe/WLh8d8vjt+/Aehuqrlre9KfbYAOFwE9XEwfKKCbRUBXNUCHi4AeLqYP\ntPNTHID+H6DrGqDDRUAPF9MH+izQz/wi4QOgf7mdm7PmxAs67we8puLFX9uFi+/6g3c695a1\nn6H4872+sdyLfpvd8cY76HNSzV3bc9niwAcv/Qalm3vL2kTRO+jhYvpAnwf65AAa0FUN0OEi\noIeL6QPtAX18+AWgu6nmru1Jf7YBOlwE9HAxfaDPAn3qPzd6fKQ0oLup5q7tSX+2ATpcBPRw\nMX2gp4E+/Z8bPT5+Gw3obqq5a3vSn22ADhcBPVxMH+hpoE/+50aPx3//CKE/SfjqVHPX9qQ/\n2wAdLgJ6uJg+0B/+FMcP57z+hT/jzi8CuqoBOlwE9HAxfaDPAv3iOa9/4c+484uArmqADhcB\nPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjo\nqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+\nUEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDh\nIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4W\nAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X\n0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoB\nOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQ\nzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo\n4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBX\nNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSB\nArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4X\nAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI\n6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriY\nPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q\n4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBu\nFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAP\nF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqq\nATpcBPRwMX2ggG4WAV3VAB0uAnq4mD7Q84E+b068oPdTvPhru3DxXX/wTufesvYzFH++1zeW\n8w76ReMddFXzDjpc9A56uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCr\nGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpA\nAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeL\ngB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkE\ndFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxM\nHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbo\ncBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3\ni4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCH\ni+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3V\nAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK\n6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE\n9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKg\nqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6\nQAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCH\ni4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZ\nBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1c\nTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG\n6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBA\nN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mD7QH9PHrl18G0K9KNXdtT/qzDdDhIqCHi+kD\nbQH91eW7LwDdTTV3bU/6sw3Q4SKgh4vpA+0AfbwBNKDLGqDDRUAPF9MH2noHDWhA1zVAh4uA\nHi6mD/QsoBNcRL4AAA6kSURBVH+5nRf8Y8WceEHn/YDXVLz4a7tw8V1/8E7n3rL2MxR/vtc3\nlvMO+kXjHXRV8w46XPQOeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKg\nqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpA30F0P4k4etTzV3bk/5sA3S4COjhYvpAe0CfmvP6\nF/6MO78I6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUA\nHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwro\nZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0\ncDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCr\nGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpA\nAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeL\ngB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkE\ndFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxM\nHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbo\ncBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3\ni4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCH\ni+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3V\nAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK\n6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE\n9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKg\nqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6\nQAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCH\ni4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZ\nBHRVA3S4COjhYvpAzwf6vDnxgt5P8eKv7cLFd/3BO517y9rPUPz5Xt9YzjvoF4130FXNO+hw\n0Tvo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCb\nRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDD\nxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5q\ngA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMF\ndLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4C\neriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQ\nVQ3Q4SKgh4vpAwV0swjoqgbocBHQw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9\noIBuFgFd1QAdLgJ6uJg+UEA3i4CuaoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDD\nRUAPF9MHCuhmEdBVDdDhIqCHi+kDBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0s\nArqqATpcBPRwMX2ggG4WAV3VAB0uAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4u\npg8U0M0ioKsaoMNFQA8X0wcK6GYR0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUD\ndLgI6OFi+kAB3SwCuqoBOlwE9HAxfaCAbhYBXdUAHS4CeriYPlBAN4uArmqADhcBPVxMHyig\nm0VAVzVAh4uAHi6mDxTQzSKgqxqgw0VADxfTBwroZhHQVQ3Q4SKgh4vpAwV0swjoqgbocBHQ\nw8X0gQK6WQR0VQN0uAjo4WL6QAHdLAK6qgE6XAT0cDF9oIBuFgFd1QAdLgJ6uJg+UEA3i4Cu\naoAOFwE9XEwfKKCbRUBXNUCHi4AeLqYPFNDNIqCrGqDDRUAPF9MHCuhmEdBVDdDhIqCHi+kD\nBXSzCOiqBuhwEdDDxfSBArpZBHRVA3S4COjhYvpAAd0sArqqATpcBPRwMX2ggG4WAV3VAB0u\nAnq4mD5QQDeLgK5qgA4XAT1cTB8ooJtFQFc1QIeLgB4upg8U0M0ioKsaoMNFQA8X0wcK6GYR\n0FUN0OEioIeL6QMFdLMI6KoG6HAR0MPF9IECulkEdFUDdLgI6OFi+kAB3SwCuqoBOlwE9HAx\nfaCAbhYBXdUAHS4CeriYPtDXAH38MoB+Vaq5a3vSn22ADhcBPVxMH+grgD5+/wLQ3VRz1/ak\nP9sAHS4CeriYPlBAN4uArmqADhcBPVxMHyigm0VAVzVAh4uAHi6mD/QsoH+5nZf+Y8YYY145\nmXfQd/9PMfTjvPUs2XPJmlv2XLKmRccnvSegm7NkzyVrbtlzyZoWHZ/0noBuzpI9l6y5Zc8l\na1p0fNJ7Aro5S/ZcsuaWPZesadHxSe8J6OYs2XPJmlv2XLKmRccnvecrgB79k4R3iwz9OG89\nS/ZcsuaWPZesadHxSe/5GqAfztQiQz/OW8+SPZesuWXPJWtadHzSewK6OUv2XLLmlj2XrGnR\n8UnvCejmLNlzyZpb9lyypkXHJ70noJuzZM8la27Zc8maFh2f9J6Abs6SPZesuWXPJWtadHzS\newK6OUv2XLLmlj2XrGnR8UnvCejmLNlzyZpb9lyypkXHJ70noJuzZM8la27Zc8maFh2f9J6A\nbs6SPZesuWXPJWtadHzSewK6OUv2XLLmlj2XrGnR8UnvCejmLNlzyZpb9lyypkXHJ70noJuz\nZM8la27Zc8maFh2f9J6Abs6SPZesuWXPJWtadHzSewK6OUv2XLLmlj2XrGnR8UnvCejmLNlz\nyZpb9lyypkXHJ70noJuzZM8la27Zc8maFh2f9J6Abs6SPZesuWXPJWtadHzSewK6OUv2XLLm\nlj2XrGnR8UnvCejmLNlzyZpb9lyypkXHJ70noJuzZM8la27Zc8maFh2f9J6Abs6SPZesuWXP\nJWtadHzSewK6OUv2XLLmlj2XrGnR8UnvCejmLNlzyZpb9lyypkXHJ73n+UAPzS/Z/Hsbj3N0\nPM7p8US7A+j3NB7n6Hic0+OJdgfQ72k8ztHxOKfHE+0OoN/TeJyj43FOjyfanTDQxhhjnhtA\nG2PMlQ6gjTHmSgfQxhhzpQNoY4y50gG0McZc6VwG6ONz3/9lqr+ak+NxTs/x6Vc9zFfP84/I\nQ+1OFOjjv18891dzco7PPBuP89XzFGgP87Xzjdz733X/rx5qZwC9bwA9PoCem+ODvzz4uofa\nnssB/e+/xRxvHv3bzOOPj4/Xj+b47QHdPdH7f9Pj7M9jLJ5+98lvm6dzvP+Vr5/0D38Cw0Pt\nzMWA/n7/X005+fdOfts8mm8P8NuT9P935w+gx+Y+0KeeqYfamsv+FMeJj8V3r4+nv20ez/Hm\n4VN6fP0eZ39OY+JhvmKeAH3z8Hl5qK25IND//uvO92/f/S0fr8Ycv30J6LkB9NgAenQu+HPQ\nN6feQR8ffvHk2+bxHL/Os/9O7nG+Yk4+Tg/zNfMDoD3U3rw50A/u/gnQpz9IPl7FVO+gPc7+\nnDzQ73/Dw2zP43fGN/efl4fanIsC/eSnOI4P/zdPvm2ezN2j+/6LhI//nsfZmZMHeuNhvnru\n/T7oZ/5Pz0N9+bz9T3Hc+8NCj99Bf/uX9Zt7f7n/bfN07gH9/bfZffsuj/M1c+pAPcxz5u4R\n3T2z79/0UFvjv8Wxdly0Me99AL12AG3Mex9Arx1AG/PeB9DGGHOlA2hjjLnSAbQxxlzpANoY\nY650AG2MMVc6gDbGmCsdQJv3NocTR33q+4y5+nG35r0NoM27GXdrfoYBtFk57ta8t7nF+HD4\n9Nvh+PH2m58+HH77CvTn3w+H3z/f3Px2+O/NzX8PH8J7GvPDAbR5b/MV6OPhy3wR+vPtV377\nB+h/vuvXL991+8WHW6WNue4BtHlv8xXoD59v/jwcb24+fnmn/PnD7ff9cev1x8Oft1/7+6/D\nx/SexvxwAG3e2/z7Uxz/fu3X2699+vq1f/7ubzf++8NmywDavLf5CvSpr32dL9/863D4K7qj\nMS8aQJv3NoA272YAbd7bPGT58U9x/DPHX3/1UxxmwQDavLd5CPQft79c+M8vEn68/XXBv25/\nd90fh7//PvyR3tOYHw6gzXubh0Df/Ta7f752OPz362+z+/XwOb2oMT8aQJv3Ng+Bvvn027c/\nqPLp98Phw3++/0GV37JrGvPjAbQxxlzpANoYY650AG2MMVc6gDbGmCsdQBtjzJUOoI0x5koH\n0MYYc6UDaGOMudIBtDHGXOkA2hhjrnQAbYwxVzqANsaYK53/B0VBcS36VdqeAAAAAElFTkSu\nQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "x<- as.xts(total, dateFormat =\"Date\")\n", + "(monthly<-apply.monthly(x,mean))\n", + "ggplot(monthly, aes(x=index, y=total)) + \n", + " geom_bar(stat = \"identity\", width=5) " + ] + }, + { + "cell_type": "markdown", + "id": "945feffd", + "metadata": {}, + "source": [ + "## DataFrame\n", + "Dataframe is essentially a collection of series with the same index. We can combine several series together into a dataframe. \n", + "For example we are making dataframe of a and b series" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "88a435ec", + "metadata": {}, + "outputs": [], + "source": [ + "a = data.frame(a,row.names = c(1:a1))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "c4e2a6c1", + "metadata": {}, + "outputs": [], + "source": [ + "b = data.frame(b,row.names = c(1:b1))" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "2bb5177c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 2
ab
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" + ], + "text/latex": [ + "A data.frame: 9 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & a & b\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like \\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\t5 & 5 & Python\\\\\n", + "\t6 & 6 & and \\\\\n", + "\t7 & 7 & Pandas\\\\\n", + "\t8 & 8 & very \\\\\n", + "\t9 & 9 & much \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 2\n", + "\n", + "| | a <int> | b <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "| 5 | 5 | Python |\n", + "| 6 | 6 | and |\n", + "| 7 | 7 | Pandas |\n", + "| 8 | 8 | very |\n", + "| 9 | 9 | much |\n", + "\n" + ], + "text/plain": [ + " a b \n", + "1 1 I \n", + "2 2 like \n", + "3 3 to \n", + "4 4 use \n", + "5 5 Python\n", + "6 6 and \n", + "7 7 Pandas\n", + "8 8 very \n", + "9 9 much " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df<- data.frame(a,b)\n", + "df" + ] + }, + { + "cell_type": "markdown", + "id": "6531fe0e", + "metadata": {}, + "source": [ + "We can also rename the column name by using rename function" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "8f45d3a5", + "metadata": {}, + "outputs": [], + "source": [ + "df = \n", + " rename(df,\n", + " A = a,\n", + " B = b,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "0efbf2d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 2
AB
<int><chr>
11I
22like
33to
44use
55Python
66and
77Pandas
88very
99much
\n" + ], + "text/latex": [ + "A data.frame: 9 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like \\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\t5 & 5 & Python\\\\\n", + "\t6 & 6 & and \\\\\n", + "\t7 & 7 & Pandas\\\\\n", + "\t8 & 8 & very \\\\\n", + "\t9 & 9 & much \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "| 5 | 5 | Python |\n", + "| 6 | 6 | and |\n", + "| 7 | 7 | Pandas |\n", + "| 8 | 8 | very |\n", + "| 9 | 9 | much |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like \n", + "3 3 to \n", + "4 4 use \n", + "5 5 Python\n", + "6 6 and \n", + "7 7 Pandas\n", + "8 8 very \n", + "9 9 much " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "id": "8ac0204f", + "metadata": {}, + "source": [ + "We can also select a column in a dataframe using select function" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "88b51fdc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column A (series):\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 1
A
<int>
11
22
33
44
55
66
77
88
99
\n" + ], + "text/latex": [ + "A data.frame: 9 × 1\n", + "\\begin{tabular}{r|l}\n", + " & A\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t1 & 1\\\\\n", + "\t2 & 2\\\\\n", + "\t3 & 3\\\\\n", + "\t4 & 4\\\\\n", + "\t5 & 5\\\\\n", + "\t6 & 6\\\\\n", + "\t7 & 7\\\\\n", + "\t8 & 8\\\\\n", + "\t9 & 9\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 1\n", + "\n", + "| | A <int> |\n", + "|---|---|\n", + "| 1 | 1 |\n", + "| 2 | 2 |\n", + "| 3 | 3 |\n", + "| 4 | 4 |\n", + "| 5 | 5 |\n", + "| 6 | 6 |\n", + "| 7 | 7 |\n", + "| 8 | 8 |\n", + "| 9 | 9 |\n", + "\n" + ], + "text/plain": [ + " A\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5\n", + "6 6\n", + "7 7\n", + "8 8\n", + "9 9" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cat(\"Column A (series):\\n\")\n", + "select(df,'A')" + ] + }, + { + "cell_type": "markdown", + "id": "45397ec4", + "metadata": {}, + "source": [ + "We will extract rows that meet a certain logical criteria on series" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "010bcba8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 4 × 2
AB
<int><chr>
11I
22like
33to
44use
\n" + ], + "text/latex": [ + "A data.frame: 4 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I \\\\\n", + "\t2 & 2 & like\\\\\n", + "\t3 & 3 & to \\\\\n", + "\t4 & 4 & use \\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 4 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 1 | 1 | I |\n", + "| 2 | 2 | like |\n", + "| 3 | 3 | to |\n", + "| 4 | 4 | use |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "1 1 I \n", + "2 2 like\n", + "3 3 to \n", + "4 4 use " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A<5,]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "082277db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\n", + "
A data.frame: 1 × 2
AB
<int><chr>
66and
\n" + ], + "text/latex": [ + "A data.frame: 1 × 2\n", + "\\begin{tabular}{r|ll}\n", + " & A & B\\\\\n", + " & & \\\\\n", + "\\hline\n", + "\t6 & 6 & and\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 1 × 2\n", + "\n", + "| | A <int> | B <chr> |\n", + "|---|---|---|\n", + "| 6 | 6 | and |\n", + "\n" + ], + "text/plain": [ + " A B \n", + "6 6 and" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df$A>5 & df$A<7,]" + ] + }, + { + "cell_type": "markdown", + "id": "bf537050", + "metadata": {}, + "source": [ + "Creating a new columns. \n", + "\n", + "Code below creates a series which calculates the divergence of a from its mean value then merging into a existing dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "0bbd19f8", + "metadata": {}, + "outputs": [], + "source": [ + "df$DivA <- df$A - mean(df$A)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "f36d96af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 3
ABDivA
<int><chr><dbl>
11I -4
22like -3
33to -2
44use -1
55Python 0
66and 1
77Pandas 2
88very 3
99much 4
\n" + ], + "text/latex": [ + "A data.frame: 9 × 3\n", + "\\begin{tabular}{r|lll}\n", + " & A & B & DivA\\\\\n", + " & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4\\\\\n", + "\t2 & 2 & like & -3\\\\\n", + "\t3 & 3 & to & -2\\\\\n", + "\t4 & 4 & use & -1\\\\\n", + "\t5 & 5 & Python & 0\\\\\n", + "\t6 & 6 & and & 1\\\\\n", + "\t7 & 7 & Pandas & 2\\\\\n", + "\t8 & 8 & very & 3\\\\\n", + "\t9 & 9 & much & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 3\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> |\n", + "|---|---|---|---|\n", + "| 1 | 1 | I | -4 |\n", + "| 2 | 2 | like | -3 |\n", + "| 3 | 3 | to | -2 |\n", + "| 4 | 4 | use | -1 |\n", + "| 5 | 5 | Python | 0 |\n", + "| 6 | 6 | and | 1 |\n", + "| 7 | 7 | Pandas | 2 |\n", + "| 8 | 8 | very | 3 |\n", + "| 9 | 9 | much | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA\n", + "1 1 I -4 \n", + "2 2 like -3 \n", + "3 3 to -2 \n", + "4 4 use -1 \n", + "5 5 Python 0 \n", + "6 6 and 1 \n", + "7 7 Pandas 2 \n", + "8 8 very 3 \n", + "9 9 much 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "id": "2be67ef7", + "metadata": {}, + "source": [ + "We are creating a series which calculates the length of string of A column then merge into existing dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "c67f2bd0", + "metadata": {}, + "outputs": [], + "source": [ + "df$LenB <- str_length(df$B)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "cef214b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 9 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
77Pandas 26
88very 34
99much 44
\n" + ], + "text/latex": [ + "A data.frame: 9 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\t7 & 7 & Pandas & 2 & 6\\\\\n", + "\t8 & 8 & very & 3 & 4\\\\\n", + "\t9 & 9 & much & 4 & 4\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 9 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "| 7 | 7 | Pandas | 2 | 6 |\n", + "| 8 | 8 | very | 3 | 4 |\n", + "| 9 | 9 | much | 4 | 4 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 \n", + "7 7 Pandas 2 6 \n", + "8 8 very 3 4 \n", + "9 9 much 4 4 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "id": "e37d50de", + "metadata": {}, + "source": [ + "Selecting rows based on numbers " + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "59fe5316", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 5 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
\n" + ], + "text/latex": [ + "A data.frame: 5 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 5 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[0:5,]" + ] + }, + { + "cell_type": "markdown", + "id": "6abec1b7", + "metadata": {}, + "source": [ + "***Grouping means which groups the multiple columns based on certain conditions and we will use summarise function to see the difference***\n", + "\n", + "Suppose that we want to compute the mean value of column A for each given number of LenB. Then we can group our DataFrame by LenB, and find mean name them as a" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "f944a949", + "metadata": {}, + "outputs": [], + "source": [ + "df1 = df %>% group_by(LenB) %>% summarise(a = mean(A))" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "8ffd39cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A tibble: 5 × 2
LenBa
<int><dbl>
11.000000
23.000000
35.000000
46.333333
66.000000
\n" + ], + "text/latex": [ + "A tibble: 5 × 2\n", + "\\begin{tabular}{ll}\n", + " LenB & a\\\\\n", + " & \\\\\n", + "\\hline\n", + "\t 1 & 1.000000\\\\\n", + "\t 2 & 3.000000\\\\\n", + "\t 3 & 5.000000\\\\\n", + "\t 4 & 6.333333\\\\\n", + "\t 6 & 6.000000\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A tibble: 5 × 2\n", + "\n", + "| LenB <int> | a <dbl> |\n", + "|---|---|\n", + "| 1 | 1.000000 |\n", + "| 2 | 3.000000 |\n", + "| 3 | 5.000000 |\n", + "| 4 | 6.333333 |\n", + "| 6 | 6.000000 |\n", + "\n" + ], + "text/plain": [ + " LenB a \n", + "1 1 1.000000\n", + "2 2 3.000000\n", + "3 3 5.000000\n", + "4 4 6.333333\n", + "5 6 6.000000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "3b859950", + "metadata": {}, + "outputs": [], + "source": [ + "df2 = df %>% group_by(LenB) %>%\n", + "summarise(MEAN = mean(A),count =length(DivA))" + ] + }, + { + "cell_type": "markdown", + "id": "5d3f0287", + "metadata": {}, + "source": [ + "## Printing and Plotting\n", + " When We call head(df) it will print out dataframe in a tabular form.\n", + "\n", + "The first step of any data science project is data cleaning and visualization, thus it is important to visualize the dataset and extract some useful imformation." + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "69946dc7", + "metadata": {}, + "outputs": [], + "source": [ + "#dataset = read.csv(\"file name\")" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "4976f190", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "
A data.frame: 6 × 4
ABDivALenB
<int><chr><dbl><int>
11I -41
22like -34
33to -22
44use -13
55Python 06
66and 13
\n" + ], + "text/latex": [ + "A data.frame: 6 × 4\n", + "\\begin{tabular}{r|llll}\n", + " & A & B & DivA & LenB\\\\\n", + " & & & & \\\\\n", + "\\hline\n", + "\t1 & 1 & I & -4 & 1\\\\\n", + "\t2 & 2 & like & -3 & 4\\\\\n", + "\t3 & 3 & to & -2 & 2\\\\\n", + "\t4 & 4 & use & -1 & 3\\\\\n", + "\t5 & 5 & Python & 0 & 6\\\\\n", + "\t6 & 6 & and & 1 & 3\\\\\n", + "\\end{tabular}\n" + ], + "text/markdown": [ + "\n", + "A data.frame: 6 × 4\n", + "\n", + "| | A <int> | B <chr> | DivA <dbl> | LenB <int> |\n", + "|---|---|---|---|---|\n", + "| 1 | 1 | I | -4 | 1 |\n", + "| 2 | 2 | like | -3 | 4 |\n", + "| 3 | 3 | to | -2 | 2 |\n", + "| 4 | 4 | use | -1 | 3 |\n", + "| 5 | 5 | Python | 0 | 6 |\n", + "| 6 | 6 | and | 1 | 3 |\n", + "\n" + ], + "text/plain": [ + " A B DivA LenB\n", + "1 1 I -4 1 \n", + "2 2 like -3 4 \n", + "3 3 to -2 2 \n", + "4 4 use -1 3 \n", + "5 5 Python 0 6 \n", + "6 6 and 1 3 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "head(df)" + ] + }, + { + "cell_type": "markdown", + "id": "dcca35a8", + "metadata": {}, + "source": [ + "ggplot2 is a very good library as it simple to create complex plots from data in a data frame.\n", + "\n", + "It provides a more programmatic interface for specifying what variables to plot, how they are displayed, and general visual properties." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "515c95b2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaAAAALQCAMAAABR+ye1AAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAVU0lEQVR4nO3c61bbuhaAUYU7bIjf/203OEBoC0RObGlJmvNHNmeckchR449V\nY5omAEJKtQ8AgO8JNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQ\nAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0Q\nlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJ\nNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEAD\nBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQ\nAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQ\nAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEVCHQC4Iza\nlgj09ksARCfQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQAEEJNEBQAg0QlEADBCXQ\nAGUs/ufpBBqghLnOyxIt0AAlpC+Pi55yxiqbEmigM+mv/y55zrZPCbgEQEnp4yLHsuecsczW\nBBrozMdPCAUaIJR0Tp8FGmBrxxs43MUBEMfx7mf3QQPEsbjJfz67yFMCLgGwtYvqPAk0wDYu\nG54PL1HkKQGXANjQ5XWeBBpgdSsMz4fXKfKUgEsAbGOlOk8CDbCmtYbnw4sVeUrAJQDWtmqd\nJ4EGWMnKdZ4EGmANaw/Phxct8pSASwCsZos6TwINcKFNhufDKxd5SsAlANawWZ0ngQY433bD\n8+Hlizwl4BIAl9m4zpNAA5xl8zpPAg2w3PbD82GZIk8JuATAmcrUeRJogEUKDc+HtYo8JeAS\nAMsVrPMk0AC5Sg7PhwWLPCXgEgBLFK/zJNAAGSrUeRJogFNqDM+HhYs8JeASAFlq1XkSaIBf\nVBueD6sXeUrAJQBOqVrnSaABvld3eD4cQpGnBFwC4GcB6jwJNMA/QtR5EmiAP8UYnmcCDXAU\np86TQAN8CjQ8zwQaYBaszpNAA7yJNjzPBBoYXsg6TwINDC9onSeBBsYWdXieCTQwrsh1ngQa\nGFbo4Xkm0MCQwtd5EmhgRPGH55lAA4NppM6TQAODaabOk0ADI2lneJ4JNDCKtuo8CTQwiMaG\n55lAAwNosM6TQAP9a3F4npUM9Mtt2t1P08NV2t1ttATAm2OTm63zVDTQ+93rRqWH+7fHdL3J\nEgDT+wWN40OzCgb6Lr3OzXe7dLuf9vPX6y8BMH0kJLU8PM8KBno3PzGl/fyf3RZLAHzpc+Xj\nuFjBQKd0fPzm7x3pqzOXAJgjNWek+ZJUmKDfHvcmaGArH0Ne8yWpcA36bv/+9fpLAKRu+uwu\nDqAnqZcbOGbugwa6cWxyHz/K8puEQB/6aPIfBBroQX91ngQa6ECHw/NMoIHGdVrnSaCBtvU6\nPM8EGmhW13WeBBpoVud1ngQaaFPvw/NMoIH2jFDnSaCB5gwxPM8EGmjJOHWeBBpoyUh1ngQa\naMZQw/NMoIEmDFfnSaCBFow3PM8EGghu0DpPAg0EN2ydJ4EGIht3eJ4JNBDV2HWeBBoIavDh\neSbQQEDq/EaggWgMz+8EGghFnY8EGghEnb8SaCAKw/NfBBqIQZ3/IdBAAIbn7wg0UJs6/0Cg\ngbrU+UcCDVRkeP6NQAPVqPPvBBqow/B8kkADNahzBoEGijM85xFooCx1zibQQEnqvIBAA8UY\nnpcRaKAQdV5KoIESDM9nEGhgc+p8HoEGNqbO5xJoYEuG5wsINLAddb6IQAMbMTxfSqCBLajz\nCgQaWJ86r0KggZUZntci0MCq1Hk9Ag2sx/C8KoEGLvKlyeq8MoEGLjA3+f3Bibs2gQYucDhZ\nkzpvQqCB8332ufJxdEqggfOl9zo7Zzch0MD5PmZn5+wmBBo4V9LnbQk0cJ6vN3DUPpZOCTRw\nhuPPBf2EcDsCDSylyYUINLCMOhcj0MAChueSBBrIps5lCTSQx/BcnEADOdS5AoEGTjI81yHQ\nwO/UuRqBBn6jzhUJNPAjw3NdAg38QJ1rE2jgO4bnAAQa+Jc6hyDQwF8Mz1EINPCVOgci0MCR\nOoci0MA7w3M0Ag3M1DkegQYMz0EJNKDOQQk0DM7wHJdAw8jUOTSBhnGpc3ACDYMyPMcn0DAk\ndW6BQMN4DM+NEGgYjTo3Q6BhKIbnlgg0jEOdGyPQMAp1bo5AwxAMzy0SaBiAOrdJoKF3hudm\nCTT0TZ0bJtDQMcNz2wQaeqXOzRNo6JM6d0CgoUOG5z4INHRHnXsh0NAXw3NHBBp6os5dEWjo\nhuG5NwINfVDnDgk09ECduyTQ0DzDc68EGhqnzv0SaGiZ4blrAg3tUufOCTQ0yvDcv5KB3t/t\nXh/vr1K6ftxoCejascnqPISCgX7ZvX6k9q8Pb643WQJ6Njf5+ED/Cgb6Nt3sXx9uX15bfZvu\ntlgCenY4L5LheRwFA53S/v1hmvZpt8US0LHPPlc+DsopGujXh1368j/++r+/OHMJ6Fh6r7PT\nYxxFL3E8T9P928PbBP3rRWifQPjHx+Ti9BhHwUA/p93d83Szey3001V62mIJ6FbS5wGVvM3u\naXe8hnG/zRLQpeQGjjGV/UWVx9urtzrf3L9stgR059hkP58ZjN8khNA0eWQCDXGp8+AEGqJS\n5+EJNIRkeEagISJ1ZibQEI06806gIRTDM0cCDYGoM18JNERheOYvAg0hqDP/EmgIQJ35jkBD\nbYZnfiDQUJU68zOBhorUmd8INNRieOYEgYY61JmTBBoqMDyTQ6ChNHUmk0BDWepMNoGGggzP\nLCHQUIo6s5BAQxnqzGICDQUYnjmHQMPW1JkzCTRsS505m0DDhgzPXEKgYTPqzGUEGrZheOZi\nAg0bUGfWINCwOnVmHQIN6zI8sxqBhhWpM2sSaFiNOrMugYZ1GJ5ZnUDDGtSZDQg0XMzwzDYE\nGi6jzmxGoOES6syGBBrOZnhmWwIN51FnNifQcA51pgCBhsUMz5Qh0LCMOlOMQMMS6kxBAg3Z\nDM+UJdCQSZ0pbaVAP9/tLj6UE0tATYZnKlgj0C/3VykJNP1SZ+q4OND7x9c6p+unlY7nuyWg\nvC9NVmdquTDQj9fpzctqx/PvElDe3OT3B59Gqrkk0E+3rx/e3d3z+p9gpwR1HT6BSZ2p64JA\n797q/N+0xd8AnRVU9dnnysfB6C4IdEp3H1+sdjh/LQFVpPc6+yBSlwka/vExO/sgUtcK16D/\nE2i6kvSZINzFAX/4egNH7WNhdCvdB33jPmh6cPy5oJ8QEoDfJIR3mkw0/i0OmKkz8fjX7MDw\nTFACDepMUALN4AzPxCXQDE2diUygGZfhmeAEmkGpM/EJNENSZ1og0IzH8EwjBJrRqDPNEGiG\nYnimJQLNQNSZtgg0ozA80xyBZgjqTIsEmgGoM20SaHpneKZZAk3f1JmGCTQdMzzTNoGmW+pM\n6wSaPhme6YBA0yF1pg8CTXfUmV4INH0xPNMRgaYn6kxXBJpuGJ7pjUDTCXWmPwJNDwzPdEmg\naZ460yuBpnHqTL8EmpYZnumaQNMudaZzAk2jDM/0T6BpkjozAoGmPYZnBiHQNEadGYdA0xR1\nZiQCTTsMzwxGoGmFOjMcgaYJhmdGJNA0QJ0Zk0ATneGZYQk0oakzIxNoAlNnxibQRGV4ZngC\nTUzqDAJNRIZneCPQhKPOcCDQxGJ4hk9VAn3yFHSKDuXYZHWGrwSayuZPw/EB+FQw0OlPWyxB\ngw5/2Kc+EjCigoH+byfQ/OOzz5WPAwIqeYljf5OuX+ZX+O4lsutNV9J7nf2Zwz/KXoN+TOlx\ncg2aLz6+Hfszh38U/iHhy3W62Qs0H5I+w8+K38Vxn3ZPAs3MDRzwq/K32T1fnb7G7GwdgLuf\n4ZQa90HfCvTwNBky+FVvylNnyCLQFGZ4hlwCTVHqDPkEmnIMz7CIQFOKOsNCAk0RhmdYTqDZ\nnjrDWQSarakznEmg2ZThGc4n0GxIneESAs1WDM9wIYFmG+oMFxNoNmB4hjUINGtTZ1iJQLMu\ndYbVCDQrMjzDmgSa1agzrEugWYfhGVYn0KxBnWEDAs3FDM+wDYHmMuoMmxFoLqHOsCGB5myG\nZ9iWQHMmdYatCTTnMDxDAQLNcuoMRQg0CxmeoRSBZgl1hoIEmnzqDEUJNJkMz1CaQJNFnaE8\ngeY0wzNUIdCcos5QiUDzK8Mz1CPQ/EydoSqB5ifqDJUJNN8yPEN9As031BkiEGj+ZniGIASa\nP6kzhCHQfGF4hkgEmg/qDMEINAfqDOEINJPhGWISaAzPEJRAj87wDGEJ9NjUGQIT6IEZniE2\ngR7LscnqDOEJ9EjmJh8fgNgEeiSHfU2GZ2iDQA/ks8+VjwPII9ADSe91tr3QBoEeyMfsbHuh\nDQI9jKTP0BiBHkNyAwe0R6BHcGyynxBCQwS6e5oMrRLozqkztEuge2Z4hqYJdL/UGRon0J0y\nPEP7BLpH6gxdEOj+qDN0QqA7Y3iGfgh0V9QZeiLQ/TA8Q2cEuhPqDP0R6C6oM/RIoNtneIZO\nCXTr1Bm6JdBNMzxDzwS6XeoMnRPoVqkzdE+gm2R4hhEIdIPUGcYg0K0xPMMwBLot6gwDEeiG\nGJ5hLALdCnWG4Qh0G9QZBiTQDTA8w5gEOjx1hlEJdGyGZxiYQAemzjA2gQ5LnWF0Ah2T4RkQ\n6JDUGZgEOiDDM3Ag0MGoM/BBoCMxPANfCHQY6gz8SaCDUGfgbwIdgeEZ+IZA16fOwLcEujLD\nM/ATga5JnYFfCHQ96gz8SqArMTwDpwh0FeoMnCbQ5RmegSwCXZg6A7kEuih1BvIJdDmGZ2AR\ngS5FnYGFBLoIwzOwXMlA729Tun56f5FfX6WHmn1psjoD5ygY6P0uvbk5vEjngZ7f3/tD++8G\nqKJgoO/Sw2ulH3bX84v0HujDozoD5ysY6N3hiS+7q5fuA/3Z58rHAbSsYKA/arW/vv4u0Omr\nM5cII73Xufk3AlRUMNBXaf/x1XX3E/T7+2v+jQAVFQz0Q7p9/+olXXcd6KTPwApK3mZ391nl\npxNXMZoO29cbOGofC9Cyor+o8nzz8dXLbaeBPn7n6eBKOlCX3yRckSYDaxLo1agzsC6BXofh\nGVidQK9BnYENCPTFDM/ANgT6QuoMbEWgL2F4BjYk0GdTZ2BbAn0mdQa2JtDnMDwDBQj0cuoM\nFCHQCxmegVIEehF1BsoR6HyGZ6Aogc6kzkBpAp1FnYHyBPo0wzNQhUCfos5AJQL9K8MzUI9A\n/0KdgZoE+ieGZ6Aygf7+ANQZqE6gv1tenYEABPqfteUZiEGg/1pZnYEoBPrrsvIMBCLQx0XV\nGQhFoN9XlGcgGoGe1BmISaBd2gCCGj3QhmcgrLEDrc5AYAMH2vAMxDZsoNUZiG7MQBuegQYM\nGGh1BtowXKDVGWjFWIE2PAMNGSnQ6gw0ZZhAG56B1gwSaHUG2jNCoA3PQJO6D7Q6A63qPNDq\nDLSr50AbnoGm9RtodQYa12mgDc9A+7oMtDoDPegv0IZnoBNdBPrYZHUG+tFBoOcmHx8AOtFD\noA+PhmegM+0H+rPP2xwKQC19BPqtzgINdKaPQC99DkAD2g/0xzWOTQ4EoJ4eAu0GDqBLHQTa\nTwiBPnURaIAeCTRAUAINEJRAAwQl0ABBCTRAUAINEJRAAwQl0ABBCTRAUAINEJRAAwQl0ABB\nBQ00ADED3QX7lM1WZbNV2UbdqlHf91L2KZutymarso26VaO+76XsUzZblc1WZRt1q0Z930vZ\np2y2KputyjbqVo36vpeyT9lsVTZblW3UrRr1fS9ln7LZqmy2KtuoWzXq+17KPmWzVdlsVbZR\nt2rU972Ufcpmq7LZqmyjbtWo73sp+5TNVmWzVdlG3apR3/dS9imbrcpmq7KNulWjvu+l7FM2\nW5XNVmUbdatGfd9L2adstiqbrco26laN+r4BwhNogKAEGiAogQYISqABghJogKAEGiAogQYI\nSqABghJogKAEGiAogQYISqABghJogKAEGiAogQYISqAzPFyl3d2+9lG04j+fqSzPtyndvtQ+\nihbs73bDnoBOptPu0pvdmB+QxfY7n6kcTz5VmV52h60a8puZk+mk53T7ehY9pNvaB9KGm+Qz\nlWO3e572N+mu9nHEdztv0t2YJ6CT6aSbwx7pTpbHZKNyPM7V2add7QOJL418Ag75ps8y5udj\nqZd0baNy3Kbn2ofQivdrZmN+L3MyZdqn69qH0ILr9CLQOa7SdL+bL55xwv37JY772gdSg5Mp\n00N6qn0IDbhPj/6qkSWlm/knX7WPowUPbz8l3D3UPowqnEx5XnY3tQ+hAc/pxrWgPK/FeZ72\nt2OOhQvdz3dxjLlTTqYs+50LHBmu3u4aE+gcab4G/ZKuah9IfA9vlzhev5cNOUI7mbJcO48y\n3M6XgQQ6x9C3Jixzld6u1O/H/F7m85Hh5ep6yJvkl0qfah9JfG7ezDb097Ih3/RCT27gyCPQ\n+e7nv228+GiddrjNbtBbxp1KJzmJlpHnHC/pav92YfWx9oHEd5fe/h2OuzF/6dLJdNKtsXAR\nG5XlcGuC7/0ZrgfeKifTSf7evoyNyvN0nXZDDoXLzf+aXe2DqMPJBBCUQAMEJdAAQQk0QFAC\nDRCUQAMEJdAAQQk0QFACDRCUQAMEJdAAQQk0QFACDRCUQAMEJdAAQQk0QFACDRCUQAMEJdAA\nQQk0QFACDRCUQAMEJdAAQQk0QFACDRCUQAMEJdAAQQk0QFACDRCUQAMEJdAAQQk0QFACDRCU\nQAMEJdAAQQk0QFACDRCUQNOvlF5u0u5+/vrhKl09VD4eWEig6VdKu/TqrdDXb1+k69pHBIsI\nNP16LfJ+ekhX0/SYds/T8y491j4kWEKg6VdK/82P03STnl6/ejJC0xaBpl8pfTwevvr4DzTC\nB5Z+CTSN84GlXwJN43xg6dcx0B/XoG8qHxEsItD06xhod3HQJIGmX8dAuw+aJgk0/foS6Olh\n5zcJaY5AAwQl0ABBCTRAUAINEJRAAwQl0ABBCTRAUAINEJRAAwQl0ABBCTRAUAINEJRAAwQl\n0ABBCTRAUAINEJRAAwQl0ABBCTRAUAINEJRAAwQl0ABBCTRAUAINEJRAAwQl0ABBCTRAUAIN\nEJRAAwQl0ABBCTRAUP8Dr9AKPKfUMOkAAAAASUVORK5CYII=", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot(df$A,type = 'o',xlab = \"no\",ylab = \"A\")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "41b872c9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\ngCgDDRD1/8/symIMSQHiAAAAAElFTkSuQmCC", + "text/plain": [ + "plot without title" + ] + }, + "metadata": { + "image/png": { + "height": 360, + "width": 720 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "barplot(df$A, ylab = 'A',xlab = 'no')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "4.1.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 04452def0f1b64d9e2d0d658e6268527503753e6 Mon Sep 17 00:00:00 2001 From: Kaushal Joshi <53049546+joshi-kaushal@users.noreply.github.com> Date: Wed, 13 Oct 2021 17:57:09 +0530 Subject: [PATCH 080/254] README.hi.md translation completed --- .../translations/README.hi.md | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/1-Introduction/03-defining-data/translations/README.hi.md b/1-Introduction/03-defining-data/translations/README.hi.md index e21a638d..146ef592 100644 --- a/1-Introduction/03-defining-data/translations/README.hi.md +++ b/1-Introduction/03-defining-data/translations/README.hi.md @@ -9,7 +9,7 @@ यह पाठ डेटा को उसके स्त्रोत के हिसाब से पहचानने और वर्गीकृत करने पर केंद्रित है। -## [पाठ के पाहिले की परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) +## [पाठ के पूर्व की परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) ## डेटा का वर्णन कैसे किया जाता है **अपरीपक्व डेटा** ऐसे प्रकार का डेटा होता जो उसके स्त्रोत से आते वक्त जिस अवस्था में था वैसे ही है और उसका विश्लेषण या वर्गीकरण नहीं किया गया है। ऐसे डेटासेट से जरूरी जानकारी निकलने के लिए उसे ऐसे प्रकार मे लाना आवश्यक है जो इंसान समझ सके और जिस तंत्रज्ञान का उपयोग डेटा के विश्लेषण में किया जाएगा उसको भी समझ आये। डेटाबेस की संरचना हमें बताती है कि डेटा किस प्रकार से वर्गीकृत किया गया है और उसका संरचित, मिश्र संरचित और असंरचित प्रकार में वर्गीकरण कैसे किया जाता है। संरचना के प्रकार डेटा के स्त्रोत के अनुसार बदल सकते हैं मगर आखिर में इन तीनों में से एक प्रकार के हो सकते हैं। @@ -33,35 +33,31 @@ असंरचित डेटा के उदाहरण: टेक्स्ट फ़ाइलें, टेक्स्ट मेसेजेस, विडियो फ़ाइलें। ### मिश्र संरचित डेटा +मिश्र संरचित डेटा के ऐसे कुछ गुण है जिसकी वजह से उसे संरचित और असंरचित डेटा का मिश्रण कहा जा सकता हैं। वह हमेशा स्तंभ और पंक्तियों के अनुरूप नहीं रहता मगर ऐसे तरह संयोजित किया गया होता है कि उसे संरचित कहा जा सकता है और शायद अन्य निर्धारित नियमों का पालन भी करता है। डेटा की संरचना उसके स्त्रोत के ऊपर निर्भर होती है जैसे की स्पष्ट अनुक्रम या फिर थोडा परिवर्तनशील होता है जिसमे नया डेटा जोड़ना आसान हो। मेटाडेटा ऐसे संकेतांक होते हैं जिससे डेटा का संयोजन और संग्रह करना आसान होता है, और उन्हें डेटा के प्रकार के अनुरूप नाम भी दिए जा सकते हैं । मेटाडेटा के आम उदाहरण है: टैग्स, एलिमेंट्स, एंटिटीज और एट्रीब्यूट्स. +उदाहरणार्थ: एक सामान्य ईमेल को उसका विषय, मायना, और प्राप्तकर्ताओं की सूची होगी और किससे कब भेजना है उसके प्रमाण से संयोजित किया जा सकता है। -मिश्र संरचित डेटा के ऐसे कुछ गन है जिसके बजह से उसे संरचित और असंरचित डेटा का मिश्रण कहा जा सकता है. वह हमेशा स्तंभ और पंक्तियोंके अनुरूप नहीं रहता मगर ऐसे तरह संयोजित किया गया होता है की उसे संरचित कहा जा सकता है और शायद किसी ठराविक नियमोंका पालन भी कर है। डेटा की संरचना उसके स्त्रोत के ऊपर निर्भर होती है जैसे की स्पष्ट अनुक्रम या फिर थोडा लचीला जिसमे नया डेटा जोड़ना आसान हो. मेटाडाटा ऐसे संकेतक होते है जिनसे डेटा का संयोजन और संग्रहीत करने मे सहायता होती है, और उन्हें डेटा के प्रकार के अनुरूप नाम भी दिए जा सकते है. मेटाडेटाके आम उदाहरण है: टैग्स, एलिमेंट्स, एंटिटीज और एट्रीब्यूट्स. उदाहरणार्थ: एक सामान्य ईमेल को उसका विषय, मायना, और प्राप्तकर्ताओंकी सूची होगी और किसको कब भेजना है उसके हिसाब से संयोजित किया जा सकता है। - -मिश्र संरचित डेटा के उदाहरण: एचटीएमएल, सीइसव्ही फाइलें, जेसन(JSON) - -### डेटा के स्त्रोत - -डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। +मिश्र संरचित डेटा के उदाहरण: एचटीएमएल, सीइसवी फाइलें, जेसन(JSON) ## डेटा के स्त्रोत -डेटा का स्त्रोत मतलब मतलब वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुवा था, और हमेशा कहा और कब जमा किया था इसके ऊपर आधारित रहेगा। उपयोगकर्ताके द्वारा निर्माण किये हुवे डेटा को प्रार्थमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य काम के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावनमे टिप्पणियों और सूचि कमा कर रहे है तो वोप्रार्थमिक डेटा होगा और अगर उन्होंने उस डेटा को बाकि के वैज्ञनिकोके साथ बाँटना चाहा तो वो गौण डेटा कहलाया जायेगा। +डेटा का स्त्रोत, अर्थात वो जगह जहाँ डेटा सबसे पहिली बार निर्माण हुआ था, और हमेशा कहाँ और कब जमा किया था इसपर आधारित होगा। उपयोगकर्ता के द्वारा निर्माण किये हुए डेटा को प्राथमिक डेटा के नाम से पहचाना जाता है जबकि गौण डेटा ऐसे स्त्रोत से आता है जिसने सामान्य कार्य के लिए डेटा जमा किया था। उदाहरण के लिए, वैज्ञानिकों का समूह वर्षावन में टिप्पणियों और सूचि जमा कर रहे है तो वो प्राथमिक डेटा होगा और यदि उन्होंने उस डेटा को बाकि के वैज्ञनिको के साथ बाँटना चाहा तो वो वह गौण डेटा कहलाया जायेगा। -डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिममे उपयोगकर्ता कमांड्स जिन्हें क्वेरीज़ कहा जाता है इस्तेमाल करके डेटाबेस का डेटा खोज सकते है। डेटा स्त्रोत फ़ाइल स्वरुप मे हो तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार मे हो सकता है। आंतरजाल के स्त्रोत डेटा होस्ट करने के बहुत आम तरीका है। यहां डेटाबेस तथा फाइलें खोजी जा सकती है।अप्लीकेशन प्रोगरामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मद्त से प्रोग्रामर्स डेटाको बहार के उपयोगकर्ताओको आंतरजाल द्वारा इस्तेमाल करने के लिए भेज सकते है। जबकि वेब स्क्रैपिंग नामक प्रक्रियासे आंतरजाल के वेब पेज का डेटा अलग किया जा सकता है। [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पथ अलग अलग डेटा का इस्तेमाल करनेपर ध्यान देता है। +डेटाबेस यह एक सामान्य स्त्रोत है और वह होस्टिंग और डेटाबेस मेंटेनन्स सिस्टिम पर निर्भर होता है। डेटाबेस मेंटेनन्स सिस्टिम में उपयोगकर्ता कमांड्स, जिन्हें ‘क्वेरीज़’ कहा जाता है इस्तेमाल करके डेटाबेस का डेटा ढूंढ सकते हैं। डेटा स्त्रोत फ़ाइल स्वरुप में हो, तो आवाज, चित्र, वीडियो, स्प्रेडशीट ऐसे प्रकार में हो सकता है। अंतरजाल के स्त्रोत डेटा होस्ट करने का बहुत आम तरीका है। यहाँ डेटाबेस तथा फाइलें ढूंढी जा सकती है। एप्लीकेशन प्रोग्रामिंग इंटरफेस, जिन्हे 'एपीआय'(API) के नाम से जाना जाता है, उसकी मदद से प्रोग्रामर्स डेटा को बाहर के उपयोगकर्ताओं को अंतरजाल द्वारा इस्तेमाल करने के लिए भेज सकते हैं। जबकि वेब स्क्रैपिंग नामक प्रक्रिया से अंतरजाल के वेब पेज का डेटा अलग किया जा सकता है। [डेटा के साथ काम करना](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data) यह पाठ अलग अलग डेटा का इस्तेमाल करने पर ध्यान देता है। ## निष्कर्ष -यह पथ मे हमने पढ़ा की: +यह पाठ में हमने पढ़ा कि: - डेटा क्या होता है - डेटा का वर्णन कैसे किया जाता है - डेटा का वर्गीकरण कैसे किया जाता है - डेटा कहा मिलता है ## 🚀 चुनौती -Kaggle यह के मुफ्त के डेटाबेस का बहुत अच्छा स्त्रोत है। [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तेमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमेसे तीन-चार डेटाबेस का ऐसे वर्गीकरण कीजिए: -- डेटा परिमाणात्मक है या गुणात्मक? +Kaggle यह के मुक्त डेटाबेस का बहुत अच्छा स्त्रोत है। [सर्च टूल ](https://www.kaggle.com/datasets) का इस्तेमाल करके कुछ मजेदार डेटासेट ढूंढे और उनमे से तीन-चार डेटाबेस को ऐसे वर्गीकृत करे: +- डेटा परिमाणात्मक है या गुणात्मक है? - डेटा संरचित, असंरचित या फिर मिश्र संरचित है? -## [पाठ के बाद वाली परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/5) +## [पाठ के पश्चात परीक्षा](https://red-water-0103e7a0f.azurestaticapps.net/quiz/5) ## समीक्षा और स्वअध्ययन -- माइक्रोसॉफ्ट लर्न का [Classify your data](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) पाठ संरचित, असंरचित और मिश्र संरचित डेटा के बारे मे और अच्छेसे बताता है। +- माइक्रोसॉफ्ट लर्न का [Classify your data](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) पाठ संरचित, असंरचित और मिश्र संरचित डेटा के बारे में और अच्छे से बताता है। ## अभ्यास [डेटा का वर्गीकरण](../assignment.md) From a0f080163628829bee2b256e82448eaa64862a98 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Wed, 13 Oct 2021 15:02:00 -0400 Subject: [PATCH 081/254] video! --- README.md | 6 ++++-- ds-for-beginners.png | Bin 0 -> 268917 bytes 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 ds-for-beginners.png diff --git a/README.md b/README.md index d101b7b6..c90d8ec7 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,11 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur > **Students**, to use this curriculum on your own, fork the entire repo complete the exercises on your own, starting with a pre-lecture quiz, then reading the lecture completing the rest of the activities. Try to create the projects by comprehending the lessons rather than copying the solution code; however that code is available in the /solutions folders in each project-oriented lesson. Another idea would be to form a study group with friends go through the content together. For further study, we recommend [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). - +[![Promo video](ds-for-beginners.png)](https://youtu.be/8mzavjQSMM4 "Promo video") + +> 🎥 Click the image above for a video about the project the folks who created it! ## Pedagogy diff --git a/ds-for-beginners.png b/ds-for-beginners.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5be8fe8008278a14d15e0fdde78a3a4449b4eb GIT binary patch literal 268917 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
+
Базы данных
+
+ +Самым очевидным вопросом является "как хранить" данные, т.е. как организовать их так, чтобы обеспечить более быструю обработку. Существуют различные типы баз данных, позволяющие хранить структурированные и неструктурированные данные, которые мы рассмотрим далее в нашем курсе. +
+
Область больших данных
+
+ +Зачастую нам необходимо хранить и обрабатывать по-настоящему огромное количество данных с относительно простой структурой. Для этого существуют специальные подходы и методы хранения и эффективной обработки таких данных распределённым способом на вычислительном кластере. +
+
Машинное обучение
+
+ +Одним из способов понять данные это **построить модель**, способную предсказывать желаемую величину. Способность обучать подобные модели на данных изучается в **машинном обучении**. При желании Вы можете взглянуть на наш курс "Машинное обучение для начинающих", чтобы погрузиться глубже в данную область. +
+
Искусственный интеллект
+
+ +Также как и машинное обучение, искусственный интеллект строится на данных и включает в себя построение сложных комплексных моделей, которые ведут себя подобно человеку. В дополнение, методы ИИ часто позволяют нам трансформировать неструктурированные данные (например, естественную речь) в структурированные при помощи извлечения некоторых признаков. +
+
Визуализация
+
+ +Человек способен воспринимать ограниченное количество данных, но с построением полезной визуализации мы начинаем извлекать больше смысла из данных и строить различные выводы. Таким образом, важно знать несколько способов визуализации информации, те, что мы изучим в Секции 3 нашего курса. Смежными областями здесь также являются **Инфографика** и **Человеко-машинное взаимодействие** в целом. +
+
+ +## Типы данных + +Как мы уже упоминали, данные находятся повсюду, нам нужно просто правильно их собрать. Различают **структурированные** и **неструктурированные** данные. Первые часто представлены в чётко структурированном виде, зачастую в виде одной или нескольких таблиц, в то время как вторые являются простым набором файлов. Иногда мы можем выделить **полуструктурированнные** данные, которые имеют некоторую каждый раз различную структуру. + +| Структурированные | Полуструктурированные | Неструктурированные | +|----------- |-----------------|--------------| +| Список людей и их номеров телефона | Страницы Wikipedia с ссылками | Тексты энциклопедии Britannica | +| Поминутная температура во всех помещениях здания за последние 20 лет | Коллекция научных статей в формате JSON с указанием авторов, даты публикации и краткого описания | Корпоративные документы общего доступа | +| Возраст и пол каждого входящего в здание человека | Страницы сети Интернет | Необработанный видеопоток с камеры наблюдения | + +## Источники данных + +Существует множество возможных источников данных и невозможно перечислить их все. Однако, давайте рассмотрим несколько мест, где можно добыть данные: + +* **Структурированные данные** + - **Интернет вещей**, включающий в себя данные с различных датчиков, например, датчиков температуры или давления, содержит много полезных данных. В случае, если офисное помещение оборудовано датчиками с поддержкой Интернета вещей, то мы можем автоматически управлять отоплением и освещением, чтобы минимизировать затраты. + - **Опросы**, в которых участвуют пользователи после покупки товара или посещения сайта. + - **Анализ поведения**, например, может помочь понять, насколько далеко пользователь заходит на сайте и какие основные причины ухода с него. +* **Неструктурированные данные** + - **Тексты** могут быть богатым источником инсайтов, начиная от общей **эмоциональной оценки** вплоть до извлечения ключевых слов и даже семантического значения. + - **Изображения** или **видео**. Видео с камеры наблюдения может быть использовано для оценки загруженности дорог и информирования о возможных пробках. + - **Логи** веб-сервисов могут быть использованы для того, чтобы понять, какие страницы нашего сайта посещают больше всего и насколько долго задерживаются на них. +* **Полуструктурированные данные** + - Граф **социальной сети** может быть отличным источником данных о личности пользователя и возможной эффективности распространения информации рядом с ним. + - В случае, когда у нас имеется пачка фотографий с вечеринки, мы можем попытаться извлечь данные **групповой динамики**, построив граф людей, фотографировавшихся друг с другом. + +Зная различные возможные источники данных, Вы можете придумать другие сценарии, когда методы науки о данных могут быть применены наилучшим образом для усовершенствования бизнес-процессов. + +## Этапы работы с данными + +В науке о данных мы фокусируемся на следующих шагах работы с данными: + +
+
1) Сбор данных
+
+Первый шаг - это сбор данных. Часто, это довольно примитивный процесс, например данные сохраняются в базу данных из веб-приложения, но иногда нам необходимые специальные методы. В случае данных с датчиков Интернета вещей, данных может оказаться слишком много, и хорошая практика использовать промежуточные точки, такие как хаб Интернета вещей, для сбора всех данных и последующей обработки. + +
+
2) Хранение данных
+
+Хранение данных может быть непростой задачей, особенно когда мы говорим о больших данных. Принимая решение хранить данные, стоит продумать их дальнейшее использование. Вот некоторые из способов хранения данных: +
    +
  • Реляционные базы данных хранят коллекцию таблиц и используют специальный язык запросов SQL. Обычно, таблицы соединены друг с другом по определённой схеме. Очень часто нам необходимо преобразовать данные, чтобы они подходили под схему. +
  • +
  • Нереляционные (NoSQL) базы данных, такие как CosmosDB, не навязывают строгую модель данных и позволяют хранить более сложные данные, например иерархические JSON документы или графы. С другой стороны, нереляционные базы данных не имеют широких возможностей языка SQL и не гарантируют ссылочной целостности данных. +
  • +
  • Озеро данных - хранилище, используемое для больших коллекций "сырых" данных. Озёра данных часто встречаются в больших данных, когда все данные не помещаются в память одного компьютера и их необходимо хранить и обрабатывать вычислительным кластером. Parquet - формат данных, часто применяемый в связке с большими данными. +
  • +
+
+
3) Обработка данных
+
+ +Это наиболее увлекательная часть работы с данными, которая включает в себя обработку данных из их оригинального формата в формат, пригодный для визуализации и/или обучения модели. Имея дело с неструктурированными данными, мы, возможно, вынуждены применять некоторые методы ИИ для извлечения **признаков** из данных, конвертируя их, таким образом, в структурированный формат. + +
+
4) Визуализация / Визуальный анализ
+
+Зачастую, чтобы понять данные, нам необходимо их визуализировать. Имея множество различных методов визуализации, мы можем найти нужный для получения инсайта. Нередко, специалистам по данным необходимо "играть данными", визуализируя их несколько раз в поисках взаимосвязей. Мы также можем использовать статистические методы для проверки гипотез или для доказательства наличия корреляции между двумя наборами данных. +
+
5) Тренировка прогнозной модели
+
+Из-за того, что главная цель науки о данных - предоставить возможность принятия решения на основе данных, мы можем использовать методы машинного обучения для построения прогнозной модели, которая будет способна решить нашу задачу. +
+
+ +Разумеется, в зависимости от реальных данных некоторые шаги могут отсутствовать (например, в случае, когда наши данные уже лежат в базе данных или когда нам не нужно тренировать модель) или могут повторяться несколько раз (например, обработка данных). + +## Цифровизация и цифровая трансформация + +В последнее десятилетие, многие компании начали понимать важность данных при принятии решений. Чтобы применить науку о данных к бизнесу, необходимо собрать некоторые данные, т.е. преобразовать бизнес-процессы в цифровой формат. Этот процесс известен как **цифровизация** и сопровождается методами науки о данных для принятия решений. Зачастую, цифровизация ведёт к значительному увеличению продуктивности (и даже смене курса компании), называемому **цифровой трансформацией**. + +Рассмотрим пример. Предположим, у нас есть учебный курс по науке о данных (похожий на данный), который мы предоставляем нашим студентам в режиме онлайн, и мы хотим использовать методы науки о данных чтобы улучшить его. Как мы можем это сделать? + +Мы можем начать с вопроса "что может быть оцифровано"? Наиболее простой подход - измерить время, затрачиваемое студентами на прохождение каждого модуля, и полученные знания (например, организовав проверочный тест с несколькими вариантами ответов в конце каждого модуля). Усредняя время на завершение модуля по всем студентам, мы можем определить, какие модули курса вызывают наибольшие затруднения среди студентов, и поработать над их упрощением. + +> Вы, может быть, возразите, что данный подход не идеален, потому что разделы могут быть различной длины. Вероятно, наиболее справедливым будет разделить затраченное время на длину модуля (количество символов), и сравнить полученные величины. + +Когда мы приступаем к анализу результатов проверочных тестов, мы можем распознать отдельные понятия, которые студенты воспринимают плохо, и улучшить материал. Чтобы сделать это, нам необходимо спроектировать тесты таким образом, чтобы каждый вопрос покрывал определённое понятие или небольшую часть урока. + +Если же мы хотим усложнить задачу, мы можем построить график времени, затраченного на каждый модуль, и отметить возраст студентов. Мы можем узнать, что для некоторых возрастных категорий прохождение одного модуля занимает непозволительно много времени, или студенты бросают курс на каком-либо этапе. Это поможет нам предоставить возрастные рекомендации для модулей и минимизировать неудовлетворённость студентов от несоответствия их ожиданиям. + +## 🚀 Задача + +При решении данной задачи мы попробуем найти понятия, относящиеся к науке о данных, рассматривая тексты. Мы возьмем статьи из Википедии о науке о данных, скачаем и обработаем тексты, а затем построим облако слов, похожее на это: + +![Word Cloud for Data Science](../images/ds_wordcloud.png) + +Откройте [`notebook.ipynb`](../notebook.ipynb), чтобы ознакомиться с исходным кодом. Вы также можете запустить выполнение кода и понаблюдать, как происходит трансформация данных в реальном времени. + +> Если Вы не знаете, как запустить код в Jupyter Notebook, прочтите [данную статью](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + + +## [Проверочный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/1) + +## Домашнее задание + +* **Задача 1**: Доработайте код из задачи выше, чтобы узнать понятия, относящиеся к областям "большие данные" (**Big Data**) и "машинное обучение" (**Machine Learning**) +* **Задача 2**: [Поразмыслите о сценариях работы в науке о данных](../assignment.md) + +## Благодарности + +Данный модуль был написан с ♥️ [Дмитрием Сошниковым](http://soshnikov.com) From a5a1e9d446b08ed2bbcfeecf284ac95f72071e2c Mon Sep 17 00:00:00 2001 From: Heril Changwal <76246330+Heril18@users.noreply.github.com> Date: Fri, 22 Oct 2021 19:10:50 +0530 Subject: [PATCH 131/254] Update README.hi.md --- 6-Data-Science-In-Wild/README.hi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/6-Data-Science-In-Wild/README.hi.md b/6-Data-Science-In-Wild/README.hi.md index 423cf0b1..d0d6fad8 100644 --- a/6-Data-Science-In-Wild/README.hi.md +++ b/6-Data-Science-In-Wild/README.hi.md @@ -4,8 +4,8 @@ ### विषय -1. [वास्तविक दुनिया में डेटा विज्ञान] (20-Real-World-Examples/README.md) +1. [वास्तविक दुनिया में डेटा विज्ञान](20-Real-World-Examples/README.md) ### क्रेडिट -[नित्या नरसिम्हन] द्वारा ❤️ के साथ लिखा गया (https://twitter.com/nitya) \ No newline at end of file +[नित्या नरसिम्हन](https://twitter.com/nitya) द्वारा ❤️ के साथ लिखा गया From 813878842a0b5373e55af5c0f9f5df03f115fb2e Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Fri, 22 Oct 2021 18:23:05 +0300 Subject: [PATCH 132/254] 1-1 assignment translated --- .../translations/assignment.ru.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 1-Introduction/01-defining-data-science/translations/assignment.ru.md diff --git a/1-Introduction/01-defining-data-science/translations/assignment.ru.md b/1-Introduction/01-defining-data-science/translations/assignment.ru.md new file mode 100644 index 00000000..b81f4181 --- /dev/null +++ b/1-Introduction/01-defining-data-science/translations/assignment.ru.md @@ -0,0 +1,32 @@ +# Домашнее задание: сценарии в науке о данных + +В первом домашнем задании Вам предлагается рассмотреть процессы в реальном мире или проблемы в различных областях и как вы можете улучшить положение дел используя науку о данных. Ответьте на следующие вопросы: + +1. Какие данные Вы планируете собирать? +1. Как Вы хотите собрать данные? +1. Как Вы будете хранить данные? Насколько большими будут они? +1. Какие инсайты Вы сможете извлечь из этих данных? Какие решения сможете принять на основе этих данных? + +Подумайте о трёх различных проблемах/процессах и опишите каждую по пунктам, приведённым выше. + +Ниже приведены некоторые области и проблемы в них, с которых Вы можете начать: + +1. Как можно использовать данные, чтобы улучшить образовательный процесс в школах? +1. Как можно использовать данные, чтобы управлять вакцинацией в период пандемии? +1. Как можно использовать данные, чтобы повысить свою продуктивность на работе? + +## Форма ответов + +Заполните следующую таблицу (замените предложенные области на другие, если необходимо): + +| Область | Проблема | Какие данные нужно собрать | Как хранить данные | Какие инсайты/решения можно извлечь/принять | +|----------------|---------|-----------------------|-----------------------|--------------------------------------| +| Образование | | | | | +| Вакцинация | | | | | +| Продуктивность | | | | | + +## Оценка + +Отлично | Достаточно | Нуждается в улучшении +--- | --- | -- | +Верно определены источники данных, способы хранения данных и возможные решения/инсайты для всех областей | Некоторые аспекты решения недостаточно детально рассмотрены, хранилища данных не рассмотрены, рассмотрены по меньшей мере 2 области | Решение неполное, рассмотрена только одна область From 96b55dbccd53ca615681ebed41d32262871cc5de Mon Sep 17 00:00:00 2001 From: rosiegamgee718 <38297145+rosiegamgee718@users.noreply.github.com> Date: Fri, 22 Oct 2021 16:09:46 -0400 Subject: [PATCH 133/254] Spreadsheet graphic for #141 #141: Added case study spreadsheet for addition to lesson. Please let me know if I need to change anything!! :) --- ...munication-emerson-presentation-graphic.xlsx | Bin 0 -> 20330 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 4-Data-Science-Lifecycle/16-communication/data-communication-emerson-presentation-graphic.xlsx diff --git a/4-Data-Science-Lifecycle/16-communication/data-communication-emerson-presentation-graphic.xlsx b/4-Data-Science-Lifecycle/16-communication/data-communication-emerson-presentation-graphic.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..73535bbed02e1e25e08534edc87e5a41e4d3b04e GIT binary patch literal 20330 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 literal 0 HcmV?d00001 From 1aa9c36c9a820c1e9de65cc3f1c83d6112331ed7 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Sat, 23 Oct 2021 08:49:04 +0545 Subject: [PATCH 134/254] added nepali translaition for introduction README --- 1-Introduction/translations/README.np.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 1-Introduction/translations/README.np.md diff --git a/1-Introduction/translations/README.np.md b/1-Introduction/translations/README.np.md new file mode 100644 index 00000000..e18e81e4 --- /dev/null +++ b/1-Introduction/translations/README.np.md @@ -0,0 +1,16 @@ +# डाटा विज्ञान को परिचय + +![कार्यमा डाटा](../images/data.jpg) +> फोटो Stephen Dawson on Unsplash द्वारा + +यी पाठहरूमा, तपाईंले डाटा विज्ञानलाई कसरी परिभाषित गरिएको छ भनेर थाहा पाउनुहुनेछ र डेटा वैज्ञानिकले विचार गर्नुपर्ने नैतिक विचारहरूको बारेमा सिक्नुहुनेछ। तपाइँ यो पाठमा कसरी डाटा परिभाषित गरिएको छ र डाटा विज्ञान को मुख्य शैक्षिक डोमेन, statistics र probability पनि केहि मात्रामा जान्नुहुनेछ । + +### विषयहरु + +१. [डाटा विज्ञान को परिभाषा](01-defining-data-science/README.md) +२. [डाटा विज्ञान नैतिकता](02-ethics/README.md) +३. [डाटा परिभाषा ](03-defining-data/README.md) +४. [Statistics र Probability को परिभाषा](04-stats-and-probability/README.md) + +### विशेष धन्यवाद +यी पाठहरु N [नित्य नरसिम्हन](https://twitter.com/nitya) र [दिमित्री सोश्निकोभ](https://twitter.com/shwars) द्वारा ❤️ का साथ लेखिएको हो। From 75ec306eceb48ab2aa555940b7505fb385c08924 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Sat, 23 Oct 2021 09:34:31 +0545 Subject: [PATCH 135/254] added translations for working with data README in Nepali --- 2-Working-With-Data/translations/README.np.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 2-Working-With-Data/translations/README.np.md diff --git a/2-Working-With-Data/translations/README.np.md b/2-Working-With-Data/translations/README.np.md new file mode 100644 index 00000000..b2ff22b8 --- /dev/null +++ b/2-Working-With-Data/translations/README.np.md @@ -0,0 +1,15 @@ +# डाटासँग सहकार्य + +![डाटा माया](images/data-love.jpg) +> फोटो Alexander Sinn द्वारा Unsplash बाट + +यी पाठहरुमा, तपाइँ केहि तरिकाहरु डाटा को प्रबंधन, हेरफेर, र अनुप्रयोगहरुमा प्रयोग गर्न सकिन्छ को बारे मा जान्न सक्नुहुन्छ। तपाइँ रिलेशनल र नन-रिलेशनल डाटाबेस को बारे मा र कसरी डाटा उनीहरुमा भण्डारण गर्न सकिन्छ जान्नुहुनेछ। तपाइँ डेटा को प्रबन्ध गर्न को लागी Python संग काम गर्ने आधारभूत कुराहरु सिक्नुहुनेछ, र तपाइँ Python द्वारा डाटा माइन साथै म्यानेज गर्ने धेरै मध्य केहि तरिकाहरु पत्ता लगाउन सक्नुहुनेछ । +### बिषयहरु + +१. [रेलशनल डाटाबेस](05-relational-databases/README.md) +२. [नन रेलशनल डाटाबेस](06-non-relational/README.md) +३. [Python सँग सहकार्य](07-python/README.md) +४. [डाटा को तयारी](08-data-preparation/README.md) + +### बिषेष धन्यवाद +यी पाठहरू ❤️ का साथ [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) र [Jasmine Greenaway](https://twitter.com/paladique) द्वारा लेखिएको हो । From 3121f8af37989742b1c81558fcf2c4e6244883b6 Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Sat, 23 Oct 2021 09:26:52 +0530 Subject: [PATCH 136/254] created hindi translation --- .../translations/assignment.hi.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 2-Working-With-Data/06-non-relational/translations/assignment.hi.md diff --git a/2-Working-With-Data/06-non-relational/translations/assignment.hi.md b/2-Working-With-Data/06-non-relational/translations/assignment.hi.md new file mode 100644 index 00000000..d4a8f86e --- /dev/null +++ b/2-Working-With-Data/06-non-relational/translations/assignment.hi.md @@ -0,0 +1,19 @@ +# सोडा लाभ + +## निर्देश + +[कोका कोला कंपनी स्प्रेडशीट](CocaColaCo.xlsx) में कुछ गणनाएं नहीं हैं। आपका कार्य है: + +1. वित्त वर्ष '15, '16, '17, और '18' के सकल लाभ की गणना करें + - सकल लाभ = शुद्ध परिचालन राजस्व - बेची गई वस्तुओं की लागत +1. सभी सकल लाभ के औसत की गणना करें। इसे एक फ़ंक्शन के साथ करने का प्रयास करें। + - औसत = वित्तीय वर्षों की संख्या से विभाजित सकल लाभ का योग (10) + - [औसत फ़ंक्शन] पर दस्तावेज़ीकरण(https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6) +1. यह एक एक्सेल फाइल है, लेकिन इसे किसी भी स्प्रेडशीट प्लेटफॉर्म में संपादित किया जा सकता है + +[यीयी वांग को डेटा स्रोत क्रेडिट](https://www.kaggle.com/yiyiwang0826/cocacola-excel) + +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधार की जरूरत +--- | --- | -- | From 0445f2bca5ac45cb6e1099b8dca2fc817a2bda0e Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Sat, 23 Oct 2021 09:34:15 +0530 Subject: [PATCH 137/254] created assignment.hi.md --- .../translations/assignment.hi.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 2-Working-With-Data/06-non-relational/translations/assignment.hi.md diff --git a/2-Working-With-Data/06-non-relational/translations/assignment.hi.md b/2-Working-With-Data/06-non-relational/translations/assignment.hi.md new file mode 100644 index 00000000..d4a8f86e --- /dev/null +++ b/2-Working-With-Data/06-non-relational/translations/assignment.hi.md @@ -0,0 +1,19 @@ +# सोडा लाभ + +## निर्देश + +[कोका कोला कंपनी स्प्रेडशीट](CocaColaCo.xlsx) में कुछ गणनाएं नहीं हैं। आपका कार्य है: + +1. वित्त वर्ष '15, '16, '17, और '18' के सकल लाभ की गणना करें + - सकल लाभ = शुद्ध परिचालन राजस्व - बेची गई वस्तुओं की लागत +1. सभी सकल लाभ के औसत की गणना करें। इसे एक फ़ंक्शन के साथ करने का प्रयास करें। + - औसत = वित्तीय वर्षों की संख्या से विभाजित सकल लाभ का योग (10) + - [औसत फ़ंक्शन] पर दस्तावेज़ीकरण(https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6) +1. यह एक एक्सेल फाइल है, लेकिन इसे किसी भी स्प्रेडशीट प्लेटफॉर्म में संपादित किया जा सकता है + +[यीयी वांग को डेटा स्रोत क्रेडिट](https://www.kaggle.com/yiyiwang0826/cocacola-excel) + +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधार की जरूरत +--- | --- | -- | From 85fda55147e2121847b938480b05db4af8e580c6 Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Sat, 23 Oct 2021 09:40:22 +0530 Subject: [PATCH 138/254] created translation for data processing assignment --- .../assignment for data processing.hi.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 2-Working-With-Data/07-python/translations/assignment for data processing.hi.md diff --git a/2-Working-With-Data/07-python/translations/assignment for data processing.hi.md b/2-Working-With-Data/07-python/translations/assignment for data processing.hi.md new file mode 100644 index 00000000..fbec68e8 --- /dev/null +++ b/2-Working-With-Data/07-python/translations/assignment for data processing.hi.md @@ -0,0 +1,23 @@ +# पायथन में डाटा प्रोसेसिंग के लिए असाइनमेंट + +इस असाइनमेंट में, हम आपको उस कोड के बारे में विस्तार से बताने के लिए कहेंगे जिसे हमने अपनी चुनौतियों में विकसित करना शुरू किया है। असाइनमेंट में दो भाग होते हैं: + +## COVID-19 स्प्रेड मॉडलिंग + + - [ ] 5-6 अलग-अलग देशों के लिए तुलना के लिए एक प्लॉट पर $R_t$ ग्राफ़ प्लॉट करें, या साथ-साथ कई प्लॉट का उपयोग करें + - [ ] देखें कि संक्रमित मामलों की संख्या के साथ मौतों और ठीक होने वालों की संख्या कैसे संबंधित है। + - [ ] संक्रमण दर और मृत्यु दर को दृष्टिगत रूप से सहसंबद्ध करके और कुछ विसंगतियों की तलाश करके पता लगाएं कि एक सामान्य बीमारी कितने समय तक चलती है। यह पता लगाने के लिए आपको विभिन्न देशों को देखने की आवश्यकता हो सकती है। + - [ ] मृत्यु दर की गणना करें और यह समय के साथ कैसे बदलता है। *आप गणना करने से पहले एक बार श्रृंखला को स्थानांतरित करने के लिए दिनों में रोग की अवधि को ध्यान में रखना चाह सकते हैं* + +## COVID-19 पेपर्स एनालिसिस + +- [] विभिन्न दवाओं के सह-घटना मैट्रिक्स का निर्माण करें, और देखें कि कौन सी दवाएं अक्सर एक साथ होती हैं (अर्थात एक सार में उल्लिखित)। आप दवाओं और निदान के लिए सह-घटना मैट्रिक्स के निर्माण के लिए कोड को संशोधित कर सकते हैं। +- [] हीटमैप का उपयोग करके इस मैट्रिक्स की कल्पना करें। +- [ ] एक विस्तृत लक्ष्य के रूप में, [कॉर्ड डायग्राम](https://en.wikipedia.org/wiki/Chord_diagram) का उपयोग करके दवाओं की सह-घटना की कल्पना करें। [यह लाइब्रेरी](https://pypi.org/project/chord/) आपको कॉर्ड डायग्राम बनाने में मदद कर सकता है। +- [ ] एक और खिंचाव लक्ष्य के रूप में, नियमित अभिव्यक्तियों का उपयोग करके विभिन्न दवाओं (जैसे **400mg** इन *400mg क्लोरोक्वीन दैनिक*) की खुराक निकालें, और डेटाफ़्रेम बनाएं जो विभिन्न दवाओं के लिए अलग-अलग खुराक दिखाता है। **नोट**: उन संख्यात्मक मानों पर विचार करें जो दवा के नाम के निकट पाठ्य-क्षेत्र में हैं। + +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधार की जरूरत +--- | --- | -- | +सभी कार्य पूर्ण हैं, ग्राफिक रूप से सचित्र और समझाया गया है, जिसमें दो खिंचाव लक्ष्यों में से कम से कम एक शामिल है | 5 से अधिक कार्य पूरे हो गए हैं, कोई भी लक्ष्य पूरा करने का प्रयास नहीं किया गया है, या परिणाम स्पष्ट नहीं हैं | 5 से कम (लेकिन 3 से अधिक) कार्य पूर्ण हैं, विज़ुअलाइज़ेशन बिंदु को प्रदर्शित करने में मदद नहीं करते हैं From d8409502e370b86a52535f4674a247ef8df0fc1e Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Sat, 23 Oct 2021 10:23:05 +0545 Subject: [PATCH 139/254] added nepali translation for working with data README and Data Lifecycle README --- 3-Data-Visualization/README.md | 8 ++---- .../translations/README.np.md | 26 +++++++++++++++++++ .../translations/README.np.md | 15 +++++++++++ 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 3-Data-Visualization/translations/README.np.md create mode 100644 4-Data-Science-Lifecycle/translations/README.np.md diff --git a/3-Data-Visualization/README.md b/3-Data-Visualization/README.md index 346995ca..38d63b1c 100644 --- a/3-Data-Visualization/README.md +++ b/3-Data-Visualization/README.md @@ -2,9 +2,9 @@ ![a bee on a lavender flower](./images/bee.jpg) > Photo by Jenna Lee on Unsplash - -Visualizing data is one of the most important tasks of a data scientist. Images are worth 1000 words, and a visualization can help you identify all kinds of interesting parts of your data such as spikes, outliers, groupings, tendencies, and more, that can help you understand the story your data is trying to tell. + +Visualizing data is one of the most important tasks of a data scientist. Images are worth 1000 words, and a visualization can help you identify all kinds of interesting parts of your data such as spikes, outliers, groupings, tendencies, and more, that can help you understand the story your data is trying to tell. In these five lessons, you will explore data sourced from nature and create interesting and beautiful visualizations using various techniques. ### Topics @@ -26,7 +26,3 @@ These visualization lessons were written with 🌸 by [Jen Looper](https://twitt 🦆 Data for Minnesota Birds is from [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) scraped from [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) by Hannah Collins. All these datasets are licensed as [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). - - - - diff --git a/3-Data-Visualization/translations/README.np.md b/3-Data-Visualization/translations/README.np.md new file mode 100644 index 00000000..b10444c9 --- /dev/null +++ b/3-Data-Visualization/translations/README.np.md @@ -0,0 +1,26 @@ +# भिजुअलाइजेसन + +![एक लेभेंडर फूल मा एक मधुमक्खी](./images/bee.jpg) +> फोटो Jenna Lee द्वारा Unsplash बाट + +डाटा भिजुअलाइज गर्नु डाटा वैज्ञानिकको सबैभन्दा महत्त्वपूर्ण कार्यहरू मध्ये एक हो। छविहरू 1000 शब्दहरूको लायक छन्, र एक दृश्यले तपाईंलाई तपाईंको डेटाका सबै प्रकारका रोचक भागहरू जस्तै स्पाइकहरू, आउटलियरहरू, समूहहरू, प्रवृत्तिहरू, र थप, जसले तपाईंलाई तपाईंको डेटाले बताउन खोजेको कथा बुझ्न मद्दत गर्न सक्छ। + +यी पाँच पाठहरूमा, तपाईंले प्रकृतिबाट प्राप्त डाटा अन्वेषण गर्नुहुनेछ र विभिन्न प्रविधिहरू प्रयोग गरेर रोचक र सुन्दर दृश्यहरू सिर्जना गर्नुहुनेछ। + +१. [परिमाणहरू भिजुअलाईजिङ](09-visualization-quantities/README.md) +२. [वितरण भिजुअलाईजिङ](10-visualization-distributions/README.md) +३. [अनुपात भिजुअलाईजिङ](11-visualization-proportions/README.md) +४. [सम्बन्धहरु भिजुअलाईजिङ](12-visualization-relationships/README.md) +५. [भिजुअलाइजेसन अर्थपूर्ण बनाउने](13-meaningful-visualizations/README.md) + +### बिषेष धन्यवाद + +यी भिजुअलाइजेसन पाठहरू [Jen Looper](https://twitter.com/jenlooper) द्वारा 🌸 सँग लेखिएको हो । + +🍯 अमेरिकी मह उत्पादन को लागी डाटा, जेसिका लीको [Kaggle](https://www.kaggle.com/jessicali9530/honey-production) प्रोजेक्ट बाट लिइएको हो । [डाटा](https://usda.library.cornell.edu/concern/publications/rn301137d) [United States Department of Agriculture](https://www.nass.usda.gov/About_NASS/index.php) बाट लिइएको हो । + +🍄 च्याउको लागि डाटा पनि [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) बाट लिइएको Hatteras Dunton द्वारा संशोधित हो । यो डाटासेट Agaricus र Lepiota परिवार मा gilled मशरूम को २३ प्रजातिहरु संग सम्बन्धित काल्पनिक नमूनाहरु को विवरण शामिल छ। द अडुबोन सोसाइटी फिल्ड गाइड बाट नर्थ अमेरिकन मशरूम (१९८१) को च्याउ कोरिएको। यो डाटासेट UCI ML २ to मा १ 7 मा दान गरिएको थियो। + +🦆 मिनेसोटा पक्षीहरूको लागि डाटा [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) बाट हो जुन [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) हन्ना कोलिन्स द्वारा, बाट स्क्र्याप गरिएको हो । + +यी सबै डाटासेट [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/) को रूप मा लाइसेन्स प्राप्त छ । diff --git a/4-Data-Science-Lifecycle/translations/README.np.md b/4-Data-Science-Lifecycle/translations/README.np.md new file mode 100644 index 00000000..ae5603dc --- /dev/null +++ b/4-Data-Science-Lifecycle/translations/README.np.md @@ -0,0 +1,15 @@ +# डाटा विज्ञान जीवनचक्र + +![संचार](images/communication.jpg) + +> फोटो Headway मा Unsplash द्वारा + +यी पाठहरुमा, तपाइँ डाटा विज्ञान जीवन चक्र को केहि पहलुहरु को अन्वेषण गर्नुहुनेछ, विश्लेषण र डाटा को आसपास संचार सहित। + +### बिषयहरु + +१. [परिचय](14-Introduction/README.md) +२. [विश्लेषण](15-Analyzing/README.md) +३. [संचार](16-communication/README.md) + +यी पाठहरु ❤️ का साथ [Jalen McGee](https://twitter.com/JalenMCG) र [Jasmine Greenaway](https://twitter.com/paladique) द्वारा लेखिएको हो । From 1ee1c620437906c1ab1f8f3e338a7961c2a731b3 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Sat, 23 Oct 2021 13:22:16 +0545 Subject: [PATCH 140/254] fixed links and table of content --- translations/README.NEPALI.MD | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/translations/README.NEPALI.MD b/translations/README.NEPALI.MD index b8c97ecf..3e56c8eb 100644 --- a/translations/README.NEPALI.MD +++ b/translations/README.NEPALI.MD @@ -17,9 +17,9 @@ Microsoft मा Azure Cloud अधिवक्ताहरु एक १०-ह > **विद्यार्थी**, यो पाठ्यक्रम आफ्नै शैलिमा प्रयोग गर्नका लागी यो Repo लाई fork गर्नुहोस् र एक पूर्व व्याख्यान प्रश्नोत्तरी संग शुरू गरी त्यसपछि गतिविधिहरु को बाकी पूरा लेक्चर पढी अभ्यास पूरा गर्नुहोस् । समाधान कोड प्रतिलिपि गर्नुको सट्टा पाठ बुझेर परियोजनाहरु बनाउन को लागी प्रयास गर्नुहोस्; जे होस् कि कोड प्रत्येक परियोजना उन्मुख पाठ मा /solution फोल्डरहरु मा उपलब्ध छ। अर्को विचार साथीहरु संग एक साथ सामग्री को माध्यम बाट जाने संग एक अध्ययन समूह गठन गर्न को लागी हुनेछ। थप अध्ययन को लागी, हामी [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa)सिफारिश गर्दछौं । - +> 🎥 यो Project मा काम गर्नुहुने माहानुभाभरुको भिडियो हेर्ने माथी को image क्लिक गर्नुहोस् ## शिक्षाशास्त्र @@ -48,14 +48,13 @@ Microsoft मा Azure Cloud अधिवक्ताहरु एक १०-ह ## पाठ -|![ स्केचनोट [(@sketchthedocs)](https://sketchthedocs.dev) द्वारा](./sketchnotes/00-Roadmap.png)| +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| |:---:| | शुरुआती को लागी डाटा विज्ञान: गाइड - _स्केचनोट [@nitya](https://twitter.com/nitya)_ द्वारा| | पाठ नम्बर | विषय | पाठ समूह | सिक्ने उद्देश्यहरू | लिन्कड पाठ | लेखक | | :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | - | 0१ | डाटा विज्ञान को परिभाषा | [परिचय](1-Introduction/README.md) | डाटा विज्ञान को पछाडि आधारभूत अवधारणाहरु जान्नुहोस् र यो कसरी Artificial Intelligence, Machine Learning, र Big Data संग सम्बन्धित छ। | [पाठ](1-Introduction/01-defining-data-science/README.md) [भिडियो](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | | 0२ | डाटा विज्ञान नैतिकता | [परिचय](1-Introduction/README.md) | डाटा नैतिक अवधारणाहरु, चुनौतिहरु र फ्रेमवर्क | [पाठ](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | | 0३ | डाटा परिभाषा | [परिचय](1-Introduction/README.md) | कसरी डाटा वर्गीकृत र यसको सामान्य स्रोत हो। | [पाठ](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | @@ -95,6 +94,6 @@ Microsoft मा Azure Cloud अधिवक्ताहरु एक १०-ह हाम्रो टोली अन्य पाठ्यक्रम उत्पादन! यहाँ हेर्नुहोस : -- [शुरुआतीहरुको लागी Machine Learning] (https://aka.ms/ml-beginners) -- [शुरुआती को लागी IoT] (https://aka.ms/iot-beginners) -- [शुरुआतीहरुको लागि Web Dev] (https://aka.ms/webdev-beginners) +- [शुरुआतीहरुको लागी Machine Learning](https://aka.ms/ml-beginners) +- [शुरुआती को लागी IoT](https://aka.ms/iot-beginners) +- [शुरुआतीहरुको लागि Web Dev](https://aka.ms/webdev-beginners) From 0a685919bedf5e13a6783f5789849138e4a73db4 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Sat, 23 Oct 2021 13:32:52 +0545 Subject: [PATCH 141/254] some minor erros fixed --- translations/README.NEPALI.MD | 2 ++ 1 file changed, 2 insertions(+) diff --git a/translations/README.NEPALI.MD b/translations/README.NEPALI.MD index 3e56c8eb..e1142163 100644 --- a/translations/README.NEPALI.MD +++ b/translations/README.NEPALI.MD @@ -17,6 +17,8 @@ Microsoft मा Azure Cloud अधिवक्ताहरु एक १०-ह > **विद्यार्थी**, यो पाठ्यक्रम आफ्नै शैलिमा प्रयोग गर्नका लागी यो Repo लाई fork गर्नुहोस् र एक पूर्व व्याख्यान प्रश्नोत्तरी संग शुरू गरी त्यसपछि गतिविधिहरु को बाकी पूरा लेक्चर पढी अभ्यास पूरा गर्नुहोस् । समाधान कोड प्रतिलिपि गर्नुको सट्टा पाठ बुझेर परियोजनाहरु बनाउन को लागी प्रयास गर्नुहोस्; जे होस् कि कोड प्रत्येक परियोजना उन्मुख पाठ मा /solution फोल्डरहरु मा उपलब्ध छ। अर्को विचार साथीहरु संग एक साथ सामग्री को माध्यम बाट जाने संग एक अध्ययन समूह गठन गर्न को लागी हुनेछ। थप अध्ययन को लागी, हामी [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa)सिफारिश गर्दछौं । +### टोलीलाई भेट्नुहोस् + [![प्रोमो भिडियो](screenshot.png)]( "Promo video") > 🎥 यो Project मा काम गर्नुहुने माहानुभाभरुको भिडियो हेर्ने माथी को image क्लिक गर्नुहोस् From d6716494d516aeeef04b2d5f00eb17dd631b6051 Mon Sep 17 00:00:00 2001 From: sarthak Date: Sat, 23 Oct 2021 14:41:28 +0545 Subject: [PATCH 142/254] added nepali transaltion of Data science in cloud readme --- .../translations/README.Nepali.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 5-Data-Science-In-Cloud/translations/README.Nepali.md diff --git a/5-Data-Science-In-Cloud/translations/README.Nepali.md b/5-Data-Science-In-Cloud/translations/README.Nepali.md new file mode 100644 index 00000000..4926f922 --- /dev/null +++ b/5-Data-Science-In-Cloud/translations/README.Nepali.md @@ -0,0 +1,20 @@ +# डाटा बिज्ञान क्लाउडमा + +![क्लाउड-चित्र](images/cloud-picture.jpg) + +>चित्र खिच्ने [Jelleke Vanooteghem](https://unsplash.com/@ilumire) कहाँबाट [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape) + +जब डाटा बिज्ञान ठुला डाटामा प्रयोग गरिन्छ, तब क्लाउडले खेल परिवर्तन गर्न सक्छ। आगामी तीन पाठमा,हामी क्लाउड भनेको के हो र किन सहयोगी हुन्छ भन्ने सिक्न गईरहेका छौ।हामी यिनै पाठ्यक्रममा मुटु रोगीहरुको डाटासेट पत्ता लगाउने र मुटु रोगको संभावना पत्ता लगाउने मोडको तयार पार्ने छौ। हामी क्लाउडको तागत प्रयोग गरेर मोडललाई तालीम ,तैनाथ र उपभोग विभिन्न तरिकाले गर्नेछौ। यसमा प्रकृयामा एउटा तरिका भनेको user interface निम्न कोड्/नो कोड ढंगले प्रयोग गर्ने हो भने अर्को तरिका Azure Machine Learning Software Developer Kit प्रयोग गरेर हो। + +![प्रोजेक्ट-योजना](19-Azure/images/project-schema.PNG) + +### पाठहरु +१. [किन डाटा बिज्ञानमा क्लाउड प्रयोग गर्ने ?](१७-परिचय/README.md) +२. [डाटा बिज्ञानमा क्लाउड: निम्न कोड्/नो कोड ढंग ](१८-निम्न-कोड्/README.md) +3. [डाटा बिज्ञानमा क्लाउडः "Azure ML SDK" तरिका ](19-Azure/README.md) + +### श्रेय +यि पाठहरु ☁️ र 💕 ले लेखिएको [Maud Levy](https://twitter.com/maudstweets) र [Tiffany Souterre](https://twitter.com/TiffanySouterre) + +मुटु फेल हुने भविष्यबानि गरिएको डाटा निकालिएको सोर्स[ +Larxel](https://www.kaggle.com/andrewmvd) on [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data).लाइसेन्स गरिएको नियम [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) From c8b08cf750fe1d87f366ec259ff917db62cedadd Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Sun, 24 Oct 2021 19:18:41 +0530 Subject: [PATCH 143/254] Create assignment.hi.md --- .../translations/assignment.hi.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 1-Introduction/01-defining-data-science/translations/assignment.hi.md diff --git a/1-Introduction/01-defining-data-science/translations/assignment.hi.md b/1-Introduction/01-defining-data-science/translations/assignment.hi.md new file mode 100644 index 00000000..b4250dd4 --- /dev/null +++ b/1-Introduction/01-defining-data-science/translations/assignment.hi.md @@ -0,0 +1,31 @@ +# असाइनमेंट: डाटा साइंस के परिदृश्य + +इस असाइनमेंट मे हम चाहते हैं कि आप कुछ असल ज़िंदगी की दिक्कतें या क्रिया-कलाप सोचें विभिन्न क्षेत्रों मे, और फिर सोचें कि इसको हम डाटा साइंस के प्रयोग से कैसे सुधार सकते हैं| इन चीजों के बारे मे सोचें: + +1. आप कौनसी डाटा इकट्ठा कर सकते हैं? +1. आप उसको कैसे इकट्ठा करेंगे? +1. आप उस डाटा को कैसे संग्रहीत करेंगे? वो डाटा कितनी बड़ी होगी? +1. अस डाटा से आपको क्या अनुमान मिलेगा? उस डाटा के आधार पर आप क्या निर्णय ले सकते हैं? + +किन्ही 3 अलग दिक्कत या क्रिया-कलाप के बारे मे सोचे का प्रयास करें और ऊपर लिखे हर पॉइंट को अलग कार्यक्षेत्र के लिए वर्णित कीजिए| + +यहा कुछ कार्यक्षेत्र और दिक्कतें लिखी हैं जिनकी मदद से आप सोचना शुरू कर सकते हैं: + +1. आप डाटा का प्रयोग करके विद्यालय जा रहे बच्चों की शिक्षा कैसे सुधार सकते हैं? +1. आप डाटा का प्रयोग करके महामारी के समय मे टीकाकरण कैसे नियंत्रित कर सकते हैं? +1. आप डाटा का प्रयोग करके अपने काम मे कैसे और उत्पादक बन सकते हैं? +## निर्देश: + +निम्नलिखित मेज को भरें (अपने विकल्प सुझावित क्षेत्रों की जगह लिखें अगर जरूरत हो तो): + +| समस्या डोमेन | समस्या | कॉनसी डाटा संग्रहीत करनी है | डाटा को कैसे संग्रहीत करना है | कॉन्से निर्णय ले सकते हैं | +|----------------|---------|-----------------------|-----------------------|--------------------------------------| +| शिक्षा | | | | | +| टीकाकरण | | | | | +| उत्पादकता | | | | | + +## सरनामा + +अनुकरणीय | पर्याप्त | सुधार चाहिए +--- | --- | -- | +डाटा के स्तोत्र को पहचानने मे, उसको भंडारित मे और निर्णय लेने मे सक्षम थे | समाधान के कुछ हिस्से विस्तृत नहीं हैं, डाटा को संग्रहीत करना नहीं बताया गया है, कम से कम दो क्षेत्रों का वर्णन है | समाधान के सिर्फ कुछ ही हिस्सों का वर्णन है, सिर्फ एक क्षेत्र पर विचार किया है| From f4512ddd4bddfd48ee4ad74e709c68a85f65914b Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Sun, 24 Oct 2021 18:48:52 +0300 Subject: [PATCH 144/254] 1-2 readme and assignment translated --- .../02-ethics/translations/README.ru.md | 273 ++++++++++++++++++ .../02-ethics/translations/assignment.ru.md | 21 ++ 2 files changed, 294 insertions(+) create mode 100644 1-Introduction/02-ethics/translations/README.ru.md create mode 100644 1-Introduction/02-ethics/translations/assignment.ru.md diff --git a/1-Introduction/02-ethics/translations/README.ru.md b/1-Introduction/02-ethics/translations/README.ru.md new file mode 100644 index 00000000..8c290f77 --- /dev/null +++ b/1-Introduction/02-ethics/translations/README.ru.md @@ -0,0 +1,273 @@ +# Введение в этику данных + +|![ Рисунок [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/02-Ethics.png)| +|:---:| +| Этика в науке о данных - _Рисунок [@nitya](https://twitter.com/nitya)_ | + +--- + +Мы все инфо-граждане, живущие в инфо-мире. + +Из тенденций рынка следует, что к 2022 году одна из трёх крупных организаций будет покупать и продавать свои данные на онлайн [маркетплейсах и биржах](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/). Как **разработчики приложений**, мы интегрируем инсайты на основе данных и алгоритмы автоматизации в ежедневную жизнь пользователя более простым и дешёвым способом. Однако по мере распространения ИИ, нам необходимо осознавать потенциальную угрозу использования подобных алгоритмов в качестве [оружия](https://www.youtube.com/watch?v=TQHs8SA1qpk) в больших масштабах. + +Тенденции также показывают, что мы создадим и потребим более [180 зеттабайт](https://www.statista.com/statistics/871513/worldwide-data-created/) данных к 2025 году. Нам, как **дата сайентистам - специалистам по данным**, открывается беспрецедентный уровень доступа к личным данным. Это означает, что мы сможем составлять поведенческие профили пользователей и влиять на принятие решений, создавая [иллюзию свободного выбора](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) и подталкивая пользователей делать то, что нам нужно. Также возникают широкие вопросы о приватности данных и защите пользователей. + +В настоящее время, этика данных является _необходимым ограждением_ для специалистов и инженеров по данным, минимизирующим ущерб и непреднамеренные последствия от наших действий на основе данных. На [графике цикла популярности Gartner для ИИ](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) современные тренды в цифровой этике, ответственном ИИ и управлении ИИ обозначены как ключевые двигатели мегатрендов _демократизации_ и _индустриализации_ искусственного интеллекта. + +![Цикл популярности Gartner для ИИ - 2020 год](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +В данном уроке мы исследуем увлекательную область этики данных, от основных положений и проблем, до реальных примеров и прикладных концепции, таких как управление данными, которые помогают установить этическую культуру в командах и организациях, работающих с данными и ИИ. + + + + +## [Вступительный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/2) 🎯 + +## Основные определения + +Давайте начнём с базовых терминов. + +Само слово "этика" происходит от [греческого слова "этикос"](https://ru.wikipedia.org/wiki/%D0%AD%D1%82%D0%B8%D0%BA%D0%B0) (и его корня "этос"), означающего _характер или моральная природа_. + +**Этика** изучает общие ценности и моральные принципы, которые определяют наше поведение в обществе. Этика основывается не на законах, а на широких принятых нормах того, что хорошо, а что плохо. Однако, этические соображения могут влиять на политику компаний и государственное регулирование, которое создает больше стимулов для соблюдения этических норм. + + +**Этика данных** - это [новая ветвь этики](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1), которая "изучает и оценивает моральные вопросы связанные с _данными, алгоритмами и соответствующими практиками_". Упомянутые здесь вопросы **"данных"** сосредоточены вокруг действий генерации, записи, курирования, обработки, распространения, предоставление доступа и использования. Вопросы **"алгоритмов"** сосредоточены вокруг ИИ, агентов, машинного обучения и роботов. Вопросы **"практик"** сфокусированы на темах ответственных инноваций, программирования, хакинга и этичного исходного кода. + +**Прикладная этика** - это [практическое применение моральных соображений](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BA%D0%BB%D0%B0%D0%B4%D0%BD%D0%B0%D1%8F_%D1%8D%D1%82%D0%B8%D0%BA%D0%B0). Это процесс активного исследования этических проблем в контексте _действий, товаров и процессов реального мира_, и принятия корректирующих мер по удержанию их в соответствии нашим принятым этическим ценностям. + +**Этическая культура** - раздел об [_использовании_ прикладной этики](https://hbr.org/2019/05/how-to-design-an-ethical-organization) для того, чтобы убедиться, что наши этические принципы и порядки приняты полномасштабно в рамках всей организации и действуют постоянно. Успешные этические культуры определяют общеорганизационные этические принципы, обеспечивают ощутимые стимулы для их соблюдения и укрепляют этические нормы, поощряя желаемое поведение на каждом уровне организации. + + +## Этические концепции + +В данном разделе мы обсудим такие понятия как **общие ценности** (принципы) и **этические вызовы** (проблемы) в этике данных, а также исследуем **реальные примеры**, которые помогут Вам понять эти концепции в реальном мире. + +### 1. Принципы этики + +Каждая стратегия в этике данных начинается с определения _этических принципов_ - "общих ценностей", которые описывают приемлемое поведение и регламентируют соответствующие действия в проектах, связанных с данными и ИИ. Вы можете определить их на индивидуальном уровне или на уровне команды. Однако, большинство крупных организаций выделяют их как миссию по созданию _этичного ИИ_ или набора правил, который определён на уровне компании и которому подчиняются все без исключения. + +**Пример**: Формулировка миссии об [ответственном ИИ](https://www.microsoft.com/en-us/ai/responsible-ai) компании Майкрософт звучит так: _"Мы преданы идее продвижения ИИ на основе этических принципов, которые ставят людей во главу угла"_. Данный лозунг определяет 6 этических принципов, описанных далее. + +![Ответсвенный ИИ в компании Майкрософт](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +Давайте кратко рассмотрим эти принципы. _Прозрачность_ и _Ответственность_ являются основными, а остальные строятся поверх, поэтому начнем с главных: + +* Принцип [**ответственности**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) накладывает ответственность на активных пользователей за использование данных и ИИ и требует согласия с данными этическими принципами. +* Принцип [**прозрачности**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) позволяет убедиться, что действия с данными и ИИ _понимаемы_ (осознаваемы) пользователями, разъясняя, что кроется за действиями и их последствия. +* Принцип [**справедливости**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) фокусируется на равном восприятии искусственным интеллектом _всех людей_ и обращает внимание на системную и скрытую социально-техническую предвзятость в данных и информационных системах. +* Принцип [**надёжности и сохранности**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) обеспечивает _постоянное_ соответствие поведения ИИ заранее определённым ценностям, минимизируя потенциальный ущерб или неумышленные последствия. +* Принцип [**приватности и безопасности**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) говорит о необходимости понимания происхождения данных и обеспечивает _приватность данных и их защиту_ для пользователей. +* Принцип [**инклюзивности**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) гарантирует создание решений на основе ИИ с целью адаптировать их к _нуждам широкого круга людей с различными возможностями_. + +> 🚨 Подумайте о том, какими могут быть формулировки миссий в этике данных. Познакомьтесь с подходами этичного ИИ в других организациях: [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles) и [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). Какие общие ценности являются схожими? Как эти принципы связаны с продуктами и отраслями этих компаний? + + +### 2. Проблемы этики + +Как только мы определили этические принципы, следующим шагом становится оценить наши действия с данными и ИИ с точки зрения того, как они соотносятся с принятыми общими ценностями. Подумайте над Вашими действиями в разрезе двух категорий: _сбора данных_ и _разработка алгоритма_. + +При сборе данных, список действий наверняка будет включать в себя **персональные данные** или персональные идентифицирующие данные для установления личностей. Они состоят из +[различных неперсональных данных](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en), которые _в совокупности_ определяются как персональные. Этические вызовы здесь могут относиться к _приватности данных_, _владению данными_ и связанным с ними вопросам _информированного согласия_, и _прав на интеллектуальную собственность_ пользователей. + +При разработке алгоритма, действия включают в себя сбор и обработку **датасетов** и последующее использование их для тренировки и развёртывания _модели данных_, способной выдавать прогнозы или автоматизировать принятие решений в реальном мире. Этические вызовы возникают из-за _несбалансированного датасета_, _качества данных_, _несправедливости модели_ и _искажения фактов_ в алгоритмах, включая некоторые системные по своей природе вопросы. + +В обоих случаях, этические проблемы подсвечивают области, в которых наши действия могут идти в разрез с нашими общими ценностями. Для того чтобы распознать, смягчить, сократить или устранить конфликты, нам необходимо задать моральные "да/нет" вопросы, связанные с нашими действиями, а затем скорректировать наши действия при необходимости. Давайте взглянем на некоторые этические вызовы и моральные вопросы, которые они поднимают: + + +#### 2.1 Право собственности на данные + +Сбор данных часто включает в себя сбор персональных данных, которые могут идентифицировать действующих лиц. [Право собственности на данные](https://permission.io/blog/data-ownership) занимается вопросами _контроля_ и [_прав пользователя_](https://permission.io/blog/data-ownership) в области создания, обработки и распространения данных. + +Моральные вопросы, которые мы должны задать себе здесь: +* Кто владеет данными (пользователь или организация)? +* Какие права имеют действующие лица, имеющие отношение к данным? (напр., доступ, стирание, перенос) +* Какие права имеет организация? (напр., редактирование злонамеренных пользовательских отзывов) + +#### 2.2 Информированное согласие + +[Информированное согласие](https://legaldictionary.net/informed-consent/) определяет согласие пользователя на действия (например, сбор данных) с _полным пониманием_ всех фактов, включая цель, потенциальные риски и альтернативы. + +Вопросы для дискуссии: +* Предоставил ли пользователь (действующее лицо) соглашение на сбор и использование данных? +* Осознал ли пользователь цель сбора данных? +* Осознал ли пользователь возможные риски от использования данных? + +#### 2.3 Интеллектуальная собственность + +[Интеллектуальная собственность](https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C) относится к нематериальным творениям, произведенным по инициативе человека, которые могут _иметь экономическую ценность_ для физических или юридических лиц. + +Вопросы для дискуссии: +* Имеют ли собранные данные экономическую ценность для пользователя или компании? +* Обладает ли **пользователь** интеллектуальной собственностью в данном случае? +* Обладает ли **компания** интеллектуальной собственностью в данном случае? +* Если права на собственность существуют, как мы защищаем их? + +#### 2.4 Приватность данных + +[Приватность данных](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) или информационная приватность относится к сохранению приватности пользователя и защиты его личности относительно пользовательской идентифицирующей информации. + +Вопросы для дискуссии: +* Защищены ли пользовательские (персональные) данные от взломов и утечек? +* Доступны ли пользовательские данные только уполномоченным пользователям и окружениям? +* Сохраняется ли анонимность пользователя при передаче и распространении данных? +* Может ли пользователь быть идентифицирован из анонимизированного датасета? + + +#### 2.5 Право на забвение + +[Право на забвение](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%BE_%D0%BD%D0%B0_%D0%B7%D0%B0%D0%B1%D0%B2%D0%B5%D0%BD%D0%B8%D0%B5) или [Право на стирание](https://www.gdpreu.org/right-to-be-forgotten/) обеспечивает дополнительную защиту данных пользователя. В особенности, данное право предоставляет пользователям возможность удаления персональных данных из поисковых систем сети Интернет и других мест, позволяя, при определённых обстоятельствах, начать онлайн-историю с чистого листа без учёта предыдущих событий. + +Вопросы для дискуссии: +* Позволяет ли рассматриваемая система действующим лицам запрашивать удаление данных? +* Должен ли отзыв пользовательского соглашения вызывать автоматическое стирание данных? +* Были ли данные собраны без согласия или незаконными способами? +* Действуем ли мы согласно государственному регулированию в сфере приватности данных? + + +#### 2.6 Несбалансированный датасет + +Проблема [несбалансированного датасета или коллекции данных](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) появляется при использовании _нерепрезентативной_ выборки для разработки алгоритма, создании потенциальной несправедливости в результатах модели для различных групп. Типы искажений включают в себя систематические ошибки, ошибки наблюдателя, погрешности инструментов. + +Вопросы для дискуссии: +* Имеем ли мы дело с репрезентативным набором действующих лиц? +* Был ли протестирован собранный или созданный датасет на различные искажения? +* Можем ли мы уменьшить или избавиться от обнаруженных искажений? + + +#### 2.7 Качество данных + +[Качество данных](https://lakefs.io/data-quality-testing/) отображает пригодность собранного датасета, используемого для разработки нашего алгоритма, проверяет, удовлетворяют ли признаки и записи требованиям качества и согласованности, необходимым для целей нашего ИИ. + + +Вопросы для дискуссии: +* Собрали ли мы _пригодные_ признаки для решения нашей задачи? +* Собраны ли данные _согласованно_ с различных источников? +* Является ли датасет _полным_ с точки зрения различных условий и сценариев? +* _Достоверно_ ли отображает собранная информация реальность? + + +#### 2.8 Справедливость алгоритма + +[Справедливость алгоритма](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) указывает, дискриминирует ли созданный алгоритм отдельные группы действующих лиц и ведет ли это к [потенциальному ущербу](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) в _распределении_ (когда ресурсы недоступны или, наоборот, удерживаются отдельной группой) и в _качестве услуг_ (когда ИИ недостаточно точен для некоторых групп в отличие от других). + +Вопросы для дискуссии: +* Правильно ли мы оценили точность модели для различных групп и условий? +* Внимательно ли мы изучили созданную систему на предмет потенциального ущерба (например, на стереотипизацию)? +* Можем ли мы перепроверить данные или перетренировать модель, чтобы сократить выявленный ущерб? + + +Изучите материалы, подобные [контрольному списку справедливости ИИ](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA), чтобы узнать больше. + +#### 2.9 Искажение фактов + +[Искажение фактов в данных](https://www.sciencedirect.com/topics/computer-science/misrepresentation) указывает, вводим ли мы в заблуждение инсайтами, чтобы поддержать желаемую точку зрения, несмотря на достоверные собранные данные. + +Вопросы для дискуссии: +* Предоставляем ли мы неполные или неточные данные? +* Визуализируем ли мы данные таким образом, который ведет к ошибочным выводам? +* Используем ли мы статистические методы выборочно, чтобы манипулировать результатами? +* Существуют ли альтернативные суждения, которые могут привести к другим выводам? + + +#### 2.10 Свободный выбор + +[Иллюзия свободного выбора](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) появляется, когда система, "проектирующая выбор", использует алгоритмы принятия решений, чтобы подтолкнуть к предподчтительным действиям, и в то же время обманчиво даёт выбор и контроль над ситуацией. Эти [нечестные уловки](https://www.darkpatterns.org/) могут нанести социальный и экономический вред пользователям. Поскольку решения пользователей влияют на поведенческие паттерны, подобные действия могут привести к последующим принятиям решений, которые приумножат или продлят действие нанесённого ущерба. + +Вопросы для дискуссии: +* Понимает ли пользователь последствия принятия того или иного решения? +* Был ли пользователь осведомлён о (альтернативном) выборе и плюсах и минусах каждого исхода? +* Может ли пользователь изменить автоматический выбор или выбор, сделанный под влиянием, позднее? + + +### 3. Случаи из реальной практики + +В решении упомянутых этических вызовов в контексте реального мира нам поможет взглянуть на случаи, когда потенциальные угрозы и последствия для личности и общества наиболее выражены, когда этические нарушения упущены из виду. + +Вот некоторые примеры: + +| Этический вызов | Реальный пример | +|--- |--- | +| **Информированное согласие** | 1972 год - [Исследование сифилиса в Таскиги](https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%B8%D1%84%D0%B8%D0%BB%D0%B8%D1%81%D0%B0_%D0%B2_%D0%A2%D0%B0%D1%81%D0%BA%D0%B8%D0%B3%D0%B8) - Принявшим участие в исследовании афроамериканцам была обещана бесплатная медицинская помощь, однако их _обманули_ исследователи, не предоставив информацию о диагнозе или доступности лекарств. Многие участники умерли, заразив партнёров или детей. Исследование длилось 40 лет. | +| **Приватность данных** | 2007 год - В соревновании [от компании Netflix](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) участникам предложили _10 миллионов анонимизированных оценок фильмов от 50 тысяч клиентов_ для улучшения алгоритма рекомендаций. Однако, участники оказались способны сопоставить анонимизированные данные с персональными данными из _внешнего источника данных_ (например, комментарии на сайте IMDb) и успешно де-анонимизировать некоторых подписчиков Netflix. | +| **Систематическая ошибка** | 2013 год - городские власти города Бостона [разработали Street Bump](https://www.boston.gov/transportation/street-bump), приложение, позволяющее гражданам сообщать о дорожных выбоинах, предоставляя властям более качественные данные для поиска и ремонта. Однако, [люди из группы с низким доходом имели ограниченный доступ к машинам и смартфонам](https://hbr.org/2013/04/the-hidden-biases-in-big-data), и их дорожные проблемы не отображались в этом приложении. Разработчики совместно с учеными исправили проблемы _равного доступа и цифрового неравенства_ для большей справедливости. | +| **Справедливость алгоритма** | 2018 год - В [исследовании гендерных оттенков](http://gendershades.org/overview.html) в университете MIT при оценке точности ИИ для задачи гендерной классификации товаров были обнаружены пробелы в точности для женщин и для "цветных" людей. В 2019 году [кредитная программа компании Apple](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) предлагала меньший кредитный лимит женщинам по сравнению с мужчинами. Оба случая иллюстрируют предвзятость, ведущую к социально-экономическому ущербу. | +| **Искажение фактов** | 2020 год - [Департамент штата Джорджия выпустил графики заболеваемости COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening), которые ввели в заблуждение граждан насчёт трендов подтверждённых случаев своей хронологической неупорядоченностью. Данный пример показывает искажение фактов при помощи визуализации. | +| **Иллюзия свободного выбора** | 2020 год - Разработчики обучающего приложения [ABCmouse заплатили 10 миллионов долларов для урегулирования жалобы Федеральной торговой комиссии](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/), в которой родители были вынуждены платить за подписку, которую они не могли отменить. Данный случай иллюстрирует тёмную сторону систем с наличием выбора, в которых пользователей подталкивают к потенциально вредному выбору. | +| **Приватность данных и права пользователя** | 2021 год - [Утечка данных в компании Facebook](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) содержала данные 530 миллионов пользователей и повлекла штраф в 5 миллиардов долларов от Федеральной торговой комиссии. Компания отказалась предупреждать пользователей об утечке данных, нарушив тем самым права пользователей на прозрачность и приватный доступ. | + +Хотите узнать больше случаев из реальной жизни? Познакомьтесь с данными ресурсами: +* [Этика без прикрас](https://ethicsunwrapped.utexas.edu/case-studies) - этические дилеммы в различных отраслях. +* [Курс этики в науке о данных](https://www.coursera.org/learn/data-science-ethics#syllabus) - рассматриваются ключевые примеры из реальной практики. +* [Место, где что-то пошло не так](https://deon.drivendata.org/examples/) - список примеров от Deon. + +> 🚨 Вспомните реальные случаи из своей жизни. Сталкивались ли Вы сами или пострадали от подобных этических вызовов? Можете ли вы вспомнить по крайней мере ещё один случай, который иллюстрирует один из этических вызовов, которые мы обсудили в данном разделе? + +## Прикладная этика + +Мы рассмотрели этические концепции, вызовы и случаи из реальной жизни. Но как мы можем начать _применять_ этические принципы в наших проектах? И как мы должны _оперировать_ данными принципами для лучшего управления? Давайте рассмотрим некоторые решения проблем из реальной практики. + +### 1. Профессиональные нормы поведения + +Профессиональные нормы поведения в организации являются способом _стимулирования_ участников для поддержания её этических принципов и целей. Зафиксированные нормы являются _моральным ориентиром_ для поведения на работе, помощи сотрудникам в принятии решений, которые соответствуют принципам их организации. Они имеют силу только при добровольном согласии участников, однако многие организации предлагают дополнительные вознаграждения и штрафы, чтобы мотивировать участников на согласие. + +Примеры: + + * Нормы этики в [университете Оксфорда в городе Мюнхен](http://www.code-of-ethics.org/code-of-conduct/) + * Нормы поведения в [Ассоциации науки о данных](http://datascienceassn.org/code-of-conduct.html) (написаны в 2013 году) + * Этические и профессиональные нормы в [Ассоциации вычислительной техники](https://www.acm.org/code-of-ethics) (действуют с 1993 года) + +> 🚨 Имеете ли Вы отношение к организациям, занимающимся разработкой ПО и наукой о данных? Исследуйте их сайты на наличие зафиксированных норм этики. Какие этические принципы там определены? Как они "стимулируют" участников следовать принятым нормам? + + +### 2. Списки этических норм + +В то время как нормы профессионального поведения определяют необходимое _этичное поведение_ участников, они также принуждают к соблюдению [установленных ограничений](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), особенно в крупных проектах. Вместо этого, многие эксперты в науке о данных [поддерживают использование списков](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), которые **соединяют принципы и реальные практики** более определённым и действенным методом. + +Подобные списки конвертируют размытые вопросы в "да/нет" пункты, которые могут быть введены в действие и которые могут отслеживаться как часть стандартного процесса выпуска продукта. + +Примеры: + * [Deon](https://deon.drivendata.org/) - список этических пунктов общего назначения, созданный по [промышленным рекомендациям](https://deon.drivendata.org/#checklist-citations) с поддержкой интерфейса командной строки для удобной интеграции. + * [Список аудита приватности](https://cyber.harvard.edu/ecommerce/privacyaudit.html) содержит общие рекомендации для обработки информации с точки зрения правового и социального воздействия. + * [Чеклист справедливого ИИ](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) создан разработчиками систем ИИ для поддержки интеграции проверок справедливости в цикл разработки продуктов с ИИ. + * [22 вопросв о этике в данных и ИИ](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - более открытый список, ориентированный на первоначальное обнаружение этических проблем в контексте структуры, реализации и организации. + +### 3. Регулирование в области этики + +Этика определяет общие ценности и правильные поступки _на добровольной основе_. **Соглашение** в свою очередь принуждает _следовать закону_, если он определён, там, где он определён. **Руководство** покрывает широкий спектр способов, которыми организации пользуются для продвижения этических принципов и согласия с установленными законами. + +На сегодняшний день, руководство по этике принимает две формы внутри организации. Во-первых, оно определяет принципы **этичного ИИ** и устанавливает правила его внедрения для всех проектов организации, связанных с ИИ. Во-вторых, оно действует в соглашении с государственным **регулированием в области защиты данных** в регионах представительства организации. + + +Примеры государственного регулирования в области защиты данных и конфиденциальности: + + * `1974 год`, [Закон США о конфиденциальности](https://www.justice.gov/opcl/privacy-act-1974), регулирующий сбор, использование и раскрытие персональной информации _на государственном уровне_. + * `1996 год`, [Закон США о переносимости и подотчетности медицинского страхования (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html), защищающий персональные данные в сфере здравоохранения. + * `1998 год`, [Закон США о защите конфиденциальности детей в Интернете (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule), защищающий конфиденциальность данных детей младше 13 лет. + * `2018 год`, [Общие правила защиты данных (GDPR)](https://gdpr-info.eu/), обеспечивающий пользовательские права, защиту данных и конфиденциальность. + * `2018`, [Закон Калифорнии о конфиденциальности потребителей (CCPA)](https://www.oag.ca.gov/privacy/ccpa), предоставляющий потребителям больше _прав_ в области своих (персональных) данных. + * `2021`, китайский [Закон о защите личной информации](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/), принятый в недавном времени, применяющий одно из самых строгих в мире регулирований в области конфиденциальности данных в сети Интернет. + +> 🚨 Принятые Европейским Союзом Общие правила защиты данных (GDPR) остаются на сегодняшний день наиболее влиятельным регулированием в области приватности данных. Знали ли Вы, что они также определяют [8 прав пользователей](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) в области защиты конфиденциальности и персональных данных граждан? Узнайте подробнее, что они из себя представляют и почему они имеют значение. + +### 4. Этичная культура + +Отметим, что остаётся неосязаемый промежуток между _соглашением_ (делать достаточно, чтобы оставаться "в рамках закона") и [системными проблемами](https://www.coursera.org/learn/data-science-ethics/home/week/4) (такими, как потеря гибкости, информационная несимметричность и несправедливое распределение), который может ускорить применение ИИ в качестве оружия. + +Решение этой проблемы кроется в [совместных подходах к определению этичных культур](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f), которые выстраивают эмоциональные связи и постоянные общие ценности _во всех организациях_ отрасли. Это требует более глубокой [формализации культуры в области этики данных](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) в организациях, позволяющей _любому_ [потянуть за ниточки](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (чтобы поднять вопрос этики на ранней стадии) и провести _оценку этичности_ (например, при найме на работу) основных критериев формирования команд в проектах с ИИ. + +--- +## [Проверочный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/3) 🎯 +## Дополнительные источники + +Курсы и книги помогут Вам понять основные этические принципы и вызовы, а примеры из реальной практики помогут с прикладными вопросами этики в контексте реального мира. Вот некоторые ресурсы, с которых можно начать: + +* [Машинное обучение для начинающих (на англ.)](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - курс о справедливости от компании Microsoft. +* [Принципы ответственного ИИ](https://docs.microsoft.com/ru-ru/learn/modules/responsible-ai-principles/) - бесплатный курс от Microsoft Learn. +* [Этика в науке о данных](https://resources.oreilly.com/examples/0636920203964) - электронная книга издательства O'Reilly (M. Loukides, H. Mason и др.) +* [Этика науки о данных](https://www.coursera.org/learn/data-science-ethics#syllabus) - онлайн курс от Мичиганского университета. +* [Этика без прикрас](https://ethicsunwrapped.utexas.edu/case-studies) - случаи из реальной практики от Техасского университета. + +# Домашнее задание + +[Опишите реальный случай из этики в науке о данных](assignment.ru.md) diff --git a/1-Introduction/02-ethics/translations/assignment.ru.md b/1-Introduction/02-ethics/translations/assignment.ru.md new file mode 100644 index 00000000..f5452d38 --- /dev/null +++ b/1-Introduction/02-ethics/translations/assignment.ru.md @@ -0,0 +1,21 @@ +## Опишите реальный случай из этики в науке о данных + +## Порядок выполнения + +Вы узнали о различных [проблемах в науке о данных](README.ru.md#2-проблемы-этики) и увидели некоторые [случаи из реальной практики](README.ru.md#3-случаи-из-реальной-практики), отражающие этические вызовы в контексте реального мира. + +В данном домашнем задании Вам предстоит написать свой собственный пример, отражающий этический вызов, из Вашего личного опыта или окружения. Следуйте шагам: + +1. `Выберите этический вызов, относящийся к науке о данных`. Взгляните на [примеры из лекции](README.ru.md#2-проблемы-этики) или ознакомьтесь с примерами из Интернета, например [список Deon](https://deon.drivendata.org/examples/). + +2. `Опишите случай из реальной практики`. Вспомните ситуацию, о которой Вы слышали (заголовки, исследования и т.п.) или в которой принимали участие (на местном уровне), когда именно этот этический вызов проявился. Обдумайте вопросы в рамках этики данных и обсудите ущерб или непреднамеренные последствия, которые имели место вследствие этой проблемы. Дополнительный вопрос: подумайте о потенциальных решениях или процессах, которые могли бы помочь смягчить или устранить неблагоприятное воздействие этого вызова. + + +3. `Приведите список использованных источников`. Поделитесь одним или несколькими ресурсами (ссылки на статьи, пост в личном блоге или изображение, исследовательская онлайн статья и др.), чтобы подтвердить достоверность приведённого случая. Дополнительный вопрос: поделитесь ресурсами, которые описывают потенциальный ущерб и последствия от инцидента, или выделите положительные изменения для предотвращения его появления. + + +## Оценка + +Отлично | Достаточно | Нуждается в улучшении +--- | --- | -- | +Найден один или более этических вызовов.

Приведённый пример полно описывает случай из реальной жизни, отражающий выбранный этический вызов и подчёркивающий нежелательные последствия или ущерб, которые он вызвал.

Приведён по крайней мере один источник в доказательство существования данной проблемы. | Приведёт один этический вызов.

Кратко описан по крайне мере один нанесённый ущерб или одно последствие.

Приведены неубедительные доказательства существования данной проблемы или не приведены вообще. | Вызов верно определён.

Приведённое описание или источники не отображают или не подтверждают существование выбранной проблемы. | From f03f44adb30a19e1b806ff3e8ad64ad2da97f7aa Mon Sep 17 00:00:00 2001 From: jiwooshim <60967141+jiwooshim@users.noreply.github.com> Date: Mon, 25 Oct 2021 10:39:40 +0800 Subject: [PATCH 145/254] Create README.ko.md Korean Translation of REDAME.md --- translations/README.ko.md | 112 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 translations/README.ko.md diff --git a/translations/README.ko.md b/translations/README.ko.md new file mode 100644 index 00000000..d3ae509f --- /dev/null +++ b/translations/README.ko.md @@ -0,0 +1,112 @@ +# 초보자를 위한 데이터 사이언스 - 커리큘럼 + +[![깃허브 라이센스](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE)) +[![깃허브 기여자](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/)) +[![깃허브 문제](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/)) +[![깃허브 풀백](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/)) +[![PRs 환영](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub 시청자](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=)시청)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/) +[![깃허브 포크](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/)) +[![깃허브 스타](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/)) + +Microsoft의 Azure Cloud Advocates는 데이터 과학에 관한 10주짜리 20개 레슨 커리큘럼을 제공하게 된 것을 기쁘게 생각합니다. 각 레슨에는 예습 및 복습 퀴즈, 레슨을 완료하기 위한 서면 지침, 해결책 및 과제가 포함됩니다. 프로젝트 기반 교육학을 통해 새로운 기술을 익힐 수 있는 검증된 방법으로 학습 할 수 있습니다. + +**Hearty thanks to our authors:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Special thanks 🙏 to our [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) authors, reviewers and content contributors,** notably Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), +[Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), Tauqeer Ahmad, Yogendrasingh Pawar + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|:---:| +| 초보자를 위한 데이터 사이언스 - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + + +# 시작하기 + +> **선생님들께**, 이 커리큘럼의 사용 방법에 대해 [일부 제안사항](for-teachers.md)이 있습니다. 이 [포럼에서](https://github.com/microsoft/Data-Science-For-Beginners/discussions) 의견을 주시면 감사하겠습니다. + +> **학생분들께**, 스스로 이 커리큘럼을 활용하려면 강의 전 퀴즈부터 시작하여 강의 전 학습 과정을 읽고 나머지 과제를 완료하면 됩니다. 솔루션 코드를 복사하는 대신 레슨을 이해하여 프로젝트를 만들어 보십시오. 이 코드들의 답안은 각 프로젝트 지향 레슨에 있는 /solutions 폴더에서 찾을 수 있습니다. 또 다른 방법으로는 친구들과 함께 학습 내용을 살펴보는 스터디 그룹을 만드는 것입니다. 추가 학습은 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa)을 추천합니다. + +# 팀을 만나다 + +[![Promo video](ds-for-beginners.png)](https://youtu.be/8mzavjQSMM4 "Promo video") + + +> 🎥 프로젝트를 만든 사람들에 대한 동영상을 보려면 위의 이미지를 클릭하십시오! + +# 커리큘럼 + +우리는 이 커리큘럼을 구축하는 동안 두 가지 교육학 교리를 선택했습니다. 프로젝트 기반이며 빈번한 퀴즈를 포함하도록 하는 것입니다. 이 시리즈가 끝날 때까지 학생들은 윤리적 개념, 데이터 준비, 다양한 데이터 작업 방법, 데이터 시각화, 데이터 분석, 데이터 과학의 실제 사용 사례 등을 포함한 데이터 과학의 기본 원리를 배우게 됩니다. + +또한, 수업 전 간단한 퀴즈는 학생이 주제를 학습하려는 의도를 정하고, 수업 후 두 번째 퀴즈는 더 많은 내용을 습득할 수 있도록 합니다. 이 커리큘럼은 유연하고 재미있도록 설계되었으며 전체 또는 부분적으로 수강할 수 있습니다. 프로젝트는 소규모로 시작하여 10주가 끝날 때까지 단계별로 점점 더 복잡해집니다. + + +> [행동 강령](CODE_OF_CONITION.md), [기여](CONTRIBUTING.md), [번역](TRANSLATIONS.md) 지침을 참고하세요. 우리는 당신의 피드백을 환영합니다! + +## 각 레슨은 다음을 포함합니다. + +- 스케치노트(옵션) +- 보조 비디오(옵션) +- 사전 예습 퀴즈 +- 서면 수업 +- 프로젝트 기반 레슨: 개인 프로젝트 구축 방법에 대한 단계별 가이드 +- 쪽지 시험 +- 챌린지 +- 보충 학습자료 +- 과제 +- 복습 퀴즈 + +> **퀴즈에 대한 참고사항*: 모든 퀴즈는 [이 앱에](https://white-water-09ec41f0f.azurestaticapps.net/) 포함되어 있으며 각 3문항씩 총 40개의 퀴즈가 있습니다. 퀴즈 앱은 교육 과정과 연결되어 있지만, 원하는 경우 따로 퀴즈 앱을 실행할 수도 있습니다. 자세한 사항은 퀴즈 앱 폴더 내의 지침을 따르십시오. + +## 세부 수업내용 + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|:---:| +| 초보자를 위한 데이터 사이언스 - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + + +| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Defining Data Science | [Introduction](1-Introduction/README.md) | Learn the basic concepts behind data science and how it’s related to artificial intelligence, machine learning, and big data. | [lesson](1-Introduction/01-defining-data-science/README.md) [video](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Data Science Ethics | [Introduction](1-Introduction/README.md) | Data Ethics Concepts, Challenges & Frameworks. | [lesson](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Defining Data | [Introduction](1-Introduction/README.md) | How data is classified and its common sources. | [lesson](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Introduction to Statistics & Probability | [Introduction](1-Introduction/README.md) | The mathematical techniques of probability and statistics to understand data. | [lesson](1-Introduction/04-stats-and-probability/README.md) [video](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Working with Relational Data | [Working With Data](2-Working-With-Data/README.md) | Introduction to relational data and the basics of exploring and analyzing relational data with the Structured Query Language, also known as SQL (pronounced “see-quell”). | [lesson](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Working with NoSQL Data | [Working With Data](2-Working-With-Data/README.md) | Introduction to non-relational data, its various types and the basics of exploring and analyzing document databases. | [lesson](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Working with Python | [Working With Data](2-Working-With-Data/README.md) | Basics of using Python for data exploration with libraries such as Pandas. Foundational understanding of Python programming is recommended. | [lesson](2-Working-With-Data/07-python/README.md) [video](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Data Preparation | [Working With Data](2-Working-With-Data/README.md) | Topics on data techniques for cleaning and transforming the data to handle challenges of missing, inaccurate, or incomplete data. | [lesson](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Visualizing Quantities | [Data Visualization](3-Data-Visualization/README.md) | Learn how to use Matplotlib to visualize bird data 🦆 | [lesson](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Visualizing Distributions of Data | [Data Visualization](3-Data-Visualization/README.md) | Visualizing observations and trends within an interval. | [lesson](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Visualizing Proportions | [Data Visualization](3-Data-Visualization/README.md) | Visualizing discrete and grouped percentages. | [lesson](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Visualizing Relationships | [Data Visualization](3-Data-Visualization/README.md) | Visualizing connections and correlations between sets of data and their variables. | [lesson](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Meaningful Visualizations | [Data Visualization](3-Data-Visualization/README.md) | Techniques and guidance for making your visualizations valuable for effective problem solving and insights. | [lesson](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Introduction to the Data Science lifecycle | [Lifecycle](4-Data-Science-Lifecycle/README.md) | Introduction to the data science lifecycle and its first step of acquiring and extracting data. | [lesson](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Analyzing | [Lifecycle](4-Data-Science-Lifecycle/README.md) | This phase of the data science lifecycle focuses on techniques to analyze data. | [lesson](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Communication | [Lifecycle](4-Data-Science-Lifecycle/README.md) | This phase of the data science lifecycle focuses on presenting the insights from the data in a way that makes it easier for decision makers to understand. | [lesson](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Data Science in the Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | This series of lessons introduces data science in the cloud and its benefits. | [lesson](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 18 | Data Science in the Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Training models using Low Code tools. |[lesson](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 19 | Data Science in the Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Deploying models with Azure Machine Learning Studio. | [lesson](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 20 | Data Science in the Wild | [In the Wild](6-Data-Science-In-Wild/README.md) | Data science driven projects in the real world. | [lesson](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## 오프라인 액세스 + +[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인으로 실행할 수 있습니다. 이 repo를 포크하여 로컬 컴퓨터에 [Docsify (설치)](https://docsify.js.org/#/quickstart)를 설치한 다음 이 repo의 루트 폴더에 'docsify serve'를 입력하면 됩니다. 웹 사이트는 로컬 호스트의 포트 3000에서 제공됩니다: 'localhost:3000'. + +> 참고: 노트북은 Docsify를 통해 렌더링되지 않으므로 노트북을 실행해야 할 때는 Python 커널을 실행하는 VS Code에서 별도로 렌더링하십시오. + +## PDF + +[여기](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf) 링크를 통해 커리큘럼의 PDF를 찾아보십시오. + +# 기여 + +번역에 기여하시겠습니까? 커리큘럼의 전부 또는 일부를 번역하려면 [번역](TRANSLATIONS.md)의 내용을 참고하십시오. + +# 기타 커리큘럼 + +우리 팀은 아래의 다른 커리큘럼도 제작 및 제공합니다! + +- [초보자용 웹 개발](https://aka.ms/webdev-beginners) +- [초보자용 IoT](https://aka.ms/iot-beginners) +- [초보자용 데이터 과학](https://aka.ms/datascience-beginners) From 131157e87c347e31c1a587c0d9a1c0ccf1695755 Mon Sep 17 00:00:00 2001 From: alo_sanchez Date: Sun, 24 Oct 2021 21:59:13 -0500 Subject: [PATCH 146/254] [ES-spanish] Translation Cap 3 and 09 - Fixed some typos --- .../translations/README.es.md | 2 +- .../translations/assignment.es.md | 2 +- 3-Data-Visualization/translations/README.es.md | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.es.md b/3-Data-Visualization/09-visualization-quantities/translations/README.es.md index e01f7379..80167cf5 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/README.es.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.es.md @@ -1,4 +1,4 @@ -# Visualización de cantidades +# Visualización de Cantidades |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/09-Visualizing-Quantities.png)| |:---:| diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md index 60fcb875..c40ce264 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md @@ -1,4 +1,4 @@ -# Líneas, Scatters y Barras +# Líneas, Dispersiones y Barras ## Instrucciones diff --git a/3-Data-Visualization/translations/README.es.md b/3-Data-Visualization/translations/README.es.md index 63386387..602e1969 100644 --- a/3-Data-Visualization/translations/README.es.md +++ b/3-Data-Visualization/translations/README.es.md @@ -8,11 +8,11 @@ Visualizar datos es una de las tareas más importantes de un científico de dato En estas cinco lecciones, podrás explorar datos provenientes de la naturaleza y crear interesantes y hermosas visualizaciones usando varias técnicas. ### Tópicos -1. [Visualización de cantidades](09-visualization-quantities/README.md) -2. [Visualización de la distribución](10-visualization-distributions/README.md) -3. [Visualización de proporciones](11-visualization-proportions/README.md) -4. [Visualización de relaciones](12-visualization-relationships/README.md) -5. [Hacer visualizaciones significativas](13-meaningful-visualizations/README.md) +1. [Visualización de cantidades](../09-visualization-quantities/translations/README.es.md) +2. [Visualización de distribuciones](../10-visualization-distributions/translations/README.es.md) +3. [Visualización de proporciones](../11-visualization-proportions/translations/README.es.md) +4. [Visualización de relaciones](../12-visualization-relationships/translations/README.es.md) +5. [Hacer visualizaciones significativas](../13-meaningful-visualizations/translations/README.es.md) ### Créditos From 0ce31143d518ca62288fca94f1155e70efc29752 Mon Sep 17 00:00:00 2001 From: sarthak Date: Mon, 25 Oct 2021 09:57:25 +0545 Subject: [PATCH 147/254] added nepali translation oF DS in wild --- 6-Data-Science-In-Wild/translations/README.Nepali.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 6-Data-Science-In-Wild/translations/README.Nepali.md diff --git a/6-Data-Science-In-Wild/translations/README.Nepali.md b/6-Data-Science-In-Wild/translations/README.Nepali.md new file mode 100644 index 00000000..be4c0202 --- /dev/null +++ b/6-Data-Science-In-Wild/translations/README.Nepali.md @@ -0,0 +1,11 @@ +# जंगली प्रारूप मा डाटा विज्ञान + +डाटा विज्ञानको वास्तविक दुनियामा प्रयोग। + +### विषय + +1. [वास्तविक दुनियामा डाटा विज्ञान](20-Real-World-Examples/README.md) + +### क्रेडिट + +[नित्या नरसिम्हन](https://twitter.com/nitya) द्वारा ❤️ को साथ लेखिएको। From 9fdf226aabe6630db2abbe37a87b6dbe2425ca1d Mon Sep 17 00:00:00 2001 From: pranavsingla100 <90247887+pranavsingla100@users.noreply.github.com> Date: Mon, 25 Oct 2021 17:42:33 +0530 Subject: [PATCH 148/254] Create for-teachers.hi.md --- translations/for-teachers.hi.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 translations/for-teachers.hi.md diff --git a/translations/for-teachers.hi.md b/translations/for-teachers.hi.md new file mode 100644 index 00000000..be538c76 --- /dev/null +++ b/translations/for-teachers.hi.md @@ -0,0 +1,23 @@ +## शिक्षकों के लिए + +क्या आप इस पाठ्यक्रम का उपयोग अपनी कक्षा में करना चाहेंगे? कृपया निःसंकोच! + +वास्तव में, आप इसे GitHub क्लासरूम का उपयोग करके GitHub के भीतर ही उपयोग कर सकते हैं। + +ऐसा करने के लिए, इस रेपो का प्रतिरूप करें। आपको प्रत्येक पाठ के लिए एक रेपो बनाने की आवश्यकता होगी, इसलिए आपको प्रत्येक फ़ोल्डर को एक अलग रेपो में निकालने की आवश्यकता होगी। इस तरह, [GitHub Classroom](https://classroom.github.com/classrooms) प्रत्येक पाठ को अलग से उठा सकता है। + +ये [पूरे निर्देश](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) से आपको पता चल जाएगा कि आप अपनी कक्षा कैसे सेट अप करें। + +## रेपो का इस प्रकार उपयोग करना + +यदि आप इस रेपो का उपयोग करना चाहते हैं, जैसा कि यह वर्तमान में खड़ा है, बिना गिटहब क्लासरूम का उपयोग किए, यह भी किया जा सकता है। आपको अपने छात्रों के साथ संवाद करने की आवश्यकता होगी कि कौन सा पाठ एक साथ काम करना है। + +एक ऑनलाइन प्रारूप (ज़ूम, टीम, या अन्य) में आप क्विज़ के लिए ब्रेकआउट रूम बना सकते हैं, और छात्रों को सीखने के लिए तैयार होने में मदद करने के लिए सलाह दे सकते हैं। फिर छात्रों को प्रश्नोत्तरी के लिए आमंत्रित करें और एक निश्चित समय पर अपने उत्तर 'मुद्दों' के रूप में जमा करें। आप असाइनमेंट के साथ भी ऐसा ही कर सकते हैं, यदि आप चाहते हैं कि छात्र खुले में मिलकर काम करें। + +यदि आप अधिक निजी प्रारूप पसंद करते हैं, तो अपने छात्रों से पाठ्यक्रम, पाठ दर पाठ, निजी रिपो के रूप में अपने स्वयं के गिटहब रेपो में फोर्क करने के लिए कहें, और आपको पहुंच प्रदान करें। फिर वे क्विज़ और असाइनमेंट को निजी तौर पर पूरा कर सकते हैं और उन्हें आपके क्लासरूम रेपो पर मुद्दों के माध्यम से आपको सबमिट कर सकते हैं। + +ऑनलाइन कक्षा प्रारूप में इस काम को करने के कई तरीके हैं। कृपया हमें बताएं कि आपके लिए सबसे अच्छा क्या काम करता है! + +## कृपया हमें अपने विचार दें! + +हम इस पाठ्यक्रम को आपके और आपके छात्रों के लिए कारगर बनाना चाहते हैं। कृपया हमें चर्चा बोर्डों में प्रतिक्रिया दें! From 2e6985efaf96412597f594ad7f64ba36578cecb0 Mon Sep 17 00:00:00 2001 From: pranavsingla100 <90247887+pranavsingla100@users.noreply.github.com> Date: Mon, 25 Oct 2021 18:00:19 +0530 Subject: [PATCH 149/254] Update for-teachers.hi.md --- translations/for-teachers.hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/for-teachers.hi.md b/translations/for-teachers.hi.md index be538c76..98cd0b39 100644 --- a/translations/for-teachers.hi.md +++ b/translations/for-teachers.hi.md @@ -1,6 +1,6 @@ ## शिक्षकों के लिए -क्या आप इस पाठ्यक्रम का उपयोग अपनी कक्षा में करना चाहेंगे? कृपया निःसंकोच! +क्या आप इस पाठ्यक्रम का उपयोग अपनी कक्षा में करना चाहेंगे? कृपया निःसंकोच करें! वास्तव में, आप इसे GitHub क्लासरूम का उपयोग करके GitHub के भीतर ही उपयोग कर सकते हैं। From 38c8ae68c54f72007de32213ed66fb0fd172a14a Mon Sep 17 00:00:00 2001 From: alo_sanchez Date: Mon, 25 Oct 2021 08:12:19 -0500 Subject: [PATCH 150/254] [ES-spanish] Translation Cap 3-10 - Visualizing Distributions #132 --- .../translations/README.es.md | 193 ++++++++++++++++++ .../translations/assignment.es.md | 10 + 2 files changed, 203 insertions(+) create mode 100644 3-Data-Visualization/10-visualization-distributions/translations/assignment.es.md diff --git a/3-Data-Visualization/10-visualization-distributions/translations/README.es.md b/3-Data-Visualization/10-visualization-distributions/translations/README.es.md index e69de29b..5849ae88 100644 --- a/3-Data-Visualization/10-visualization-distributions/translations/README.es.md +++ b/3-Data-Visualization/10-visualization-distributions/translations/README.es.md @@ -0,0 +1,193 @@ +# Visualización de Distribuciones + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Visualización de Distribuciones - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +En la lección anterior, aprendiste algunos datos interesantes sobre un conjunto de datos acerca de las aves de Minnesota. Encontraste algunos datos erróneos visualizando los valores atípicos y observaste las diferencias entre las categorías de aves según su longitud máxima. + +## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) +## Explora el conjunto de datos sobre aves + +Otra forma de profundizar en los datos es observar su distribución, o cómo se organizan los datos a lo largo de un eje. Quizás, por ejemplo, te gustaría conocer la distribución general para este conjunto de datos, de la envergadura máxima o la masa corporal máxima de las aves de Minnesota. + +Descubramos algunos hechos sobre las distribuciones de los datos en este conjunto de datos. En el archivo _notebook.ipynb_ en la raíz de la carpeta de esta lección, importa Pandas, Matplotlib, y tus datos: + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +En general, puedes ver rápidamente la forma en que se distribuyen los datos usando un gráfico de dispersión como hicimos en la lección anterior: + +```python +birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8)) + +plt.title('Max Length per Order') +plt.ylabel('Order') +plt.xlabel('Max Length') + +plt.show() +``` + +Esto da una visión general de la distribución de la longitud del cuerpo por orden de las aves, pero no es la forma óptima de mostrar las verdaderas distribuciones. Esa tarea se suele realizar creando un Histograma. + +## Trabajando con histogramas + +Matplotlib ofrece muy buenas formas de visualizar la distribución de los datos utilizando Histogramas. Este tipo de gráfico es como un gráfico de barras en el que la distribución se puede ver a través de la subida y bajada de las barras. Para construir un histograma, necesitas datos numéricos. Para construir un Histograma, puedes trazar un gráfico definiendo el tipo como 'hist' para Histograma. Este gráfico muestra la distribución de MaxBodyMass para todo el rango de datos numéricos del conjunto de datos. Al dividir el conjunto de datos que se le da en intervalos más pequeños, puede mostrar la distribución de los valores de los datos: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) +plt.show() +``` +![distribución en todo el conjunto de datos](../images/dist1.png) + +Como puedes ver, la mayoría de los más de 400 pájaros de este conjunto de datos se encuentran en el rango de menos de 2000 para su masa corporal máxima. Puedes obtener más información sobre los datos cambiando el parámetro `bins` a un número mayor, algo así como 30: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) +plt.show() +``` +![distribución en todo el conjunto de datos con un parámetro de bins más grande](../images/dist2.png) + +Este gráfico muestra la distribución de forma un poco más granular. Se podría crear un gráfico menos sesgado hacia la izquierda asegurándose de que sólo se seleccionan datos dentro de un rango determinado: + +Filtra tus datos para obtener sólo las aves cuya masa corporal es inferior a 60, y mostrar 40 `bins`: + +```python +filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] +filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) +plt.show() +``` +![histograma filtrado](../images/dist3.png) + +✅ Prueba otros filtros y puntos de datos. Para ver la distribución completa de los datos, elimina el filtro `['MaxBodyMass']` para mostrar las distribuciones etiquetadas. + +El histograma ofrece algunas mejoras de color y etiquetado para probar también: + +Crea un histograma 2D para comparar la relación entre dos distribuciones. Comparemos `MaxBodyMass` vs. `MaxLength`. Matplotlib ofrece una forma integrada de mostrar la convergencia utilizando colores más brillantes: + +```python +x = filteredBirds['MaxBodyMass'] +y = filteredBirds['MaxLength'] + +fig, ax = plt.subplots(tight_layout=True) +hist = ax.hist2d(x, y) +``` +Parece haber una correlación esperada entre estos dos elementos a lo largo de un eje esperado, con un punto de convergencia particularmente fuerte: + +![diagrama 2D](../images/2D.png) + +Los histogramas funcionan bien por defecto para los datos numéricos. ¿Y si necesita ver las distribuciones según los datos de texto? +## Explorar el conjunto de datos para ver las distribuciones según los datos de texto + +Este conjunto de datos también incluye buena información sobre la categoría de ave, su género, especie y familia, así como su estado de conservación. Exploremos esta información sobre la conservación. Cuál es la distribución de las aves según su estado de conservación? + +> ✅ En el conjunto de datos, se utilizan varios acrónimos para describir el estado de conservación. Estas siglas proceden de la [Lista Roja de Categorías de la UICN](https://www.iucnredlist.org/), una organización que cataloga el estado de las especies. +> +> - CR: En peligro crítico +> - EN: En peligro de extinción +> - EX: Extinta +> - LC: Preocupación Menor +> - NT: Casi amenazada +> - VU: Vulnerable + +Estos son valores basados en texto, por lo que tendrás que hacer una transformación para crear un histograma. Utilizando el dataframe de FilteredBirds, muestra su estado de conservación junto con su envergadura mínima. ¿Qué es lo que ves? + +```python +x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] +x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan'] +x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan'] +x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan'] +x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan'] +x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan'] + +kwargs = dict(alpha=0.5, bins=20) + +plt.hist(x1, **kwargs, color='red', label='Extinct') +plt.hist(x2, **kwargs, color='orange', label='Critically Endangered') +plt.hist(x3, **kwargs, color='yellow', label='Endangered') +plt.hist(x4, **kwargs, color='green', label='Near Threatened') +plt.hist(x5, **kwargs, color='blue', label='Vulnerable') +plt.hist(x6, **kwargs, color='gray', label='Least Concern') + +plt.gca().set(title='Conservation Status', ylabel='Max Body Mass') +plt.legend(); +``` + +![colación de la envergadura y la conservación](../images/histogram-conservation.png) + +No parece haber una buena correlación entre la envergadura mínima y el estado de conservación. Prueba otros elementos del conjunto de datos utilizando este método. También puedes probar diferentes filtros. ¿Encuentras alguna correlación? + +## Gráficos de densidad + +Habrás notado que los histogramas que hemos visto hasta ahora están "escalonados" y no fluyen suavemente en un arco. Para mostrar un gráfico de densidad más suave, puedes probar con un gráfico de densidad. + +Para trabajar con gráficos de densidad, familiarízate con una nueva biblioteca de trazado, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). + +Cargando Seaborn, intenta un gráfico de densidad básico: + +```python +import seaborn as sns +import matplotlib.pyplot as plt +sns.kdeplot(filteredBirds['MinWingspan']) +plt.show() +``` +![gráfico de densidad](../images/density1.png) + +Puedes ver cómo el gráfico se asemeja al anterior para los datos de envergadura mínima; sólo que es un poco más suave. De acuerdo con la documentación de Seaborn, "En relación con un histograma, KDE puede producir un gráfico que es menos desordenado y más interpretable, especialmente cuando se dibujan múltiples distribuciones. Pero tiene el potencial de introducir distorsiones si la distribución subyacente está acotada o no es suave. Al igual que un histograma, la calidad de la representación también depende de la selección de buenos parámetros de suavización." [fuente](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) En otras palabras, los valores atípicos, como siempre, harán que tus gráficos se comporten mal. + +Si quieres volver a ver esa línea dentada de MaxBodyMass en el segundo gráfico que construiste, podrías suavizarla muy bien recreándola con este método: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass']) +plt.show() +``` +![línea de masa corporal lisa ](../images/density2.png) + +Si quieres una línea suave, pero no demasiado suave, edita el parámetro `bw_adjust`: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) +plt.show() +``` +![línea de masa corporal menos suave](../images/density3.png) + +✅ Lee acerca de los parámetros disponibles para este tipo de gráfico y experimenta. + +Este tipo de gráfico ofrece bonitas visualizaciones explicativas. Con unas pocas líneas de código, por ejemplo, se puede mostrar la densidad de masa corporal máxima por orden de aves: + +```python +sns.kdeplot( + data=filteredBirds, x="MaxBodyMass", hue="Order", + fill=True, common_norm=False, palette="crest", + alpha=.5, linewidth=0, +) +``` + +![masa corporal por orden](../images/density4.png) + +También puedes mapear la densidad de varias variables en un gráfico. Observa la longitud máxima y mínima de un ave en comparación con su estado de conservación: + +```python +sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") +``` + +![densidades múltiples, superpuestas](../images/multi.png) + +Tal vez valga la pena investigar si la agrupación de aves "Vulnerables" según su longitud tiene sentido o no. + +## 🚀 Desafío + +Los histogramas son un tipo de gráfico más sofisticado que los gráficos de dispersión básicos, los gráficos de barras o los gráficos de líneas. Haz una búsqueda en internet para encontrar buenos ejemplos del uso de histogramas. ¿Cómo se utilizan, qué demuestran y en qué campos o áreas de investigación suelen utilizarse? + +## [Cuestionario posterior a la clase](https://red-water-0103e7a0f.azurestaticapps.net/quiz/19) + +## Repaso y Autoestudio + +En esta lección, has utilizado Matplotlib y empezado a trabajar con Seaborn para mostrar gráficos más sofisticados. Investiga un poco sobre `kdeplot` en Seaborn, una "curva de densidad de probabilidad continua en una o más dimensiones". Lee [la documentación](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) para entender cómo funciona. + +## Asignación + +[Aplica tus habilidades](assignment.es.md) diff --git a/3-Data-Visualization/10-visualization-distributions/translations/assignment.es.md b/3-Data-Visualization/10-visualization-distributions/translations/assignment.es.md new file mode 100644 index 00000000..e054011d --- /dev/null +++ b/3-Data-Visualization/10-visualization-distributions/translations/assignment.es.md @@ -0,0 +1,10 @@ +# Aplica tus habilidades + +## Instrucciones + +Hasta ahora, has trabajado con el conjunto de datos de aves de Minnesota para descubrir información sobre las cantidades de aves y la densidad de población. Practica tu aplicación de estas técnicas probando un conjunto de datos diferente, quizás procedente de [Kaggle](https://www.kaggle.com/). Construye un cuaderno para contar una historia sobre este conjunto de datos, y asegúrate de utilizar histogramas al hablar de él. +## Rúbrica + +Ejemplar | Adecuado | Necesita mejorar +--- | --- | -- | +Un cuaderno se presenta con anotaciones sobre este conjunto de datos, incluyendo su fuente, y utiliza al menos 5 histogramas para descubrir hechos sobre los datos. | Un cuaderno se presenta con anotaciones incompletas o con errores. | Un cuaderno se presenta sin anotaciones e incluye errores. \ No newline at end of file From 324803974c44b7fe6ff09475e66b6dd539e40aa7 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Tue, 26 Oct 2021 20:15:58 +0530 Subject: [PATCH 151/254] Create assignment.hi.md --- .../translations/assignment.hi.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 1-Introduction/03-defining-data/translations/assignment.hi.md diff --git a/1-Introduction/03-defining-data/translations/assignment.hi.md b/1-Introduction/03-defining-data/translations/assignment.hi.md new file mode 100644 index 00000000..a68dc7fa --- /dev/null +++ b/1-Introduction/03-defining-data/translations/assignment.hi.md @@ -0,0 +1,65 @@ +# डाटासेट को वर्गीकृत करना + +## निर्देश + +इस असाइनमेंट मे निम्नलिखित प्रॉम्प्ट को देख कर डाटा को पहचाने व एक या उससे ज्यादा डाटा टाइप मे वर्गीकृत करें: + +**स्ट्रक्चर टाइप**: संरचित, अर्ध्य-संरचित अथवा असंरचित + +**वैल्यू टाइप**: गुणात्मक अथवा मात्रात्मक + +**सोर्स टाइप**: मुख्य अथवा माध्यमिक + +1. एक कंपनी को अधिग्रहित किया गया है और अब उसकी पेरन्ट कंपनी है| डाटा वैज्ञानिकों को पेरन्ट कंपनी से ग्राहकों के फओबने नंबर की सूची प्राप्त हुई है| + +स्ट्रक्चर टाइप: + +वैल्यू टाइप: + +सोर्स टाइप: + +--- + +2. एक स्मार्ट वाच उसको पहनने वाले का हृदय दर का माप ले रही है, जो की JSON फॉर्मैट मे है| + +स्ट्रक्चर टाइप: + +वैल्यू टाइप: + +सोर्स टाइप: + +--- + +3. कुछ कर्मचारियो का कार्यस्थल सर्वेक्षण जो की एक CSV फाइल मे संग्रहीत है| + +स्ट्रक्चर टाइप: + +वैल्यू टाइप: + +सोर्स टाइप: + +--- + +4. कुछ खगोल वैज्ञानिक एक आकाशगंगा के डेटाबेस को जांच रहे हैं जो अंतरिक्ष जांच से मिला है| उसकी डाटा मे हर आकाशगंगा मे स्थित ग्रहों की संख्या है| + +स्ट्रक्चर टाइप: + +वैल्यू टाइप: + +सोर्स टाइप: + +--- + +5. एक वयऐक्टिक फाइनैन्स एप कुछ APIs के सहारे एक व्यक्ति के आर्थिक खाते से जुड़ता है व उनकी कुल योग्यता निकलता है| यूजर अपनी सारी लेनदेन को एक स्प्रेड्शीट की तरह पंक्ति और स्तम्भ के रूप मे देख सकते हैं| + +स्ट्रक्चर टाइप: + +वैल्यू टाइप: + +सोर्स टाइप: + +## सरनामा + +अनुकरणीय | पर्याप्त | सुधार चाहिए +--- | --- | -- | +डाटा के स्तोत्र को पहचानने मे, उसको भंडारित मे और निर्णय लेने मे सक्षम थे | समाधान के कुछ हिस्से विस्तृत नहीं हैं, डाटा को संग्रहीत करना नहीं बताया गया है, कम से कम दो क्षेत्रों का वर्णन है | समाधान के सिर्फ कुछ ही हिस्सों का वर्णन है, सिर्फ एक क्षेत्र पर विचार किया है| From fb42e969bfa93aec62fec1d3ef3089f88487bfe4 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Wed, 27 Oct 2021 00:49:03 +0300 Subject: [PATCH 152/254] 1-3 defining data translated --- .../translations/README.ru.md | 76 +++++++++++++++++++ .../translations/assignment.ru.md | 65 ++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 1-Introduction/03-defining-data/translations/README.ru.md create mode 100644 1-Introduction/03-defining-data/translations/assignment.ru.md diff --git a/1-Introduction/03-defining-data/translations/README.ru.md b/1-Introduction/03-defining-data/translations/README.ru.md new file mode 100644 index 00000000..2c045fbd --- /dev/null +++ b/1-Introduction/03-defining-data/translations/README.ru.md @@ -0,0 +1,76 @@ +# Что такое данные? + +|![ Рисунок [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/03-DefiningData.png)| +|:---:| +|Что такое данные - _Рисунок [@nitya](https://twitter.com/nitya)_ | + +Данные - это факты, информация, наблюдения и измерения, которые используются для совершения открытий и для принятия информированных решений. Экземпляр данных - единичная сущность внутри датасета - коллекции экземпляров. Датасеты могут иметь различный формат и структуру в зависимости от источника данных и их природы. Например, данные о ежемесячной выручке компании могут лежать в таблице, а почасовые данные сердечного ритма с умных часов - в формате [JSON](https://stackoverflow.com/a/383699). Очень часто дата сайентистам приходится работать с разными типами данных в рамках одного датасета. + +В данном уроке мы сосредоточимся на описании и классификации данных по их характеристикам и источникам. + + +## [Вступительный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) + +## Классификация данных +**"Сырые" данные** - это необработанные данные, полученные из источника без дополнительного анализа или организации. Для того, чтобы понять, что содержит в себе датасет, необходимо привести данные к формату, одинаково понятному как человеку, так и методам, которые могут быть использованы при их анализе. Структура датасета характеризует его содержание, которое делится на структурированные, неструктурированные и полуструктурированные данные. Эти типы структуры могут изменяться в зависимости от источника, но в конечном счёте все равно принадлежат одной из трёх упомянутых категорий. + + +### Количественные данные +Количественные данные - это численные наблюдения внутри датасета, которые обычно могут быть проанализированы, измерены и использованы при расчетах. Примеры таких данных: население страны, рост человека или поквартальная выручка компании. При дополнительном анализе, количественные данные могут быть использованы для обнаружения сезонных трендов в Индексе качества воздуха (AQI) или при оценке вероятности пробок в час пик в обычный рабочий день. + + +### Качественные данные +Качественные данные, также известные как категориальные, - это данные, которые не могут быть объективно измерены, в отличие от количественных наблюдений. В общем случае, они представляют из себя различные форматы субъективных данных, которые оценивают качество чего-либо, например товара или процесса. Иногда, качественные данные представлены в численном формате, но не могут быть обработаны обычными математическими методами, как например номера телефонов или временные интервалы. Примеры качественных данных: комментарии к видео, марка и модель автомобиля, любимый цвет Вашего близкого друга. Количественные данные можно использовать для того, чтобы понять, какие товары больше нравятся потребителями или определить популярные ключевые слова в резюме претендентов. + + +### Структурированные данные +Структурированные данные - это данные, которые организованы в строки и столбцы, при этом каждая строка имеет одинаковый набор столбцов. Стоблцы обозначают величину определённого типа и имеют название, отражающее эту величину, в то время как строки содержат значения этой величины. Столбцы часто имеют специальный набор правил или ограничений для значений, чтобы гарантировать соответствие между столбцом и значениями в нём. Представьте таблицу клиентов, в которой каждая строка должна иметь номер телефона и номера телефонов никогда не содержат букв. Таким образом, можно применить правило к столбцу номеров телефона, чтобы убедиться, что он не содержит пустых значений и содержит только цифры. + +Преимущество структурированных данных в том, что они могут быть организованы таким образом, который соотносится с другим набором структурированных данных. Однако, из-за того, что данные должны быть организованны определённым способом, внесение изменений в общую структуру может быть затруднительным. Например, добавление колонки с адресом электронного ящика в таблицу клиентов, которая не может быть пустой, означает, что Вам необходимо продумать, как добавить эти значения в существующие строки датасета, соответствующие клиентам. + +Примеры структурированных данных: таблицы, реляционные базы данных, телефонные номера, выписки из банка. + + +### Неструктурированные данные +Неструктурированные данные обычно не могут быть организованы по строкам или столбцам и не имеют строгого формата и набора правил. Благодаря тому, что неструктурированные данные содержат меньше ограничений на свою структуру, добавить новую информацию в них гораздо легче, чем в случае со структурированными данными. Если датчик, измеряющий давление каждые две минуты, получит обновление, которое позволит измерять и сохранять температуру, то в случае неструктурированных данных нет необходимости изменять уже существующие данные. Однако, такой подход требует более тщательного анализа и исследования выбранного типа данных. Например, специалист, который хочет найти среднюю температуру за предыдущий месяц из показаний датичков, может обнаружить, что датчики в некоторых случаях записали "е" чтобы обозначить поломку, соответственно, данные будут неполными. + +Примеры неструктурированных данных: текстовые файлы, текстовые сообщения, видеофайлы. + + +### Полуструктурированные данные +Полуструктурированные данные имеют свойства как структурированных, так и неструктурированных данных. Обычно, они не соответствуют табличному формату, но организованы таким образом, который считается структурированным и могут иметь фиксированный формат данных и набор правил. Структура может отличаться от источника к источнику, от строго определённой иерархии до чего-то более гибкого, что позволяет более простое слияние с новой информацией. Метаданные - это индикаторы, которые помогают понять, как данные организованы и хранятся, и имеют различные наименования в зависимости от типа данных. Наиболее распространённые наименования метаданных: теги, элементы, сущности и аттрибуты. Например, обычное электронное письмо имеет тему, тело и набор адресатов и может быть организовано по адресам и датам отправки. + +Примеры полуструктурированных данных: HTML страницы, CSV файлы, файлы JSON. + +## Источники данных + +Источник данных - место, где данные были изначально сгенерированы, или где они "лежат", оно может отличаться от того, как и когда данные были собраны. Данные, сгенерированные пользователем (пользователями) называются первичными, а собранные из источника и пригодные для использования - вторичными. Например, группа специалистов, собравших наблюдения в тропическом лесу, буду называть их первичными, а если они поделятся ими с другими, то относительно другой группы данные будут считаться вторичными. + +Базы данных - общепринятый источник данных, который управляется и поддерживается системой управления базой данных (СУБД), в которой пользователи при помощи команд инициируют запросы для получения данных. В качестве источников могут выступать аудиофайлы, изображения, видеофайлы, а также таблицы, например файлы Excel. Интернет - распространённое место для хранения данных, где можно найти как базы данных, так и файлы. Прикладные программные интерфейсы, также известные как API, дают программистам возможность создавать различные способы обмена данными с внешними пользователями через Интернет, а парсинг веб-страниц извлекает информацию с сайтов. На уроках [работы с данными](../../../2-Working-With-Data) мы обратим внимание на то, как использовать различные источники данных. + +## Заключение + +На данном уроке мы изучили: + +- Что такое данные +- Как можно описать данные +- Классификацию данных +- Где хранятся данные + +## 🚀 Задача + +Портал Kaggle - отличный источник датасетов. Воспользуйтесь [средством поиска по датасетам](https://www.kaggle.com/datasets), чтобы найти интересные и охарактеризовать 3-5 датасетов по следующим критериям: + +- Являются ли данные количественными или качественными? +- Являются ли данные структурированными, неструктурированными, полуструктурированными? + + +## [Проверочный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/5) + + +## Материалы для самостоятельного изучения + +- Глава курса Microsoft Learn под названием ["Классификация данных"](https://docs.microsoft.com/ru-ru/learn/modules/choose-storage-approach-in-azure/2-classify-data) содержит детальную классификацию структурированных, полуструктурированных и неструктурированных данных. + +## Домашнее задание +[Классификация датасетов](assignment.ru.md) diff --git a/1-Introduction/03-defining-data/translations/assignment.ru.md b/1-Introduction/03-defining-data/translations/assignment.ru.md new file mode 100644 index 00000000..0752f4d7 --- /dev/null +++ b/1-Introduction/03-defining-data/translations/assignment.ru.md @@ -0,0 +1,65 @@ +# Классификация датасетов + +## Порядок выполнения + +Следуйте подсказкам в данном домашнем задании, чтобы определить и классифицировать данные по следующим категориям: + +**Структура**: структурированные, полуструктурированные, неструктурированные + +**Величины**: количественные или качественные + +**Источники**: первичные или вторичные + +1. Компания была приобретена и теперь у нее есть материнская компания. Дата сайентисты получили таблицу с номерами телефонов клиентов от материнской компании. + +Структура: + +Величина: + +Источник: + +--- + +2. Умные часы собрали данные сердечного ритма владельца и сохранили сырые данные в формате JSON. + +Структура: + +Величина: + +Источник: + +--- + +3. Опрос настроения сотрудников, результаты которого хранятся в файле CSV. + +Структура: + +Величина: + +Источник: + +--- + +4. Астрофизики получили доступ к базе данных галактик, которая была собрана с помощью космического зонда. Данные содержат номера планет в переделах каждой галактики. + +Структура: + +Величина: + +Источник: + +--- + +5. Приложение для управления финансами использует API для соединения с финансовым счетом пользователя для того, чтобы рассчитать его траты. Пользователи могут видеть свои транзакции в строках и столбцах, напоминающих таблицу. + +Структура: + +Величина: + +Источник: + +## Оценка + +Отлично | Достаточно | Нуждается в улучшении +--- | --- | -- | +Верно определены все структуры, величины и источники |Верно определены структура, величины и источники трёх примеров целиком |Верно определены структура, величины и источники двух и менее примеров целиком | \ No newline at end of file From 2e7da071177fbcaf47b106d73dd53a57f39053e6 Mon Sep 17 00:00:00 2001 From: Jasmine Greenaway Date: Wed, 27 Oct 2021 13:56:24 -0400 Subject: [PATCH 153/254] Rename README.np.md to README.ne.md --- 3-Data-Visualization/translations/{README.np.md => README.ne.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 3-Data-Visualization/translations/{README.np.md => README.ne.md} (100%) diff --git a/3-Data-Visualization/translations/README.np.md b/3-Data-Visualization/translations/README.ne.md similarity index 100% rename from 3-Data-Visualization/translations/README.np.md rename to 3-Data-Visualization/translations/README.ne.md From 54a0d2d57e5ba03ac87a31a32630657be0378174 Mon Sep 17 00:00:00 2001 From: Jasmine Greenaway Date: Wed, 27 Oct 2021 13:57:03 -0400 Subject: [PATCH 154/254] Rename README.np.md to README.ne.md --- 1-Introduction/translations/{README.np.md => README.ne.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 1-Introduction/translations/{README.np.md => README.ne.md} (100%) diff --git a/1-Introduction/translations/README.np.md b/1-Introduction/translations/README.ne.md similarity index 100% rename from 1-Introduction/translations/README.np.md rename to 1-Introduction/translations/README.ne.md From ab26be85b96881e0357cb128100e29004222799a Mon Sep 17 00:00:00 2001 From: Jasmine Greenaway Date: Wed, 27 Oct 2021 13:57:35 -0400 Subject: [PATCH 155/254] Rename README.NEPALI.MD to README.ne.md --- translations/{README.NEPALI.MD => README.ne.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename translations/{README.NEPALI.MD => README.ne.md} (100%) diff --git a/translations/README.NEPALI.MD b/translations/README.ne.md similarity index 100% rename from translations/README.NEPALI.MD rename to translations/README.ne.md From 45142c09131caf51aac116bb306e11a82e63719a Mon Sep 17 00:00:00 2001 From: Jasmine Greenaway Date: Wed, 27 Oct 2021 13:58:13 -0400 Subject: [PATCH 156/254] Rename README.np.md to README.ne.md --- .../translations/{README.np.md => README.ne.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 4-Data-Science-Lifecycle/translations/{README.np.md => README.ne.md} (100%) diff --git a/4-Data-Science-Lifecycle/translations/README.np.md b/4-Data-Science-Lifecycle/translations/README.ne.md similarity index 100% rename from 4-Data-Science-Lifecycle/translations/README.np.md rename to 4-Data-Science-Lifecycle/translations/README.ne.md From 1f8d519fba9a61082bd7cd97e279a7fa310adb97 Mon Sep 17 00:00:00 2001 From: Jasmine Greenaway Date: Wed, 27 Oct 2021 13:58:46 -0400 Subject: [PATCH 157/254] Rename README.np.md to README.ne.md --- 2-Working-With-Data/translations/{README.np.md => README.ne.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 2-Working-With-Data/translations/{README.np.md => README.ne.md} (100%) diff --git a/2-Working-With-Data/translations/README.np.md b/2-Working-With-Data/translations/README.ne.md similarity index 100% rename from 2-Working-With-Data/translations/README.np.md rename to 2-Working-With-Data/translations/README.ne.md From 373b7af19a971579a8125873946da7838d2c32e6 Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Wed, 27 Oct 2021 23:42:32 +0530 Subject: [PATCH 158/254] Rename assignment for data processing.hi.md to assignment.hi.md --- .../{assignment for data processing.hi.md => assignment.hi.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 2-Working-With-Data/07-python/translations/{assignment for data processing.hi.md => assignment.hi.md} (100%) diff --git a/2-Working-With-Data/07-python/translations/assignment for data processing.hi.md b/2-Working-With-Data/07-python/translations/assignment.hi.md similarity index 100% rename from 2-Working-With-Data/07-python/translations/assignment for data processing.hi.md rename to 2-Working-With-Data/07-python/translations/assignment.hi.md From db2f5d163f1638d7b70611fd94e08d6bb12219d6 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Thu, 28 Oct 2021 07:39:41 +0545 Subject: [PATCH 159/254] renamed file --- translations/{README.NEPALI.MD => README.np.MD} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename translations/{README.NEPALI.MD => README.np.MD} (99%) diff --git a/translations/README.NEPALI.MD b/translations/README.np.MD similarity index 99% rename from translations/README.NEPALI.MD rename to translations/README.np.MD index e1142163..46b171d0 100644 --- a/translations/README.NEPALI.MD +++ b/translations/README.np.MD @@ -90,7 +90,7 @@ Microsoft मा Azure Cloud अधिवक्ताहरु एक १०-ह ## सहयोग चाहियो! -यदि तपाइँ पाठ्यक्रम को सबै वा अंश अनुवाद गर्न चाहानुहुन्छ, कृपया हाम्रो [अनुवाद] (TRANSLATIONS.md) गाइड को पालन गर्नुहोस्। +यदि तपाइँ पाठ्यक्रम को सबै वा अंश अनुवाद गर्न चाहानुहुन्छ, कृपया हाम्रो [अनुवाद](TRANSLATIONS.md) गाइड को पालन गर्नुहोस्। ## अन्य पाठ्यक्रम From ff817ffd41c10f46299a18dfc9044625e849742f Mon Sep 17 00:00:00 2001 From: Sarthak Regmi <66667396+sarthakregmi@users.noreply.github.com> Date: Thu, 28 Oct 2021 07:41:02 +0545 Subject: [PATCH 160/254] Rename README.Nepali.md to README.np.md --- .../translations/{README.Nepali.md => README.np.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 6-Data-Science-In-Wild/translations/{README.Nepali.md => README.np.md} (100%) diff --git a/6-Data-Science-In-Wild/translations/README.Nepali.md b/6-Data-Science-In-Wild/translations/README.np.md similarity index 100% rename from 6-Data-Science-In-Wild/translations/README.Nepali.md rename to 6-Data-Science-In-Wild/translations/README.np.md From 1b3b85d6f4070f3bd1cca91af358938beb9fa35d Mon Sep 17 00:00:00 2001 From: Sarthak Regmi <66667396+sarthakregmi@users.noreply.github.com> Date: Thu, 28 Oct 2021 07:42:31 +0545 Subject: [PATCH 161/254] Rename README.Nepali.md to README.ne.md --- .../translations/{README.Nepali.md => README.ne.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 5-Data-Science-In-Cloud/translations/{README.Nepali.md => README.ne.md} (100%) diff --git a/5-Data-Science-In-Cloud/translations/README.Nepali.md b/5-Data-Science-In-Cloud/translations/README.ne.md similarity index 100% rename from 5-Data-Science-In-Cloud/translations/README.Nepali.md rename to 5-Data-Science-In-Cloud/translations/README.ne.md From f09be466f73aac492c8edf422b1a4d96eb853b96 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Thu, 28 Oct 2021 07:53:45 +0545 Subject: [PATCH 162/254] renamed again --- translations/{README.np.MD => README.ne.MD} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename translations/{README.np.MD => README.ne.MD} (100%) diff --git a/translations/README.np.MD b/translations/README.ne.MD similarity index 100% rename from translations/README.np.MD rename to translations/README.ne.MD From c0e792fd893f6d70647969bc6f722ad208980357 Mon Sep 17 00:00:00 2001 From: Mohit Jaisal Date: Fri, 29 Oct 2021 01:55:14 +0530 Subject: [PATCH 163/254] Added ds-for-beginners.gif --- README.md | 8 ++++---- ds-for-beginners.gif | Bin 0 -> 369314 bytes 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 ds-for-beginners.gif diff --git a/README.md b/README.md index c90d8ec7..c04d68fe 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur **Hearty thanks to our authors:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). -**🙏 Special thanks 🙏 to our [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) authors, reviewers and content contributors,** notably Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), +**🙏 Special thanks 🙏 to our [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) authors, reviewers and content contributors,** notably Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), Tauqeer Ahmad, Yogendrasingh Pawar |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| @@ -30,7 +30,7 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur ## Meet the Team -[![Promo video](ds-for-beginners.png)](https://youtu.be/8mzavjQSMM4 "Promo video") +[![Promo video](ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Promo video") > 🎥 Click the image above for a video about the project the folks who created it! @@ -89,9 +89,9 @@ In addition, a low-stakes quiz before a class sets the intention of the student | 20 | Data Science in the Wild | [In the Wild](6-Data-Science-In-Wild/README.md) | Data science driven projects in the real world. | [lesson](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | ## Offline access -You can run this documentation offline by using [Docsify](https://docsify.js.org/#/). Fork this repo, [install Docsify](https://docsify.js.org/#/quickstart) on your local machine, then in the root folder of this repo, type `docsify serve`. The website will be served on port 3000 on your localhost: `localhost:3000`. +You can run this documentation offline by using [Docsify](https://docsify.js.org/#/). Fork this repo, [install Docsify](https://docsify.js.org/#/quickstart) on your local machine, then in the root folder of this repo, type `docsify serve`. The website will be served on port 3000 on your localhost: `localhost:3000`. -> Note, notebooks will not be rendered via Docsify, so when you need to run a notebook, do that separately in VS Code running a Python kernel. +> Note, notebooks will not be rendered via Docsify, so when you need to run a notebook, do that separately in VS Code running a Python kernel. ## PDF A PDF of all of the lessons can be found [here](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf) diff --git a/ds-for-beginners.gif b/ds-for-beginners.gif new file mode 100644 index 0000000000000000000000000000000000000000..6834a69b49a42b75ebe06153b3f57f72a8b07889 GIT binary patch literal 369314 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 z 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 z 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

`i@ZJiS3kVH8xxe1bW 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 KG>|X?0suRQ7Vs|s literal 0 HcmV?d00001 From c8114b59804d7d592984b01f19d95f3a386d91a6 Mon Sep 17 00:00:00 2001 From: alo_sanchez Date: Thu, 28 Oct 2021 16:58:34 -0500 Subject: [PATCH 164/254] [ES-spanish] Translation Cap 3-11 - Visualizing Proportions #132 --- .../translations/README.es.md | 2 +- .../translations/README.es.md | 183 ++++++++++++++++++ .../translations/assignment.es.md | 11 ++ 3 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 3-Data-Visualization/11-visualization-proportions/translations/assignment.es.md diff --git a/3-Data-Visualization/10-visualization-distributions/translations/README.es.md b/3-Data-Visualization/10-visualization-distributions/translations/README.es.md index 5849ae88..1d18c7e9 100644 --- a/3-Data-Visualization/10-visualization-distributions/translations/README.es.md +++ b/3-Data-Visualization/10-visualization-distributions/translations/README.es.md @@ -6,7 +6,7 @@ En la lección anterior, aprendiste algunos datos interesantes sobre un conjunto de datos acerca de las aves de Minnesota. Encontraste algunos datos erróneos visualizando los valores atípicos y observaste las diferencias entre las categorías de aves según su longitud máxima. -## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) +## [Cuestionario previo](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) ## Explora el conjunto de datos sobre aves Otra forma de profundizar en los datos es observar su distribución, o cómo se organizan los datos a lo largo de un eje. Quizás, por ejemplo, te gustaría conocer la distribución general para este conjunto de datos, de la envergadura máxima o la masa corporal máxima de las aves de Minnesota. diff --git a/3-Data-Visualization/11-visualization-proportions/translations/README.es.md b/3-Data-Visualization/11-visualization-proportions/translations/README.es.md index e69de29b..4a7976b0 100644 --- a/3-Data-Visualization/11-visualization-proportions/translations/README.es.md +++ b/3-Data-Visualization/11-visualization-proportions/translations/README.es.md @@ -0,0 +1,183 @@ +# Visualización de Proporciones + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Visualización de Proporciones - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +En esta lección, utilizarás un conjunto de datos diferente centrado en la naturaleza para visualizar proporciones, como por ejemplo cuántos tipos diferentes de hongos pueblan un determinado conjunto de datos sobre setas. Vamos a explorar estos fascinantes hongos utilizando un conjunto de datos procedente de Audubon que enumera detalles sobre 23 especies de hongos con branquias de las familias Agaricus y Lepiota. Experimentarás con sabrosas visualizaciones como: + +- Gráficos de tarta 🥧 +- Gráficos de donuts 🍩 +- Gráficos de waffles 🧇 + +> 💡 Un proyecto muy interesante llamado [Charticulator](https://charticulator.com) de Microsoft Research ofrece una interfaz gratuita de arrastrar y soltar para las visualizaciones de datos. ¡En uno de sus tutoriales también utilizan este conjunto de datos de hongos! Así que puedes explorar los datos y aprender la biblioteca al mismo tiempo: [Tutorial de Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Cuestionario previo](https://red-water-0103e7a0f.azurestaticapps.net/quiz/20) + +## Conoce tus hongos 🍄 + +Los hongos son muy interesantes. Vamos a importar un conjunto de datos para estudiarlos: + +```python +import pandas as pd +import matplotlib.pyplot as plt +mushrooms = pd.read_csv('../../data/mushrooms.csv') +mushrooms.head() +``` +Una tabla con grandes datos para su análisis se imprime: + + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Poisonous | Convex | Smooth | Brown | Bruises | Pungent | Free | Close | Narrow | Black | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | +| Edible | Convex | Smooth | Yellow | Bruises | Almond | Free | Close | Broad | Black | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Grasses | +| Edible | Bell | Smooth | White | Bruises | Anise | Free | Close | Broad | Brown | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Meadows | +| Poisonous | Convex | Scaly | White | Bruises | Pungent | Free | Close | Narrow | Brown | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | + +Enseguida se nota que todos los datos son textuales. Tendrás que convertir estos datos para poder utilizarlos en un gráfico. La mayoría de los datos, de hecho, se representan como un objeto: + +```python +print(mushrooms.select_dtypes(["object"]).columns) +``` + +La salida es: + +```output +Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', + 'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color', + 'stalk-shape', 'stalk-root', 'stalk-surface-above-ring', + 'stalk-surface-below-ring', 'stalk-color-above-ring', + 'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number', + 'ring-type', 'spore-print-color', 'population', 'habitat'], + dtype='object') +``` +Toma estos datos y convierte la columna "class" en una categoría: + +```python +cols = mushrooms.select_dtypes(["object"]).columns +mushrooms[cols] = mushrooms[cols].astype('category') +``` +Ahora, si imprimes los datos de las setas, puedes ver que se han agrupado en categorías según la clase poisonous/edible (venenosa/comestible): + +| | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | ... | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ---- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| class | | | | | | | | | | | | | | | | | | | | | | +| Edible | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | +| Poisonous | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | + +Si sigues el orden presentado en esta tabla para crear tus etiquetas de categoría de clase, puedes construir un gráfico circular: + +## ¡Pastel! + +```python +labels=['Edible','Poisonous'] +plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%') +plt.title('Edible?') +plt.show() +``` +Voilá, un gráfico circular que muestra las proporciones de estos datos según estas dos clases de hongos. ¡Es bastante importante conseguir el orden de las etiquetas correcto, especialmente aquí, así que asegúrate de verificar el orden con el que se construye la matriz de etiquetas! + +![gráfico de pastel](../images/pie1.png) + +## ¡Donas! + +Algo más interesante desde el punto de vista visual que el gráfico de pastel es el gráfico de donas, que es un gráfico circular con un agujero en el centro. Veamos nuestros datos con este método. + +Observa los distintos hábitats donde crecen las setas: + +```python +habitat=mushrooms.groupby(['habitat']).count() +habitat +``` +Aquí, estás agrupando tus datos por hábitat. Hay 7 listados, así que úsalos como etiquetas para tu gráfico de donas: + +```python +labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood'] + +plt.pie(habitat['class'], labels=labels, + autopct='%1.1f%%', pctdistance=0.85) + +center_circle = plt.Circle((0, 0), 0.40, fc='white') +fig = plt.gcf() + +fig.gca().add_artist(center_circle) + +plt.title('Mushroom Habitats') + +plt.show() +``` + +![gráfico de donas](../images/donut.png) + +Este código dibuja un gráfico y un círculo central, luego añade ese círculo central en el gráfico. Edite el ancho del círculo central cambiando `0.40` por otro valor. + +Los gráficos de donas pueden ser modificados de varias maneras para cambiar las etiquetas. Las etiquetas, en particular, pueden ser resaltadas para facilitar su lectura. Obtenga más información en los [docs](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut). + +Ahora que sabes cómo agrupar tus datos y mostrarlos como un pastel o una dona, puedes explorar otros tipos de gráficos. Prueba con un gráfico waffle, que es una forma diferente de explorar la cantidad. +## ¡Waffles! + +Un gráfico de tipo "waffle" es una forma diferente de visualizar las cantidades como una matriz 2D de cuadrados. Intenta visualizar las diferentes cantidades de colores de los sombreros de los champiñones en este conjunto de datos. Para hacer esto, necesitas instalar una biblioteca de ayuda llamada [PyWaffle](https://pypi.org/project/pywaffle/) y usar Matplotlib: + +```python +pip install pywaffle +``` + +Seleccione un segmento de sus datos para agrupar: + +```python +capcolor=mushrooms.groupby(['cap-color']).count() +capcolor +``` + +Crea un gráfico de waffles creando etiquetas y luego agrupando los datos: + +```python +import pandas as pd +import matplotlib.pyplot as plt +from pywaffle import Waffle + +data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'], + 'amount': capcolor['class'] + } + +df = pd.DataFrame(data) + +fig = plt.figure( + FigureClass = Waffle, + rows = 100, + values = df.amount, + labels = list(df.color), + figsize = (30,30), + colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"], +) +``` + +Utilizando un gráfico de waffles, se pueden ver claramente las proporciones de los colores de los sombreros de este conjunto de datos de hongos. Curiosamente, ¡hay muchas hongos con el sombrero verde! + +![gráfico de waffles](../images/waffle.png) + +✅ Pywaffle soporta iconos dentro de los gráficos que utilizan cualquier icono disponible en [Font Awesome](https://fontawesome.com/). Haz algunos experimentos para crear un gráfico waffle aún más interesante usando iconos en lugar de cuadrados. + +En esta lección, aprendiste tres maneras de visualizar proporciones. En primer lugar, tienes que agrupar tus datos en categorías y luego decidir cuál es la mejor manera de mostrar los datos: pastel, dona o waffle. Todas son deliciosas y gratifican al usuario con una instantánea de un conjunto de datos. + +## 🚀 Desafío + +Intenta recrear estos sabrosos gráficos en [Charticulator](https://charticulator.com). +## [Cuestionario posterior a la clase](https://red-water-0103e7a0f.azurestaticapps.net/quiz/21) + +## Repaso y autoestudio + +A veces no es obvio cuándo utilizar un gráfico de pastel, de dona o de waffle. Aquí hay algunos artículos para leer sobre este tema: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Investiga un poco para encontrar más información sobre esta decisión pegajosa. +## Asignación + +[Pruébalo en Excel](assignment.es.md) \ No newline at end of file diff --git a/3-Data-Visualization/11-visualization-proportions/translations/assignment.es.md b/3-Data-Visualization/11-visualization-proportions/translations/assignment.es.md new file mode 100644 index 00000000..36480859 --- /dev/null +++ b/3-Data-Visualization/11-visualization-proportions/translations/assignment.es.md @@ -0,0 +1,11 @@ +## Pruébalo en Excel + +## Instrucciones + +¿Sabías que puedes crear gráficos de donas, pastel y waffle en Excel? Utilizando un conjunto de datos de su elección, crea estos tres gráficos directamente en una hoja de cálculo de Excel. + +## Rúbrica + +| Ejemplar | Adecuado | Necesita mejorar +| ------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------ | +| Una hoja de cálculo de Excel se presenta con los tres gráficos | Una hoja de cálculo de Excel se presenta con dos gráficos | Una hoja de cálculo de Excel se presenta con un solo gráfico | \ No newline at end of file From 31c917f3a061ab9cd689080456e76e5d792af464 Mon Sep 17 00:00:00 2001 From: alo_sanchez Date: Thu, 28 Oct 2021 18:57:07 -0500 Subject: [PATCH 165/254] [ES-spanish] Translation Cap 3.12 - Visualizing Relationships #132 --- .../12-visualization-relationships/README.md | 2 +- .../translations/README.es.md | 173 ++++++++++++++++++ .../translations/assignment.es.md | 11 ++ 3 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 3-Data-Visualization/12-visualization-relationships/translations/assignment.es.md diff --git a/3-Data-Visualization/12-visualization-relationships/README.md b/3-Data-Visualization/12-visualization-relationships/README.md index e9a59969..e873aedf 100644 --- a/3-Data-Visualization/12-visualization-relationships/README.md +++ b/3-Data-Visualization/12-visualization-relationships/README.md @@ -99,7 +99,7 @@ Answer: Yes, with some exceptions around the year 2003: ![line chart 1](images/line1.png) -✅ Because Seaborn is aggregating data around one line, it displays "the multiple measurements at each x value by plotting the mean and the 95% confidence interval around the mean". [source](https://seaborn.pydata.org/tutorial/relational.html). This time-consuming behavior can be disabled by adding `ci=None`. +✅ Because Seaborn is aggregating data around one line, it displays "the multiple measurements at each x value by plotting the mean and the 95% confidence interval around the mean". [Source](https://seaborn.pydata.org/tutorial/relational.html). This time-consuming behavior can be disabled by adding `ci=None`. Question: Well, in 2003 can we also see a spike in the honey supply? What if you look at total production year over year? diff --git a/3-Data-Visualization/12-visualization-relationships/translations/README.es.md b/3-Data-Visualization/12-visualization-relationships/translations/README.es.md index e69de29b..02d16e36 100644 --- a/3-Data-Visualization/12-visualization-relationships/translations/README.es.md +++ b/3-Data-Visualization/12-visualization-relationships/translations/README.es.md @@ -0,0 +1,173 @@ +# Visualización de Relaciones: Todo sobre la miel 🍯 + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Visualización de Relaciones - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +Siguiendo con el enfoque de la naturaleza de nuestra investigación, vamos a descubrir interesantes visualizaciones para mostrar las relaciones entre los distintos tipos de miel, según un conjunto de datos procedentes del [Departamento de Agricultura de Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php). + +Este conjunto de datos, compuesto por unos 600 elementos, muestra la producción de miel en muchos estados de Estados Unidos. Así, por ejemplo, se puede ver el número de colonias, el rendimiento por colonia, la producción total, las existencias, el precio por libra y el valor de la miel producida en un determinado estado entre 1998 y 2012, con una fila por año para cada estado. + +Será interesante visualizar la relación entre la producción de un estado determinado por año y, por ejemplo, el precio de la miel en ese estado. También se podría visualizar la relación entre la producción de miel por colonia de los estados. Este intervalo de años abarca el devastador "CCD" o "Colony Collapse Disorder" que se observó por primera vez en 2006 (http://npic.orst.edu/envir/ccd.html), por lo que es un conjunto de datos conmovedor para estudiar. 🐝 + +## [Cuestionario previo](https://red-water-0103e7a0f.azurestaticapps.net/quiz/22) + +En esta lección, puedes utilizar Seaborn, que ya has utilizado anteriormente, como una buena librería para visualizar las relaciones entre las variables. Es especialmente interesante el uso de la función `relplot` de Seaborn, que permite realizar gráficos de dispersión y de líneas para visualizar rápidamente las '[relaciones estadísticas](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)', que permiten al científico de datos comprender mejor cómo se relacionan las variables entre sí. + +## Gráficos de dispersión + +Utiliza un gráfico de dispersión para mostrar cómo ha evolucionado el precio de la miel, año tras año, por estado. Seaborn, utilizando `relplot`, agrupa convenientemente los datos de los estados y muestra puntos de datos tanto categóricos como numéricos. + +Empecemos por importar los datos y Seaborn: + +```python +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +honey = pd.read_csv('../../data/honey.csv') +honey.head() +``` +Observará que los datos de la miel tienen varias columnas interesantes, como el año y el precio por libra. Exploremos estos datos, agrupados por estados de Estados Unidos: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | + + +Crea un gráfico de dispersión básico para mostrar la relación entre el precio por libra de miel y su estado de origen en EE.UU. Haz que el eje `y` sea lo suficientemente alto como para mostrar todos los estados: + +```python +sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5); +``` +![gráfico de dispersión 1](../images/scatter1.png) + +Ahora, muestra los mismos datos con un esquema de color miel para exponer cómo evoluciona el precio a lo largo de los años. Puedes hacerlo añadiendo un parámetro 'hue' para visualizar el cambio, año tras año: + +> ✅ Aprende más sobre las [paletas de colores que puedes usar en Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) - ¡prueba una hermosa combinación de colores del arco iris! + +```python +sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5); +``` +![gráfico de dispersión 2](../images/scatter2.png) + +Con este cambio de color, se puede ver que obviamente hay una fuerte progresión a lo largo de los años en cuanto al precio de la miel por libra. De hecho, si se observa un conjunto de muestras en los datos para comprobarlo (elige un estado determinado, Arizona por ejemplo) se puede ver un patrón de aumento de precios año tras año, con pocas excepciones: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Otra forma de visualizar esta progresión es utilizar el tamaño, en lugar del color. Para los usuarios daltónicos, ésta podría ser una mejor opción. Edita tu visualización para mostrar un aumento de precio por un aumento de la circunferencia del punto: + +```python +sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5); +``` +Puedes ver que el tamaño de los puntos aumenta gradualmente. + +![gráfico de dispersión 3](../images/scatter3.png) + +¿Se trata de un simple caso de oferta y demanda? Debido a factores como el cambio climático y el colapso de las colonias, ¿hay menos miel disponible para la compra año tras año y, por tanto, el precio aumenta? + +Para descubrir una correlación entre algunas de las variables de este conjunto de datos, exploremos algunos gráficos de líneas. + +## Gráficos de líneas + +Pregunta: ¿Existe un claro aumento del precio de la miel por libra año tras año? Lo más fácil es descubrirlo creando un gráfico de líneas: + +```python +sns.relplot(x="year", y="priceperlb", kind="line", data=honey); +``` +Answer: Yes, with some exceptions around the year 2003: + +![gráfico de líneas 1](../images/line1.png) + +✅ Como Seaborn está agregando datos en torno a una línea, muestra "las múltiples mediciones en cada valor de x trazando la media y el intervalo de confianza del 95% en torno a la media". [Fuente](https://seaborn.pydata.org/tutorial/relational.html). Este comportamiento, que consume mucho tiempo, puede desactivarse añadiendo `ci=None`. + +Pregunta: En 2003, ¿también podemos ver un pico en la oferta de miel? ¿Y si se observa la producción total año tras año? + +```python +sns.relplot(x="year", y="totalprod", kind="line", data=honey); +``` + +![gráfico de líneas 2](../images/line2.png) + +Respuesta: La verdad es que no. Si se observa la producción total, parece haber aumentado en ese año concreto, aunque en general la cantidad de miel que se produce disminuye en esos años. + +Pregunta: En ese caso, ¿qué pudo causar ese repunte del precio de la miel en torno a 2003? + +Para descubrirlo, puedes explorar una cuadrícula de facetas. + +## Cuadrículas de facetas + +Las cuadrículas de facetas toman una faceta de su conjunto de datos (en nuestro caso, puede elegir "año" para evitar que se produzcan demasiadas facetas). Seaborn puede entonces hacer un gráfico para cada una de esas facetas de sus coordenadas x e y elegidas para una comparación visual más fácil. ¿Destaca el año 2003 en este tipo de comparación? + +Cree una cuadrícula de facetas continuando con el uso de `relplot` como recomienda [la documentación de Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid). + +```python +sns.relplot( + data=honey, + x="yieldpercol", y="numcol", + col="year", + col_wrap=3, + kind="line" +``` +En esta visualización, se puede comparar el rendimiento por colonia y el número de colonias año tras año, uno al lado del otro con un ajuste de 3 para las columnas: + +[cuadrícula de facetas](../images/facet.png) + +Para este conjunto de datos, no hay nada que destaque especialmente en cuanto al número de colonias y su rendimiento, año tras año y estado tras estado. ¿Hay alguna forma diferente de buscar una correlación entre estas dos variables? + +## Gráficos de dos líneas + +Prueba con un gráfico multilínea superponiendo dos gráficos de líneas uno encima del otro, utilizando el 'despine' de Seaborn para eliminar sus espinas superiores y derechas, y utilizando `ax.twinx` [derivado de Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx permite que un gráfico comparta el eje x y muestre dos ejes y. Así, mostrar el rendimiento por colonia y el número de colonias, superpuestos: + +```python +fig, ax = plt.subplots(figsize=(12,6)) +lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, + label = 'Number of bee colonies', legend=False) +sns.despine() +plt.ylabel('# colonies') +plt.title('Honey Production Year over Year'); + +ax2 = ax.twinx() +lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", + label ='Yield per colony', legend=False) +sns.despine(right=False) +plt.ylabel('colony yield') +ax.figure.legend(); +``` +![parcelas superpuestas](../images/dual-line.png) + +Aunque no hay nada que salte a la vista en torno al año 2003, nos permite terminar esta lección con una nota un poco más alegre: aunque en general hay un número de colonias en descenso, el número de colonias se está estabilizando aunque su rendimiento por colonia esté disminuyendo. + +¡Vamos, abejas, vamos! + +🐝❤️ +## 🚀 Desafío + +En esta lección, has aprendido un poco más sobre otros usos de los gráficos de dispersión y las cuadrículas de líneas, incluyendo las cuadrículas de facetas. Desafíate a crear una cuadrícula de facetas utilizando un conjunto de datos diferente, tal vez uno que hayas utilizado antes de estas lecciones. Fíjate en el tiempo que se tarda en crearlas y en la necesidad de tener cuidado con el número de cuadrículas que necesitas dibujar utilizando estas técnicas. +## [Cuestionario posterior a la clase](https://red-water-0103e7a0f.azurestaticapps.net/quiz/23) + +## Repaso y autoestudio + +Los gráficos de líneas pueden ser simples o bastante complejos. Lee un poco en la [documentación de Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) sobre las diversas formas en que puedes construirlos. Intenta mejorar los gráficos de líneas que construiste en esta lección con otros métodos listados en la documentación. +## Asignación + +[Sumérgete en la colmena](assignment.es.md) diff --git a/3-Data-Visualization/12-visualization-relationships/translations/assignment.es.md b/3-Data-Visualization/12-visualization-relationships/translations/assignment.es.md new file mode 100644 index 00000000..c64678b0 --- /dev/null +++ b/3-Data-Visualization/12-visualization-relationships/translations/assignment.es.md @@ -0,0 +1,11 @@ +# Sumérgete en la colmena + +## Instrucciones + +En esta lección has empezado a estudiar un conjunto de datos sobre las abejas y su producción de miel durante un periodo de tiempo en el que se han producido pérdidas en la población de colonias de abejas en general. Profundiza en este conjunto de datos y construye un cuaderno que pueda contar la historia de la salud de la población de abejas, estado por estado y año por año. ¿Descubres algo interesante en este conjunto de datos? + +## Rúbrica + +| Ejemplar | Adecuado | Necesita mejorar +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| El cuaderno se presenta con una historia anotada con al menos tres gráficos diferentes que muestran aspectos del conjunto de datos, estado sobre estado y año sobre año | El cuaderno carece de uno de estos elementos | El cuaderno carece de dos de estos elementos \ No newline at end of file From 3e92aa90beea071851217082103ff9a6ecd859a6 Mon Sep 17 00:00:00 2001 From: alo_sanchez Date: Thu, 28 Oct 2021 20:02:20 -0500 Subject: [PATCH 166/254] [ES-spanish] Translation Cap 3.13 - Meaningful Visualizations #132 --- .../translations/README.es.md | 167 ++++++++++++++++++ .../translations/assignment.es.md | 10 ++ 2 files changed, 177 insertions(+) create mode 100644 3-Data-Visualization/13-meaningful-visualizations/translations/assignment.es.md diff --git a/3-Data-Visualization/13-meaningful-visualizations/translations/README.es.md b/3-Data-Visualization/13-meaningful-visualizations/translations/README.es.md index e69de29b..14db2b57 100644 --- a/3-Data-Visualization/13-meaningful-visualizations/translations/README.es.md +++ b/3-Data-Visualization/13-meaningful-visualizations/translations/README.es.md @@ -0,0 +1,167 @@ +# Haciendo visualizaciones significativas + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Visualizaciones Significativas - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +> "Si se torturan los datos el tiempo suficiente, confesarán cualquier cosa" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Una de las habilidades básicas de un científico de datos es la capacidad de crear una visualización de datos significativa que ayude a responder a las preguntas que pueda tener. Antes de visualizar tus datos, tienes que asegurarte de que han sido limpiados y preparados, como hiciste en las lecciones anteriores. Después de eso, puedes empezar a decidir la mejor manera de presentar los datos. + +En esta lección, revisarás: + +1. Cómo elegir el tipo de gráfico adecuado +2. Cómo evitar los gráficos engañosos +3. Cómo trabajar con el color +4. Cómo estilizar los gráficos para que sean legibles +5. Cómo construir soluciones de gráficos animados o en 3D +6. Cómo construir una visualización creativa + +## [Cuestionario previo](https://red-water-0103e7a0f.azurestaticapps.net/quiz/24) + +## Elegir el tipo de gráfico adecuado + +En las lecciones anteriores, has experimentado con la construcción de todo tipo de visualizaciones de datos interesantes utilizando Matplotlib y Seaborn para la elaboración de gráficos. En general, puedes seleccionar el [tipo de gráfico correcto](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) para la pregunta que estás haciendo usando esta tabla: + +| Debes: | Debes usar: | +| -------------------------- | ------------------------------- | +| Mostrar las tendencias de los datos a lo largo del tiempo | Lineal | +| Comparar categorías | Barras, Pastel | +| Comparar totales | Pastel, Barra apilada | +| Mostrar relaciones | Dispersión, Línea, Faceta, Línea doble | +| Mostrar distribuciones | Dispersión, Histograma, Caja | +| Mostrar proporciones | Patel, Dona, Waffle | + +> ✅ Dependiendo de la composición de tus datos, es posible que tenga que convertirlos de texto a numéricos para conseguir un gráfico determinado que los soporte. + +## Evitar el engaño + +Incluso si un científico de datos tiene cuidado de elegir el gráfico adecuado para los datos correctos, hay muchas maneras en que los datos pueden ser mostrados de una manera para demostrar un punto, a menudo a costa de socavar los propios datos. Hay muchos ejemplos de gráficos e infografías engañosos. + +[![Cómo mienten los gráficos por Alberto Cairo](.././images/tornado.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie") + +> 🎥 Haz clic en la imagen de arriba para ver una conferencia sobre los gráficos engañosos + +Este gráfico invierte el eje X para mostrar lo contrario de la verdad, según la fecha: + +![gráfico malo 1](../images/bad-chart-1.png) + +[Este gráfico](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) es aún más engañoso, ya que la mirada se dirige hacia la derecha para concluir que, con el tiempo, los casos de COVID han disminuido en los distintos condados. De hecho, si se observan detenidamente las fechas, se descubre que han sido reordenadas para dar esa engañosa tendencia a la baja. + +![gráfico malo 2](../images/bad-chart-2.jpg) + +Este ejemplo notorio utiliza el color Y un eje Y invertido para engañar: en lugar de concluir que las muertes por armas de fuego se dispararon después de la aprobación de la legislación favorable a las armas, en realidad se engaña al ojo para que piense lo contrario: + +![gráfico malo 3](../images/bad-chart-3.jpg) + +Este extraño gráfico muestra cómo se puede manipular la proporción, con un efecto hilarante: + +![bad chart 4](../images/bad-chart-4.jpg) + +Comparar lo incomparable es otro truco turbio. Hay un [maravilloso sitio web](https://tylervigen.com/spurious-correlations) que trata sobre "correlaciones falsas" y muestra "hechos" que correlacionan cosas como la tasa de divorcios en Maine y el consumo de margarina. Un grupo de Reddit también recoge los [usos feos](https://www.reddit.com/r/dataisugly/top/?t=all) de los datos. + +Es importante entender lo fácil que es engañar al ojo con gráficos engañosos. Incluso si la intención del científico de datos es buena, la elección de un mal tipo de gráfico, como un gráfico circular que muestre demasiadas categorías, puede ser engañosa. + +## Color + +En el gráfico sobre la violencia con armas de fuego en Florida, ya has visto cómo el color puede proporcionar un nivel adicional de significado a los gráficos, especialmente a los que no están diseñados con bibliotecas como Matplotlib y Seaborn, que vienen con varias bibliotecas y paletas de colores. Si estás haciendo un gráfico a mano, haz un pequeño estudio de la [teoría del color](https://colormatters.com/color-and-design/basic-color-theory) + +> ✅ Al diseñar los gráficos, ten en cuenta que la accesibilidad es un aspecto importante de la visualización. Algunos de sus usuarios pueden ser daltónicos: ¿su gráfico se visualiza bien para los usuarios con problemas de visión? + +Tenga cuidado al elegir los colores de su gráfico, ya que el color puede transmitir un significado que quizá no sea el deseado. Las "damas rosas" del gráfico de "altura" de arriba transmiten un significado claramente "femenino" que se suma a la extrañeza del propio gráfico. + +Mientras que [el significado del color](https://colormatters.com/color-symbolism/the-meanings-of-colors) puede ser diferente en distintas partes del mundo, y tiende a cambiar de significado según su tonalidad. En general, los significados de los colores incluyen: + +| Color | significado | +| ------ | ------------------- | +| rojo | poder +| azul | confianza, lealtad +| amarillo | felicidad, precaución +| verde | ecología, suerte, envidia | +| púrpura | felicidad | +| naranja | vitalidad | + +Si tienes que construir un gráfico con colores personalizados, asegúrese de que tus gráficos sean accesibles y de que el color que elijas coincida con el significado que intentas transmitir. + +## Estilizar los gráficos para que sean legibles + +Los gráficos no tienen sentido si no son legibles. Tómate un momento para considerar el estilo de la anchura y la altura de tu gráfico para que se ajuste a tus datos. Si es necesario mostrar una variable (como los 50 estados), muéstrela verticalmente en el eje Y si es posible, para evitar un gráfico que se desplace horizontalmente. + +Etiqueta tus ejes, proporciona una leyenda si es necesario y ofrece información sobre herramientas para una mejor comprensión de los datos. + +Si tus datos son textuales y verbales en el eje X, puedes inclinar el texto para una mejor legibilidad. [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) ofrece gráficos en 3D, si tus datos lo permiten. Se pueden producir sofisticadas visualizaciones de datos utilizando `mpl_toolkits.mplot3d`. + +![gráficos 3D](../images/3d.png) + +## Animación y visualización de gráficos en 3D + +Algunas de las mejores visualizaciones de datos actuales son animadas. Shirley Wu tiene unas increíbles realizadas con D3, como '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', donde cada flor es una visualización de una película. Otro ejemplo de The Guardian es 'bussed out', una experiencia interactiva que combina visualizaciones con Greensock y D3 más un formato de artículo de scrollytelling para mostrar cómo la ciudad de Nueva York maneja su problema de los sin techo sacando a la gente de la ciudad en autobús. + +![autobuses](../images/busing.png) + +> "Bussed Out: How America Moves its Homeless" de [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualizaciones de Nadieh Bremer y Shirley Wu + +Aunque esta lección no es suficiente para profundizar en la enseñanza de estas potentes librerías de visualización, prueba a usar D3 en una aplicación Vue.js utilizando una librería para mostrar una visualización del libro "Dangerous Liaisons" como una red social animada. + +> "Les Liaisons Dangereuses" es una novela epistolar, o una novela presentada como una serie de cartas. Escrita en 1782 por Choderlos de Laclos, narra las viciosas maniobras sociales de dos protagonistas del duelo de la aristocracia francesa de finales del siglo XVIII, el Vizconde de Valmont y la Marquesa de Merteuil. Ambos acaban muriendo, pero no sin causar un gran daño social. La novela se desarrolla como una serie de cartas escritas a varias personas de sus círculos, tramando una venganza o simplemente creando problemas. Crea una visualización de estas cartas para descubrir los principales protagonistas de la narración, de forma visual. + +Completarás una aplicación web que mostrará una vista animada de esta red social. Utiliza una biblioteca construida para crear una [visualización de una red](https://github.com/emiliorizzo/vue-d3-network) utilizando Vue.js y D3. Cuando la aplicación se está ejecutando, se puede tirar de los nodos alrededor de la pantalla para barajar los datos. + +![vinculoa](../images/liaisons.png) + +## Proyecto: Construir un gráfico para mostrar una red usando D3.js + +> Esta carpeta de la lección incluye una carpeta `solution` donde puedes encontrar el proyecto completado, para tu referencia. + +1. Sigue las instrucciones del archivo README.md en la raíz de la carpeta de inicio. Asegúrate de que tienes NPM y Node.js funcionando en tu máquina antes de instalar las dependencias del proyecto. + +2. Abre la carpeta `starter/src`. Descubrirás una carpeta `assets` donde encontrarás un archivo .json con todas las letras de la novela, numeradas, con una anotación 'to' y 'from'. + +3. Completa el código en `components/Nodes.vue` para habilitar la visualización. Busca el método llamado `createLinks()` y añade el siguiente bucle anidado. + +Recorre el objeto .json para capturar los datos "to" y "from" de las letras y construye el objeto `links` para que la librería de visualización pueda consumirlo: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` +¡Ejecuta tu app desde la terminal (npm run serve) y disfruta de la visualización! + +## 🚀 Reto + +Date una vuelta por internet para descubrir visualizaciones engañosas. ¿Cómo engaña el autor al usuario, y, si es intencionado? Intenta corregir las visualizaciones para mostrar cómo deberían ser. + +## [Cuestionario posterior a la clase](https://red-water-0103e7a0f.azurestaticapps.net/quiz/25) + +## Revisión y Autoestudio + +Aquí hay algunos artículos para leer sobre la visualización de datos engañosa: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Eche un vistazo a estas interesantes visualizaciones de activos y artefactos históricos: + +https://handbook.pubpub.org/ + +Mira este artículo sobre cómo la animación puedes mejorar tus visualizaciones: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Asignación + +[Construye tu propia visualización personalizada](assignment.es.md) diff --git a/3-Data-Visualization/13-meaningful-visualizations/translations/assignment.es.md b/3-Data-Visualization/13-meaningful-visualizations/translations/assignment.es.md new file mode 100644 index 00000000..99677c52 --- /dev/null +++ b/3-Data-Visualization/13-meaningful-visualizations/translations/assignment.es.md @@ -0,0 +1,10 @@ +# Construye tu propio vis a medida + +## Instrucciones + +Utilizando el ejemplo de código de este proyecto para crear una red social, maqueta los datos de tus propias interacciones sociales. Podrías mapear tu uso de las redes sociales o hacer un diagrama de los miembros de tu familia. Crea una aplicación web interesante que muestre una visualización única de una red social. +## Rúbrica + +Ejemplar | Adecuado | Necesita mejorar +--- | --- | -- | +Un repo de GitHub se presenta con código que se ejecuta correctamente (intenta desplegarlo como una aplicación web estática) y tiene un README anotado que explica el proyecto | El repo no se ejecuta correctamente o no está bien documentado | El repo no se ejecuta correctamente y no está bien documentado \ No newline at end of file From 00b2a8f3c52d92b6f4dde4a62ed139e0aa632819 Mon Sep 17 00:00:00 2001 From: sarthak Date: Fri, 29 Oct 2021 10:37:10 +0545 Subject: [PATCH 167/254] added nepali translation of Data-science-in-cloud/introduction/readme --- .../17-Introduction/translations/README.ne.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 5-Data-Science-In-Cloud/17-Introduction/translations/README.ne.md diff --git a/5-Data-Science-In-Cloud/17-Introduction/translations/README.ne.md b/5-Data-Science-In-Cloud/17-Introduction/translations/README.ne.md new file mode 100644 index 00000000..fcc57aee --- /dev/null +++ b/5-Data-Science-In-Cloud/17-Introduction/translations/README.ne.md @@ -0,0 +1,101 @@ + क्लाउडमा डाटा साइंस को परिचय + +|![[(@sketchthedocs) द्वारा स्केचनोट](https://sketchthedocs.dev) ](../../../sketchnotes/17-DataScience-Cloud.png)| +|:---:| +| क्लाउड मा डाटा साइंस: परिचय - _[@nitya](https://twitter.com/nitya) द्वारा स्केचनोट_ | + + +यो पाठमा ,तपाईले क्लाउडको मूलभूत सिद्धांत सिक्नहुनेछ,अनि देख्नुहुनेछ कि तपाईले डाटा साइंस परियोजना चलाउनका लागि क्लाउड सेवाको उपयोग कत दिलचस्प हुन सक्छ । त्यसपछि हामी क्लाउडमा चल्ने वाला डाटा साइंस प्रोजेक्टको केही उदाहरण हेर्नेछौ। + + +## [प्री-लेक्चर क्विज़](https://red-water-0103e7a0f.azurestaticapps.net/quiz/32) + + +## क्लाउड के हो? + +क्लाउड, या क्लाउड कंप्यूटिंग, इंटरनेटमा हुने एक बुनियादी ढांचामा होस्ट हुन पे-एज़-यू-गो कंप्यूटिंग सेवाको एक विस्तृत श्रृंखला को डिलीवरी हो। सेवाहरुमा स्टोरेज, डेटाबेस, नेटवर्किंग, सॉफ्टवेयर, एनालिटिक्स र इंटेलिजेंट सर्विसेज जस्तो उदहारनहरु शामिल छन्। + +हामी पब्लिक, प्राइवेट र हाइब्रिड क्लाउडमा यसरी अंतर ल्याउन सक्छौ : + +* पब्लिक क्लाउड: एउटा पब्लिक क्लाउड को स्वामित्व र संचालन तेस्रो पक्षको क्लाउड सेवा प्रदातासंग हुन्छ जुन इंटरनेटबाट कंप्यूटिंग साधनबाट जनतासंग + पुग्छ। +* प्राइवेट क्लाउड: एउटा नै व्यवसाय या संगठबाट विशेष रूपमा उपयोग हुने क्लाउड कंप्यूटिंग साधनलाई संदर्भित गर्छ, जहा सेवा र निजी नेटवर्कमा बनाइएको इंफ्रास्ट्रक्चरहरु हुन्छ। +* हाइब्रिड क्लाउड: हाइब्रिड क्लाउड एउटा यस्तो सिस्टम हो जसले पब्लिक र प्राइवेट क्लाउडलाइ जोड्छ । उपयोगकर्ताले ऑन-प्रिमाइसेस डेटासेंटर छान्छन्, जहा डाटा र एप्लिकेशनको एक या अधिक पब्लिक क्लाउडमा पनि चल्न सक्छन् । + +अधिकांश क्लाउड कंप्यूटिंग सेवाए तीन श्रेणिमा विभाजित छ: सर्विसको रूपमा इंफ्रास्ट्रक्चर (IaaS), सर्विसको रूपमा प्लेटफॉर्म (PaaS) र सर्विसको रूपमा सॉफ्टवेयर (SaaS)। + +* सर्विसको रूपमा इंफ्रास्ट्रक्चर (IaaS): उपयोगकर्ताले आईटी इन्फ्रास्ट्रक्चर किराएको रुपमा लिन्छन् ः सर्वर और वर्चुअल मशीन (VMs), स्टोरेज, नेटवर्क, ऑपरेटिंग सिस्टम। +* सर्विसको रूपमा प्लेटफॉर्म (PaaS): उपयोगकर्ताले सॉफ्टवेयर ऍप्लिकेशन्सको विकास, परीक्षण, वितरण र मैनेज गर्नका लागि एक वातावरण किराएमा लिन्छन् । उपयोगकर्ताको विकास को लागि आवश्यक सर्वरको इंफ्रास्ट्रक्चर, स्टोरेज, नेटवर्क र डाटाबेस को स्थापना गर्ने या प्रबन्ध गर्नको बारेमा चिंता गर्ने आवश्यकता हुन्न। +* सर्विसको रूपमा सॉफ्टवेयर (SaaS): उपयोगकर्ताहरुलाई प्रायजसो माग र सदस्यता को आधारमा इंटरनेटमा सॉफ़्टवेयर एप्लिकेशनसम्म पहुंच प्राप्त हुन्छ ह। उपयोगकर्ताहरुको सॉफ़्टवेयर एप्लिकेशन को होस्टिंग र मैनेजिंग, बुनियादी इंफ्रास्ट्रक्चर या मेंटेनेंस, जस्तै सॉफ़्टवेयर अपग्रेड र सुरक्षा पैचिंगको बारे मा चिंता गर्ने आवश्यकता हुन्न। + +केही ठूलो क्लाउड प्रदाताको उदहारन ऐमज़ॉन वेब सर्विसेस, गूगल क्लाउड प्लेटफॉर्म और माइक्रोसॉफ्ट हो। +## डाटा साइंसको लागि क्लाउडनै किन? + +डेवलपर र आईटी पेशेवर निम्न कारणले क्लाउडमा काम गर्न छान्छन्: + +* नवाचार: क्लाउड प्रदाताद्वारा बनाएको नवीन सेवाबाट सीधै आफ्नो ऐप्समा एकीकृत गरेर आफ्नो एप्लिकेशनलाई सशक्त बनाउन सकिन्छ। +* लचक: तपाई केवल त्यो सेवाको लागि भुक्तान गर्नु हुन्छ जसको तपाईलाई आवश्यकता छ र त्यो सेवालाई एक विस्तृत श्रृंखलाबाट छान्न्न सक्नुहुनेछ । तपाई आफ्नो जरूरतको अनुसार आफ्नो सेवाको भुक्तान गर्नसक्नुहुनेछ। +* बजेट: तपाईको हार्डवेयर र सॉफ़्टवेयर किन्ने, साइट र डेटासेंटर स्थापित गर्न र चलाउनका लागि प्रारंभिक निवेश गर्ने आवश्यकता छैन र तपाई केवल त्यसैको भुक्तान गर्नेुहुनेछ हैं जसको उपयोग गर्नुहुनेछ । +* अनुमापकता: तपाई संसाधन तपाईको परियोजनाको ज़रूरतको अनुसार बडाउन सक्नुहुनेछ, जसको अर्थ यो हो कि तपाई ऐप्स कुनै पनि समयमा बाहरी कारकहरुलाई अपनाएर, कम या धेरै कंप्यूटिंग शक्ति, स्टोरेज र बैंडविड्थको उपयोग गर्नसक्नुहुनेछ। +* उत्पादकता: तपाई त्यो कार्यमा समय बिताउनको साटो , जसलाई कुनै अर्को व्यक्ति प्रबंधित गर्न सक्छ, जैसे डेटासेंटरको प्रबंध गर्नु , तपाई व्यवसायमा ध्यान केंद्रित गर्न सक्छ। +* विश्वसनीयता: क्लाउड कम्प्यूटिंग तपाईको डाटाको लगातार बैकअप लिनलाई धेरै तरीका प्रदान गर्न सक्छ र तपाई संकटको समयमा पनि आफ्नो व्यवसाय र सेवालाई चालू राख्नका लागि आपदा वसूली योजना स्थापित गर्न सक्नुहुनेछ । +* सुरक्षा: तपाई त्यो नीति र नियंत्रणबाट लाभ उठाउन सक्नुहुनेछ जसले तपाईको प्रोजेक्टको सुरक्षालाई मजबूत बनाउछ। + +यिनिहरु केही सबैभन्दा सामान्य कारण हो जसले लोग क्लाउड सेवाको उपयोग गर्न छान्नुहुनेछ।हामीले यो कुराको राम्ररी बुझ्यौ ,आउनुहोस् डाटासँग काम गर्ने डाटा वैज्ञानिकों र डेवलपर्सको कामलाई नजिकबाट र अधिक विशेष रूपबाट हेरौ,र क्लाउडले कई चुनौतियको सामना गर्न कसरी मदद गर्छ हेरौ : + +* ठूलो मात्रा में डाटा स्टोर गर्न: ठूलो सर्वरों किन्ने, प्रबंधित गर्ने र सुरक्षा गर्नेको साटो , तपाई अज़ूर कॉसमॉस डीबी , अज़ूर एसक्यूएल डेटाबेस और अज़ूर डेटा लेक स्टोरेज जस्तो समाधानको साथ अपने डाटालाई सीधै क्लाउडमा स्टोर गर्न सक्नुहुनेछ। +* डेटा एकीकरण गर्ने: डेटा एकीकरण डेटा साइंसको एक अनिवार्य हिस्सा हो, जो तपाईको डेटा संग्रहलाई कार्रवाई गर्नको लागि संक्रमण गर्न दिन्छ। क्लाउडमा दीनजाने वाला डाटा एकीकरण सेवाकोसाथ,तपाई डेटा फ़ैक्टरीको साथ विभिन्न स्रोतबाट डेटा एकत्र, रूपांतरित र एकीकृत गर्न सक्नुहुनेछ। +* डेटा प्रोसेसिंग: ठूलो मात्रामा डाटाको संसाधित गर्नका लागि अधिक कंप्यूटिंग शक्तिको आवश्यकता हुन्छ ,र सबैसँग यसको पर्याप्त शक्तिशाली मशीनको सम्म पहुंच हुदैन, यही कारनले धेरैजसो मानिस आफ्नो समाधानलाई चलाउने र डिप्लॉय गर्नका लागि क्लाउड को विशाल कंप्यूटिंग शक्ति सीधै उपयोग गर्न छान्नुहुनेछ। +* डेटा एनालिटिक्स सेवाको उपयोग : अज़ूर सिनेप्स एनालिटिक्स, अज़ूर स्ट्रीम एनालिटिक्स र अज़ूर डेटाब्रिक्स जस्तो क्लाउड सेवा तपाईको डाटा को कार्रवाई योग्य अंतर्दृष्टिमा बदलन तपाईको सहायता गर्छ। +* मशीन लर्निंग र डेटा इंटेलिजेंस सेवाको उपयोग गर्ने: स्क्रैचबाट शुरू गर्नुको बजाय, तपाई क्लाउड प्रदाताद्वारा पेश गरिएको क मशीन लर्निंग एल्गोरिदमको उपयोग अज़ूरएमएल जैसी सेवाको साथ गर्न सक्नुहुनेछ। तपाई संज्ञानात्मक सेवाको पनि उपयोग गर्न सक्नु हुनेछ जस्तै कि स्पीच-टू-टेक्स्ट, टेक्स्ट-टू-स्पीच, कंप्यूटर दृष्टि आदि। + +## क्लाउडमा डाटा साइंसको उदाहरण + +आउनुहोस् केही परिदृश्यहरुलाई हेरेर यसलाई अधिक मूर्त बनाउ। + +### रीयल-टाइम सोशल मीडिया भावना विश्लेषण +हामी मशीन लर्निंगबाट शुरू हुनेवाला मानिसद्वारा अध्ययन गरिएको परिदृश्यबाट शुरू गर्नेछौ: वास्तविक समयमा सोशल मीडिया को भावनाको विश्लेषण। + +मान्नुहोस् कि तपाई एउटा समाचार मीडिया वेबसाइट चलाउनु हुन्छ र तपाई यसलाई सम्झनका लागि लाइव डाटा को लाभ उठाउन चाहानु हुन्छ र तपाईको पाठकहरुलाई कुन सामग्रीमा रुचि हुन सक्छ ,यसको बारेमा अधिक जान्नको लागि,तपाई एक प्रोग्राम बनाउन सक्नुहुनेछ जो ट्विटर प्रकाशनबाट डेटाको रीयल-टाइम भावना विश्लेषण गर्नेछ । + +तपाई जुन प्रमुख संकेतलाई देख्नुहुनेछ, त्यो विशिष्ट विषय (हैशटैग)र भावनाको ट्वीट्स को मात्रा हो, जुन विश्लेषिकी टूलको उपयोग गरेर स्थापित गर्न सकिन्छ र निर्दिष्ट विषयको आसपासको भावना विश्लेषण गर्छ। + +यस प्रोजेक्टलाई बनाउनका लागि आवश्यक स्टेप्स यस प्रकारका छन् : + +* स्ट्रीमिंग इनपुटका लागि एक इवेंट हब बनाउने, जुन ट्विटरबाट डेटा एकत्र गर्नेछ। +* ट्विटर क्लाइंट एप्लिकेशनलाई कॉन्फ़िगर गर्ने र शुरू गर्ने, जसले ट्विटर स्ट्रीमिंग एपीआईलाई पुकार्नेछ । +* एउटा स्ट्रीम एनालिटिक्स जब बनाउने +* जब इनपुट र क्वेरी निर्दिष्ट गर्ने +* आउटपुट सिंक बनाउने र जॉब आउटपुट निर्दिष्ट गर्ने +* जब शुरू गर्ने + +पूरा प्रक्रिया हेर्नको लागी [प्रलेखन](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-40229-cxa&ocid=AID30411099) । + +### वैज्ञानिक कागजात विश्लेषण +आउनुहोस् यस पाठ्यक्रमको लेखहरुमध्य एक, [दिमित्री सोशनिकोव](http://soshnikov.com) द्वारा बनाईएको परियोजनाको एउटा उदाहरण हेरौ। + +दिमित्रीले एउटा टूल बनाउनुभयो जो कोविड पेपर्सलाई विश्लेषण गर्छ । यस परियोजनाको समीक्षा गरेेर, तपाई देख्नसक्नुहुनेछ कि तपाई एक उपकरण कसरी बनाउन सक्नुहुनेछ जसले वैज्ञानिक पत्रबाट ज्ञान प्राप्त गर्ने छ, अंतर्दृष्टि प्राप्त गर्छ र शोधकर्ताहरुलाई एक कुशल तरीकाबाट कागजातको संग्रहको माध्यमबाट नेविगेट गर्न मदत गर्छ। + +आउनुहोस् यसको लागि उपयोग गरिने विभिन्न चरणहरुलाई हेरौः +* [टेक्स्ट एनालिटिक्स फॉर हेल्थ](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-40229-cxa&ocid=AID3041109) को साथ जानकारी निकाल्न र प्री-प्रोसेस गर्न +* प्रसंस्करणलाई समानांतर राख्नका लागि [अज़ूरएमएल](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-40229-cxa&ocid=AID3041109) को उपयोग गर्ने +* [कॉसमॉस डीबी](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-40229-cxa&ocid=AID3041109) को साथ जानकारी संग्रहीत गर्न र क्वेरी गर्न +* पावर बीआईको उपयोग गरेर डेटा अन्वेषण र विज़ुअलाइज़ेशनका लागि एक इंटरैक्टिव डैशबोर्ड बनाउन + +पूरा प्रक्रिया हेर्नका लागि [दिमित्री के ब्लॉग](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) + +तपाई देख्न सक्नुहुनेछ , हामी डाटा साइन्सको प्रदर्शन गर्नका लागि धेरै तरिकाबाट क्लाउड सेवाको लाभ उठाउन सक्नुहुनेछ। +## पादटिप्पणी + +स्त्रोत: +* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109 +* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109 +* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/ + +## पोस्ट-लेक्चर क्विज़ + +[पोस्ट-लेक्चर क्विज़](https://red-water-0103e7a0f.azurestaticapps.net/quiz/33) + +## असाइनमेंट + +[मार्केट रिसर्च](./assignment.hi.md) From dc8911c0af70312703972c738633f73e52387162 Mon Sep 17 00:00:00 2001 From: sarthak Date: Fri, 29 Oct 2021 11:20:14 +0545 Subject: [PATCH 168/254] added nepali translation of Data-science-in-cloud assignment --- .../17-Introduction/translations/assignment.ne.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 5-Data-Science-In-Cloud/17-Introduction/translations/assignment.ne.md diff --git a/5-Data-Science-In-Cloud/17-Introduction/translations/assignment.ne.md b/5-Data-Science-In-Cloud/17-Introduction/translations/assignment.ne.md new file mode 100644 index 00000000..32717a14 --- /dev/null +++ b/5-Data-Science-In-Cloud/17-Introduction/translations/assignment.ne.md @@ -0,0 +1,10 @@ +# मार्केट रिसर्च + +## निर्देश + + यस पाठमा तपाईले धेरै महत्वपूर्ण क्लाउड प्रदाताहरु सिक्नभएको छ। डेटा साइंटिस्ट बारे केही खोज गर्नुहोस् र के सहायता पुर्याउन सक्नुहुन्छ सोच्नुहोस। के उनको सब्स्क्रिप्शन्स तुलनीय छ? यिनिहरु मध्यमा तीन या अधिक क्लाउड प्रदाताको पेशकशको वर्णन गर्नका लागि एउटा पेपर लेख्नुहोस्। +## स्कोर गाइड + +उदाहरणात्मक | पर्याप्त | सुधारको जरूरत हछ +--- | --- | -- | +एक पृष्ठको पेपरमा तीन क्लाउड प्रदाताको डेटा विज्ञान, प्रसादको वर्णन गरोस् र उनीहरु बीचको अंतरको बारेमा होस् | एउटा छोटो पेपर प्रस्तुत गरिएको छ | विश्लेषण पूरा नगरी एक पेपर प्रस्तुत गरिएको छ । \ No newline at end of file From 3b390afc389e4c75c8647372b92f5aa6369f9688 Mon Sep 17 00:00:00 2001 From: ycechungAI Date: Fri, 29 Oct 2021 13:49:09 -0400 Subject: [PATCH 169/254] first iteration translated working with data README to Simplified chinese --- .../translations/README.zh-cn.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 2-Working-With-Data/translations/README.zh-cn.md diff --git a/2-Working-With-Data/translations/README.zh-cn.md b/2-Working-With-Data/translations/README.zh-cn.md new file mode 100644 index 00000000..4bb2a350 --- /dev/null +++ b/2-Working-With-Data/translations/README.zh-cn.md @@ -0,0 +1,17 @@ +# 处理数据 + +![data love](images/data-love.jpg) +> 摄影者 Alexander Sinn on Unsplash + +在这些课程中, 你将学习一些数据管理, 数据操作, 和应用中使用的方式. 你将学习关系和非关系数据库, 和数据如何存储在他们中. 你将学习Python的基础, 并且你将发现一些你可以使用Python的方式来管理和挖掘数据. + +### 主题 + +1. [关系数据库](05-relational-databases/README.md) +2. [非关系数据库](06-non-relational/README.md) +3. [使用Python](07-python/README.md) +4. [准备数据](08-data-preparation/README.md) + +### 感谢 + +这些课程是用❤️写的 [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) and [Jasmine Greenaway](https://twitter.com/paladique) \ No newline at end of file From af6f262bb6d6cf7eb3bf7c5432ba43d88a72f486 Mon Sep 17 00:00:00 2001 From: ycechungAI Date: Fri, 29 Oct 2021 13:54:44 -0400 Subject: [PATCH 170/254] second iteration translated working with data README to Simplified chinese --- 2-Working-With-Data/translations/README.zh-cn.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/2-Working-With-Data/translations/README.zh-cn.md b/2-Working-With-Data/translations/README.zh-cn.md index 4bb2a350..ebcb87f9 100644 --- a/2-Working-With-Data/translations/README.zh-cn.md +++ b/2-Working-With-Data/translations/README.zh-cn.md @@ -5,13 +5,13 @@ 在这些课程中, 你将学习一些数据管理, 数据操作, 和应用中使用的方式. 你将学习关系和非关系数据库, 和数据如何存储在他们中. 你将学习Python的基础, 并且你将发现一些你可以使用Python的方式来管理和挖掘数据. -### 主题 +### 话题 1. [关系数据库](05-relational-databases/README.md) 2. [非关系数据库](06-non-relational/README.md) 3. [使用Python](07-python/README.md) 4. [准备数据](08-data-preparation/README.md) -### 感谢 +### 学分 -这些课程是用❤️写的 [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) and [Jasmine Greenaway](https://twitter.com/paladique) \ No newline at end of file +这些课程由 ❤️ [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) and [Jasmine Greenaway](https://twitter.com/paladique) \ No newline at end of file From 8aaa0c7891b63e29d1c237d1f845ed198fdf40d1 Mon Sep 17 00:00:00 2001 From: Mohit Jaisal Date: Fri, 29 Oct 2021 23:59:39 +0530 Subject: [PATCH 171/254] Gif by Mohit Jaisal credit added --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c04d68fe..c5a34100 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur [![Promo video](ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Promo video") +**Gif by** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal) + > 🎥 Click the image above for a video about the project the folks who created it! ## Pedagogy From d43fce1047f198ec256f8af79bb2bc1ff59a76d1 Mon Sep 17 00:00:00 2001 From: rym-oualha Date: Fri, 29 Oct 2021 22:51:36 +0100 Subject: [PATCH 172/254] added french readme for intro to part 1 and 2 --- 1-Introduction/translations/README.fr.md | 17 +++++++++++++++++ 2-Working-With-Data/translations/README.fr.md | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 1-Introduction/translations/README.fr.md create mode 100644 2-Working-With-Data/translations/README.fr.md diff --git a/1-Introduction/translations/README.fr.md b/1-Introduction/translations/README.fr.md new file mode 100644 index 00000000..14ba5763 --- /dev/null +++ b/1-Introduction/translations/README.fr.md @@ -0,0 +1,17 @@ +# Introduction à la science des données + +![données en action](images/data.jpg) +> Photo par Stephen Dawson sur Unsplash + +Dans ces leçons, vous découvrirez comment la science des données est définie et apprendrez les considérations éthiques qui doivent être prises en compte par un scientifique des données. Vous apprendrez également comment les données sont définies et vous vous familiariserez avec les statistiques et les probabilités, qui sont les principaux domaines académiques de la science des données. + +### Thèmes + +1. [Définition de la science des données](01-defining-data-science/README.md) +2. [Éthique de la science des données](02-ethics/README.md) +3. [Définir les données](03-defining-data/README.md) +4. [Introduction aux statistiques et aux probabilités](04-stats-and-probability/README.md) + +### Crédits + +Ces leçons ont été rédigées avec ❤️ par [Nitya Narasimhan](https://twitter.com/nitya) et [Dmitry Soshnikov](https://twitter.com/shwars). \ No newline at end of file diff --git a/2-Working-With-Data/translations/README.fr.md b/2-Working-With-Data/translations/README.fr.md new file mode 100644 index 00000000..afb98aef --- /dev/null +++ b/2-Working-With-Data/translations/README.fr.md @@ -0,0 +1,17 @@ +# Travailler avec les données + +![l'amour des données](images/data-love.jpg) +> Photo par Alexander Sinn sur Unsplash + +Dans ces leçons, vous découvrirez quelques-unes des façons dont les données peuvent être gérées, manipulées et utilisées dans les applications. Vous découvrirez les bases de données relationnelles et non relationnelles et la manière dont les données peuvent y être stockées. Vous apprendrez les principes fondamentaux de l'utilisation de Python pour gérer les données et vous découvrirez quelques-unes des nombreuses façons de travailler avec Python pour gérer et exploiter les données. + +### Thèmes + +1. [Bases de données relationnelles](05-relational-databases/README.md) +2. [Bases de données non relationnelles](06-non-relational/README.md) +3. [Travailler avec Python](07-python/README.md) +4. [Préparation des données](08-data-preparation/README.md) + +### Crédits + +Ces leçons ont été rédigées avec ❤️ par [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) et [Jasmine Greenaway](https://twitter.com/paladique) \ No newline at end of file From 9e8a91fe5c11a967e737be366977df76343b7194 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Sat, 30 Oct 2021 01:45:43 +0300 Subject: [PATCH 173/254] 1-4 stats translated --- .../translations/README.ru.md | 272 ++++++++++++++++++ .../translations/assignment.ru.md | 26 ++ 2 files changed, 298 insertions(+) create mode 100644 1-Introduction/04-stats-and-probability/translations/README.ru.md create mode 100644 1-Introduction/04-stats-and-probability/translations/assignment.ru.md diff --git a/1-Introduction/04-stats-and-probability/translations/README.ru.md b/1-Introduction/04-stats-and-probability/translations/README.ru.md new file mode 100644 index 00000000..14ca11ad --- /dev/null +++ b/1-Introduction/04-stats-and-probability/translations/README.ru.md @@ -0,0 +1,272 @@ +# Краткое введение в теорию вероятности и статистику + +|![ Рисунок [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/04-Statistics-Probability.png)| +|:---:| +| Теория вероятности и статистика - _Рисунок [@nitya](https://twitter.com/nitya)_ | + + +Статистика и теория вероятности - две связанные друг с другом области математики, которые активно применяются в науке о данных. Оперировать данными вполе возможно без глубоких знаний математики, но всё лучше знать, по крайней мере, некоторые базовые концепции. В этом уроке мы приводим краткое введение, чтобы помочь Вам их понять. + +[![Вступительное видео](../images/video-prob-and-stats.png)](https://youtu.be/Z5Zy85g4Yjw) + + +## [Вступительный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/6) + +## Вероятность и случайная величина + +**Вероятность** - число от 0 до 1, которое выражает, насколько вероятным является **событие**. Она определяется как число благоприятных исходов (которые ведут к появлению события), делённое на число всех исходов, при условии, что все исходы одинаково вероятны. Например, при броске кубика, вероятность того, что мы получим чётное числов равна 3/6 = 0.5. + +Когда мы говорим о событиях, мы используем **случайные величины**. Например, случайная величина, которая представляет собой число, выпавшее при броске кубика, принимает значения от 1 до 6. Числа от 1 до 6 в данном случае называются **пространством элементарных событий**. Мы можем говорить о вероятности случайной величины, оперируя конкретным числом, например P(X=3)=1/6. + +Случайная величина из предыдущего примера называется **дискретной**, потому что она имеет счётное пространство элементарных событий, т.е. принимает отдельные значения, которые можно перечислить. Существуют случаи, когда пространство событий представляет собой диапазон действительных чисел, или целый их набор. Такие величины называются **непрерывными**. Отличным примером такой величины является время прибытия автобуса. + + +## Распределение вероятности + +В случае случайных дискретных величин, легко описать вероятность каждого события функцией P(X). Для каждого значения *s* из пространства событий *S* она возвращает число от 0 до 1 таким образом, что сумма всех значений функции P(X=s) для всех событий равна 1. + +Наиболее широко известное распределение - **равномерное распределение**, при котором элементы пространства событий N имеют равную вероятность 1/N. + +Описать распределение вероятности непрерывной величины, принимающей значения в интервале [a,b] или в пространстве действительных чисел ℝ, гораздо сложнее. Рассмотрим случай со временем прибытия автобуса. На самом деле, для каждого отдельного времени прибытия $t$, вероятность прибытия автобуса точно в данное время равна 0! + +> Теперь Вы знаете, что события с нулевой вероятностью встречаются, и очень часто! По крайней мере, каждый раз, когда приходит автобус. + +Мы можем говорить о вероятности случайной величины, распределённой на интервале значений, напр. P(t1≤X<t2). В этом случае, распределение вероятности описывается **функцией плотности вероятности** p(x), например + +![P(t_1\le X1, x2, ..., xn. Мы можем рассчитать **среднее** (or **арифметическое среднее**) значение традиционным способом: (x1+x2+xn)/n. По мере увеличения числа элементов выборки (т.е. взять неограниченное число n→∞), мы получим среднее (также называемое **математическим ожиданием**) распределения. Обозначим его **E**(x). + +> Можно продемонстрировать, что для любого дискретного распределения, принимающего значения {x1, x2, ..., xN} с вероятностями p1, p2, ..., pN, математическое ожидание равно E(X)=x1p1+x2p2+...+xNpN. + +Чтобы определить, насколько широко распределены данные, мы можем посчитать дисперсию σ2 = ∑(xi - μ)2/n, где μ - среднее значение ряда. Величина σ называется **стандартным отклонением**, а σ2 - **дисперсией**. + + +## Мода, медиана и квартили + +Иногда, среднее значение необъективно отображает "обычное" значение в данных. Например, когда имеются несколько экстремальных значений, которые лежат далеко за пределами интервала, они могут влиять на среднее. Ещё одна полезная величина - **медиана**, значение, меньше которого половина точек, а другая половина - больше. + +Чтобы лучше понять распределение данных, полезно упомянуть **квартили**: + +* Первая квартиль, или Q1, - величина, меньше которой 25% всех данных +* Третья квартиль, или Q3 - величина, меньше которой 75% всех данных + +Взаимосвязь между медианой и квартилями мы можем изобразить графически при помощи диаграммы **ящик с усами**: + + + + +Мы также можем посчитать **интерквартильный размах** IQR=Q3-Q1 и так называемые **выбросы** - значения, оторые лежат за пределами [Q1-1.5*IQR,Q3+1.5*IQR]. + + +Для конечного распределения, которое принимает небольшое число возможных значений, хорошее "обычное" значение - то, которое появляется наиболее часто, оно называется **мода**. Она актуальна для категориальных данных, таких как цвета. Представим ситуцию, в которой у нас есть две группы людей, одни из них предпочитают красный цвет, другим больше нравится синий. Если мы закодируем цвета при помощи цифр, среднее значение для предпочитаемого цвета будет где-то в оранжево-зелёном спектре и не отобразит реальные предпочтения ни одной из групп. Однако, мода примет значение одного из цветов, или обоих, если число проголосовавших за них людей одинаково (в этом случае мы называем выборку **мультимодальной**). + +## Реальные данные + +Когда мы анализируем данные из реального мира, они зачастую не являются случайными по своей природе, в том смысле, что мы не проводим эксперименты с неизвестным результатом. Например, рассмотрим игроков бейсбольной команды и их параметры, такие как рост, вес и возраст. Эти числа не совсем случайные, но, несмотря на это, мы можем применять те же самые математические концепции. Например, последовательность весов людей может быть рассмотрена как последовательность чисел, взятых из какой-либо случайной величины. Ниже приведена последовательность весов реальных бейсбольных игроков [Главной бейсбольной лиги](http://mlb.mlb.com/index.jsp), взятых из [этого датасета](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (приводим только первые 20 значений для Вашего ознакомления) + +``` +[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] +``` + +> **Замечание**: Чтобы ознакомиться с примером работы с данным датасетом, взгляните на [соответствующий блокнот](../notebook.ipynb). Также там доступны задачи из данного урока, и Вы можете выполнить их, добавив свой код в этот блокнот. Если Вы не знаете как обращаться с данными, не переживайте, мы вернёмся к работе с данными при помощи языка Python позже. Если вы не знаете, как запускать код в Jupyter блокнотах, взгляните на [эту статью](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +Ниже приведён график "ящик с усами", отображающий среднее значение, медину и квартили для наших данных: + +![График весов](../images/weight-boxplot.png) + +Так как наши данные содержат информацию о различных **ролях** игроков, мы также может построить подобный график по ролям, это позволит нам увидеть, как параметры игроков варьируются в зависимости от роли. На этот раз отобразим рост: + +![График "ящик с усами" по ролям](../images/boxplot_byrole.png) + +Из этого графика следует, что, в среднем, бейсболист с первой базы выше ростом, чем со второй. Далее в этом уроке мы рассмотрим, как проверить эту гипотезу формально и как продемонстрировать, что наши данные обладают статистической значимостью, чтобы подтвердить нашу гипотезу. + +> При работе с реальными данными, мы предполагаем, что все экземпляры данных взяты из одного распределения. Это предположение позволяет нам применять методы машинного обучения и строить работающие предиктивные модели. + +Для того, чтобы увидеть распределение наших данных, мы можем построить график под названием **гистограмма**. Шкала X будет содержать различные интервалы весов (так называемые **столбцы**), а шкала Y - количество попаданий случайной величины в заданный интервал. + +![Гистограмма реальных данных](../images/weight-histogram.png) + +На гистограмме вы можете увидеть, что все значения сосредоточены вокруг определённого среднего веса и что чем дальше мы от этого веса, тем меньше весов находится в столбце. Т.е. крайне маловероятно, что веса бейсболистов будут сильно отличаться от среднего веса. Дисперсия весов показывает степень вероятности, с которой веса будут отличаться от своего среднего значения. + +> Если мы возьмём веса других людей, не из бейсбольной лиги, то распределение наверняка будет другим. Однако форма распределения останется той же самой, но среднее и дисперсия изменятся. Таким образом, если мы натренируем нашу модель на бейсбольных игроках, мы, вероятно, получим плохие результаты, применяя эту модель к студентам университета, потому что распределение их весов другое. + +## Нормальное распределение + +Распределение весов, которое мы наблюдали выше, крайне типичное, множество измерений величин реального мира подчиняются этому типу распределений, но с другими средним значением и дисперсией. Данное распределение называется **нормальным распределением**, и оно занимает очень важное место в статистике. + +Использование нормального распределения - верный способ сгенерировать случайные веса потенциальных бейсболистов. Как только мы узнаем средний вес `mean` и стандартное отклонение `std`, мы можем сгенерироваться 1000 примеров весов следующей командой: + +```python +samples = np.random.normal(mean,std,1000) +``` + +Если мы построим гистограмму сгенерированных примеров, мы увидим картину, очень похожую на ту, что мы видели выше. И в случае увеличения количества примеров и количества столбцов, мы можем получить изображение нормального распределения, которое более близко к идеальному: + +![Нормальное распределение с параметрами mean=0 и std.dev=1](../images/normal-histogram.png) + +*Нормальное распределение с параметрами среднее (mean) = 0 и стандартным отклонением (std.dev) = 1* + +## Доверительные интервалы + +Когда мы говорим о весе бейсболистов, мы полагаем, что существует **случайная величина W**, которая соответствует идеальному распределению вероятности весов всех бейсболистов (так называемой **популяции**). Наша последовательность весов соответствует подмножеству множества всех бейсболистов, которое мы называем **выборкой**. Интересный вопрос состоит в том, можем ли мы узнать параметры распределения W, т.е. среднее значение и дисперсию популяции? + +Самым простым решением может быть посчитать среднее и дисперсию нашей выборки. Однако, может произойти так, что наша случайная выборка не достаточно точно представляет полную популяцию. Таким образом, имеет смысл обсудить понятие **доверительных интервалов**. + +> **Доверительный интервал** - оценка реального среднего значения популяции при условии нашей выборки, которая точна для определенного уровня вероятности (или **степени достоверности**) + +Предположим у нас есть выборка X1, ..., Xn из нашего распределения. Каждый раз, когда мы выделяем выборку из нашего распределения, мы получаем различные среднее значение μ. Таким образом, μ может быть рассмотрено в качестве случайной величины. **Доверительный интервал** с уверенностью p - пара таких значений (Lp,Rp), что **P**(Lp≤μ≤Rp) = p, т.е. вероятность измеренного среднего значения попадает лежит в данном интервале с вероятностью p. + +Детальное обсуждение расчёта подобных доверительных интервалов лежит за рамками нашего краткого введения. Некоторые подробности Вы можете найти [на портале Wikipedia](https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D0%B0%D0%BB). Коротко, мы нашли распределение рассчитанного выборочного среднего по отношению к реальному среднему популяции, которое называется **распределением Стьюдента**. + +> **Интересный факт**: распределение Стьюдента названо в честь математика Уильяма Сили Госсета, который публиковал свои статьи под псевдонимом "Стьюдент". Он работал в пивоварне Гиннес и, по одной из версий, его работодатель не хотел, чтобы широкая публика знала, что на производстве использовали статистические методы для определения качества исходных материалов. + +Если мы хотим подсчитать среднее значение μ популяции с уверенностью p, нам необходимо взять *(1-p)/2-ую перцентиль* распределения Стьюдента A, которая находится в специальной таблице или рассчитывается встренными функциями статистического ПО (например языки программирования Python, R, и др.). Затем найдём интервал для μ при помощи X±A*D/√n, где X - полученное выборочное среднее, D - стандартное отклонение. + +> **Замечание**: мы также опустим обсуждение важной концепции [степени свободы](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%B8_%D1%81%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D1%8B_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9)), которая имеет прямое отношение к распределению Стьюдента. Вы также можете ознакомиться с более полными пособиями по статистике, чтобы глубже изучить данное понятие. + +Пример расчёта доверительных интервалов для весов и высот бейсболистов приведёт в [соответствующем блокноте](../notebook.ipynb). + +| p | Weight mean | +|-----|-----------| +| 0.85 | 201.73±0.94 | +| 0.90 | 201.73±1.08 | +| 0.95 | 201.73±1.28 | + +Отметим, что чем выше степень уверенности, тем шире доверительный интервал. + +## Проверка гипотез + +В нашем датасете бейсболистов есть разные роли игроков, которые могут быть агрегированы как в примере ниже (взгляните на [соответствующий блокнот](../notebook.ipynb), чтобы увидеть, как рассчитывается данная таблица): + +| Роль | Высота | Вес | Количество | +|------|--------|--------|-------| +| Кэтчер | 72.723684 | 204.328947 | 76 | +| Назначенный хиттер | 74.222222 | 220.888889 | 18 | +| Игрок первой базы | 74.000000 | 213.109091 | 55 | +| Аутфилдер | 73.010309 | 199.113402 | 194 | +| Релиф-питчер | 74.374603 | 203.517460 | 315 | +| Игрок второй базы | 71.362069 | 184.344828 | 58 | +| Шорт-стоп | 71.903846 | 182.923077 | 52 | +| Стартовый питчер | 74.719457 | 205.163636 | 221 | +| Игрок третьей базы | 73.044444 | 200.955556 | 45 | + +Мы можем отметить, что средняя высота игрока первой базы больше, чем игрока второй. Поэтому, мы можем заключить, что **игрок первой базы выше, чем игрок второй базы**. + +> Данное утверждение называется **гипотезой**, потому что мы не знаем, правдив ли данный факт. + +Однако, не всегда очевидно, можем ли мы сделать такой вывод. Из обсуждения выше мы знаем, что каждое среднее ассоциировано с доверительным интервалом, и, таким образом, эта разница может быть всего лишь статистической погрешностью. Нам необходим более формальный способ, чтобы проверить нашу гипотезу. + +Давайте посчитаем доверительные интервалы отдельно для высот игроков первой и второй баз: + +| Степень уверенности | Игрок первой базы | Игрок второй базы | +|------------|---------------|----------------| +| 0.85 | 73.62..74.38 | 71.04..71.69 | +| 0.90 | 73.56..74.44 | 70.99..71.73 | +| 0.95 | 73.47..74.53 | 70.92..71.81 | + +Мы можем заметить, что нет никакой уверенности, что интервалы пересекаются. Это подтверждает нашу гипотезу о том, что игрок первой базы выше, чем игрок второй. + +Более формально задача, которую мы решаем, состоит в том, чтобы увидеть, **являются ли два распределения вероятности одинаковыми**, или, по крайней мере, имеют те же самые параметры. Нам необходимо использовать разные тесты в зависимости от рассматриваемого распределения. В случае, когда мы знаем, что наше распределение нормальное, мы можем применять **[t-критерий Стьюдента](https://ru.wikipedia.org/wiki/T-%D0%BA%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D0%A1%D1%82%D1%8C%D1%8E%D0%B4%D0%B5%D0%BD%D1%82%D0%B0)**. + +В t-критерии Стьюдента мы рассчитываем так называемое **t-значение**, которое показывает разницу между двумя средними, обращая внимание на дисперсию. Оно показывает, что t-значение подчиняется **распределению Стьдента**, которое позволяет нам определить пороговое значение при условии степени уверенности **p** (оно также может быть вычислено или найдено в расчётных таблицах). Мы можем сравнивать t-значения с полученным пороговым значением, чтобы подтвердить или опровергнуть гипотезу. + +В языке Python, мы можем использовать библиотеку **SciPy**, которая содержит функцию `ttest_ind` (в дополнение ко многим другим полезным статистическим функциям). Она вычисляет t-значение и также проводит обратный поиск степени уверенности p-значения, поэтому мы можем просто взглянуть на степень уверенности для построения вывода. + +Например, наше сравнение между высотами игроков первой и второй баз имеет следующие результаты: +```python +from scipy.stats import ttest_ind + +tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Designated_Hitter',['Height']],equal_var=False) +print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}") +``` +``` +T-value = 7.65 +P-value: 9.137321189738925e-12 +``` + +В нашем случае, p-значение очень маленькое и означает, что существует веское доказательство того, что игрок первой базы выше. + +Существуют также и другие виды гипотез, которые мы можем хотеть проверить, например: +* Доказать, что данная выборка подчиняется некоторому распределению. В нашем случае мы полагали, что высоты распределены нормально, но данный факт требует формального статистического подтверждения. +* Доказать, что среднее значение выборки совпадает с некоторым определённым заранее значением. +* Сравнить средние нескольких выборок (например, какова разница в уровне счастья среди разных возрастных групп) + +## Закон больших чисел и центральная предельная теорема + +Одной из причин, почему нормальное распределение настолько важно, является так называемая **центральная предельная теорема**. Предположим, у нас имеется большое число N независимых величин X1, ..., XN, взятых из любого распределения со средним значением μ и дисперсией σ2. Тогда, для достаточного большого N (другими словами, при N→∞), среднее значение ΣiXi будет распределено нормально, со средним μ и дисперсией σ2/N. + +> Другая интерпретация центральной предельной теоремы заключается в том, что вне зависимости от распределения, когда вы вычисляете среднее значение суммы значений любой случайной величины, вы приходите к нормальному распределению. + +Из центральной предельной теоремы также следует, что когда N→∞, вероятность того, что выборочное среднее будет равно μ, равняется 1. Данный факт называется **законом больших чисел**. + +## Ковариация и корреляция + +Одна из задач науки о данных - нахождение зависимостей в данных. Мы говорим, что две последовательности **коррелируют**, когда они демонстрируют похожее поведение в одно и то же время, т.е. они либо растут/падают совместно, либо одна последовательность растет, когда другая падает и наоборот. Другими словами, между ними существует какая-либо связь. + +> Корреляция не обязательно означает каузацию (причинно-следственную связь) между двумя последовательностями; иногда обе переменные могут зависеть от одной внешней причины, или их корреляция может быть чистым совпадением. Однако, сильная математическая корреляция является хорошим индикатором, что две переменные как-либо связаны. + +Математически, **ковариация** - основная концепция, которая показывает связь двух случайных величин, и рассчитывается по формуле: Cov(X,Y) = **E**\[(X-**E**(X))(Y-**E**(Y))\]. Мы вычисляем стандартное отклонение обоих переменных от их средних значений, затем произведение этих отклонений. Если обе переменные отклоняются совместно, произведение будет всегда положительной величиной и приведёт к положительной ковариации. Если обе переменные отклоняются по-разному (т.е. одна снижается ниже среднего, когда другая поднимается выше), мы всегда будем получать отрицательные числа, которые приведут к отрицательной ковариации. Если отклонения не зависят друг от друга, их сумма будет примерно равна нулю. + +Абсолютная величина ковариации не может сказать нам, насколько сильная корреляция, потому что она зависит от величины реальных значений. Для того, чтобы нормализовать их, мы можем поделить ковариацию на стандартное отклонение обоих переменных и получить **корреляцию**. Очень удачно, что корреляция всегда находится в диапазоне [-1,1], где 1 означает сильную положительную корреляцию, -1 - сильную отрицательную корреляцию, а 0 - отсутствие корреляции (переменные являются независимыми). + +**Пример**: Мы можем рассчитать корреляцию между весом и ростом бейсболистм из датасета, рассмотренного выше: +```python +print(np.corrcoef(weights,heights)) +``` +В результате, мы получаем **корреляционную матрицу** наподобие этой: +``` +array([[1. , 0.52959196], + [0.52959196, 1. ]]) +``` + +> Корреляционная матрица может быть построена для любого числа входных последовательностей S1, ..., Sn. Значение Cij является коэффициентом корреляции между Si и Sj, а диагональные элементы всегда равны 1 (что по сути является автокорреляцией последовательности Si). + +В нашем случае, значение 0.52 означает, что существует некоторая корреляция между весом и ростом человека. Мы также можем построить точечный график зависимости между одной величиной от другой, чтобы оценить связь между ними визуально: + +![Связь между ростом и весом](../images/weight-height-relationship.png) + +> Больше примеров корреляции и ковариации Вы можете найти в [соответствующем ноутбуке](notebook.ipynb). + +## Заключение + +В данной главе мы изучили: + +* базовые статистические свойства данных, такие как среднее значение, дисперсия, мода и квартили +* различные распределени случайной величины, включая нормальное распределение +* как найти корреляцию между различными величинами +* как использовать математические и статистические методы, чтобы доказать некоторые гипотезы +* как вычислить доверительные интервалы случайной величины при условии данной выборки + +Хотя всё вышеперечисленное не является исчерпывающим списком тем в теории вероятности и статистике, этого должно быть достаточно для Вашего успешного погружения в этот курс. + +## 🚀 Задача + +Используя примеры из блокнота, проверьте другие гипотезы: +1. Игрок первой базы старше, чем игрок второй +2. Игрок первой базы выше, чем игрок третьей +3. Шорт-стоп выше, чем игрок второй базы + +## [Проверочный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/7) + +## Материалы для самостоятельного изучения + +Теория вероятности и статистика - это широкий набор тем, которые заслуживают отдельного курса. Если Вы хотите изучить теорию поглубже, ознакомьтесь со следующими книгами: + +1. [Carlos Fernanderz-Granda](https://cims.nyu.edu/~cfgranda/) из университета Нью-Йорка написал отличные лекционные материалы [Probability and Statistics for Data Science](https://cims.nyu.edu/~cfgranda/pages/stuff/probability_stats_for_DS.pdf) (доступны онлайн) +1. [Peter and Andrew Bruce. Practical Statistics for Data Scientists.](https://www.oreilly.com/library/view/practical-statistics-for/9781491952955/) [[примеры кода на языке R](https://github.com/andrewgbruce/statistics-for-data-scientists)]. +1. [James D. Miller. Statistics for Data Science](https://www.packtpub.com/product/statistics-for-data-science/9781788290678) [[примеры кода на языке R](https://github.com/PacktPublishing/Statistics-for-Data-Science)] + +## Домашнее задание + +[Небольшое исследование диабета](assignment.ru.md) + +## Благодарности + +Данный урок был написан с ♥️ [Дмитрием Сошниковым](http://soshnikov.com) diff --git a/1-Introduction/04-stats-and-probability/translations/assignment.ru.md b/1-Introduction/04-stats-and-probability/translations/assignment.ru.md new file mode 100644 index 00000000..70edb88f --- /dev/null +++ b/1-Introduction/04-stats-and-probability/translations/assignment.ru.md @@ -0,0 +1,26 @@ +# Небольшое исследование диабета + +В данном домашнем задании мы поработаем с небольшим датасетом пациентов с диабетом, взятым [здесь](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html). + +| | AGE | SEX | BMI | BP | S1 | S2 | S3 | S4 | S5 | S6 | Y | +|---|-----|-----|-----|----|----|----|----|----|----|----|----| +| 0 | 59 | 2 | 32.1 | 101. | 157 | 93.2 | 38.0 | 4. | 4.8598 | 87 | 151 | +| 1 | 48 | 1 | 21.6 | 87.0 | 183 | 103.2 | 70. | 3. | 3.8918 | 69 | 75 | +| 2 | 72 | 2 | 30.5 | 93.0 | 156 | 93.6 | 41.0 | 4.0 | 4. | 85 | 141 | +| ... | ... | ... | ... | ...| ...| ...| ...| ...| ...| ...| ... | + +## Порядок выполнения + +* Откройте [блокнот для домашнего задания](../assignment.ipynb) в окружении Jupyter +* Выполните все перечисленные там задачи, а именно: + [ ] Вычислите средние значения и дисперсии для всех величин + [ ] Постройте "ящики с усами" для признаков BMI, BP и Y в зависимости от пола пациента + [ ] Какие распределения имеют признаки Age, Sex, BMI и Y? + [ ] Проверьте корреляцию между различными переменными и степенью болезни (столбец Y) + [ ] Проверьте гипотезу о том, что степень диабета различается у мужчин и женщин + +## Оценка + +Отлично | Достаточно | Нуждается в улучшении +--- | --- | -- | +Все задачи выполнены, проиллюстрированы и содержат пояснения | Большинство задач выполнены, пояснения или выводы из графиков и/или полученных значений отсутствуют | Некоторые простые задачи, такие как вычисление среднего/дисперсии, выполнены, выводы на основе данных не были получены \ No newline at end of file From 9e736c04b2f5d3fb3480c68718bdf6a53fd5b80e Mon Sep 17 00:00:00 2001 From: sarthak Date: Sat, 30 Oct 2021 11:38:08 +0545 Subject: [PATCH 174/254] added nepali translation of assignment Data-science-lifecirle/analyzing --- .../translations/assignment.ne.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ne.md diff --git a/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ne.md b/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ne.md new file mode 100644 index 00000000..ceb893c6 --- /dev/null +++ b/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ne.md @@ -0,0 +1,21 @@ +# उत्तरको खोज + +यो पहिलेको पाठको [असाइनमेंट](..\14-Introduction\assignment.md) निरंतरता हो, जहां हामीले संक्षेपमा डेटा सेटमा एक नज़र लगाएका थियौ। अब हामी आंकडालाई गहिराईवाट विचार गर्नेछौ। + +फेरि, उही प्रश्न ग्राहक के जान्न चाहन्छ: **के न्यु योर्क शहरका पहेंलो ट्याक्सी यात्रुहरूले जाडो वा गर्मीमा चालकहरूलाई बढी टिप दिन्छन्?** + +तपाईंको टोली डेटा विज्ञान जीवनचक्रको [विश्लेषण] (Readme.md) चरणमा छ, जहाँ तपाईं डेटासेटहरूमा अन्वेषण डेटा विश्लेषण गर्न जिम्मेवार हुनुहुन्छ। तपाईलाई एउटा नोटबुक र डाटासेट प्रदान गरिएको छ जसमा जनवरी र जुलाई २०१९ सम्मका २०० ट्याक्सी लेनदेनहरू समावेश छन्। +## निर्देश + +यस डाइरेक्टरीमा [नोटबुक](assignment.ipnb) र [ट्याक्सी र लिमोसिन कमिसन](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi- Yellow? tabs= azureml-opendatasets)। [डेटासेट शब्दकोश] (https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_ Yellow.pdf) र [प्रयोगकर्ता गाइड](https://www1.nyc.gov/assets/tlc/) सन्दर्भ को। डाउनलोड/pdf/trip_record_user_guide.pdf) डाटा बारे थप जानकारीको लागि। + +नोटबुकमा तपाईंको आफ्नै EDA बनाउनका लागि यस पाठका केही प्रविधिहरू प्रयोग गर्नुहोस् (यदि तपाईं चाहनुहुन्छ भने कक्षहरू थप्नुहोस्) र निम्न प्रश्नहरूको जवाफ दिनुहोस्: + +- डेटामा अन्य कुन प्रभावहरूले टिप रकमलाई असर गर्न सक्छ? +- ग्राहकका प्रश्नहरूको जवाफ दिन कुन स्तम्भहरू प्रायः आवश्यक पर्दैन? +- अहिलेसम्म प्रदान गरिएको कुराको आधारमा, डेटाले मौसमी टिपिङ व्यवहारको कुनै प्रमाण दिन्छ? + +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधारको जरूरत +--- | --- | -- | From 009b2ccd6ef3f9101871184ed38d9a7f34781a0a Mon Sep 17 00:00:00 2001 From: sarthak Date: Sat, 30 Oct 2021 20:24:11 +0545 Subject: [PATCH 175/254] added nepali translation of 5-data-science-in-cloud/19-azure --- .../19-Azure/translations/assignment.ne.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md diff --git a/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md b/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md new file mode 100644 index 00000000..5d8b9338 --- /dev/null +++ b/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md @@ -0,0 +1,11 @@ +# Azure ML SDK प्रयोग गरेर डाटा विज्ञान परियोजना + +## निर्देशन + +हामीले Azure ML SDK सँग मोडेललाई तालिम, डिप्लोय, र उपभोग गर्न Azure ML प्लेटफर्म कसरी प्रयोग गर्ने भनेर हेर्यौं। अब केहि डेटा को लागी वरिपरि हेर्नुहोस् जुन तपाईले अर्को मोडेललाई प्रशिक्षित गर्न, प्रयोग गर्न र उपभोग गर्न सक्नुहुन्छ। तपाईंले Kaggle र [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-40229. -cxa&ocid=AID3041109) मा डाटासेट फेला पार्न सक्नुहुन्छ। + +## रूब्रिक + +|अनुकरणीय | पर्याप्त | सुधारको आवश्यकता | + +| AutoML कन्फिगरेसन गरिरहँदा, तपाईंले कुन प्यारामिटरहरू प्रयोग गर्न सक्नुहुन्छ भनी हेर्न SDK कागजात हेर्नुभयो। तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण चलाउनुभयो, र तपाईंले मोडेल स्पष्टीकरण जाँच गर्नुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो।|तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण चलाउनुभयो, र तपाईंले मोडेल स्पष्टीकरण जाँच गर्नुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो। | तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण दिनुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो। | \ No newline at end of file From bf1224e50e9a4ee70fec13cf1922abae6417aa85 Mon Sep 17 00:00:00 2001 From: swapnilregmi Date: Sat, 30 Oct 2021 20:36:16 +0545 Subject: [PATCH 176/254] nepali translation added in 3-Data-visualization\9-visualization-quantites assignment --- .../09-visualization-quantities/translations/assignment.ne.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md new file mode 100644 index 00000000..e69de29b From e47fac5c9eab016135e58635b25c028822fa7dd5 Mon Sep 17 00:00:00 2001 From: swapnilregmi Date: Sat, 30 Oct 2021 20:48:48 +0545 Subject: [PATCH 177/254] nepali translation added in assignment --- .../06-non-relational/translations/assignment.ne.md | 0 .../translations/assignment.ne.md | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 2-Working-With-Data/06-non-relational/translations/assignment.ne.md diff --git a/2-Working-With-Data/06-non-relational/translations/assignment.ne.md b/2-Working-With-Data/06-non-relational/translations/assignment.ne.md new file mode 100644 index 00000000..e69de29b diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md index e69de29b..a14c69e4 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/assignment.ne.md @@ -0,0 +1,11 @@ +# रेखाहरू, स्क्याटरहरू र बारहरू + +## निर्देशनहरू + +यस पाठमा, तपाईंले यस डेटा सेटको बारेमा रोचक तथ्यहरू देखाउन लाइन चार्टहरू, स्क्याटर चार्टहरू, र बार चार्टहरूसँग काम गर्नुभएको छ। यस असाइनमेन्टमा, तपाइँ एक विशेष प्रकारको चराको बारेमा तथ्य पत्ता लगाउन आफ्नो डेटा सेटमा ड्रिल डाउन गर्नुहुन्छ। उदाहरणका लागि, एउटा नोटबुक सिर्जना गर्नुहोस् जुन तपाईंले स्नो गिजको बारेमा पत्ता लगाउन सक्ने सबै रोचक तथ्यहरू प्रदर्शन गर्दछ। तपाईंको नोटबुकमा कथा बताउन माथि उल्लेखित तीनवटा चार्टहरू प्रयोग गर्नुहोस्। + +## रुब्रिक + +अनुकरणीय | पर्याप्त | सुधार चाहिन्छ +--- | --- | - | +नोटबुक राम्रो एनोटेसन, बलियो कथन र आकर्षक ग्राफिक्स संग प्रस्तुत गरिएको छ | नोटबुकमा यी वस्तुहरू मध्ये एउटा हराइरहेको छ | नोटबुकमा यी दुई वस्तुहरू हराइरहेका छन् | \ No newline at end of file From 78e92e9be71f1e079c45988b2039ff3055fea31c Mon Sep 17 00:00:00 2001 From: Kurt Brummert Date: Sat, 30 Oct 2021 16:02:22 -0400 Subject: [PATCH 178/254] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c5a34100..5df47a7e 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,9 @@ Azure Cloud Advocates at Microsoft are pleased to offer a 10-week, 20-lesson cur # Getting Started -> **Teachers**, we have [included some suggestions](for-teachers.md) on how to use this curriculum. We'd love your feedback [in our discussion forum](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! +> **Teachers**: we have [included some suggestions](for-teachers.md) on how to use this curriculum. We'd love your feedback [in our discussion forum](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! -> **Students**, to use this curriculum on your own, fork the entire repo complete the exercises on your own, starting with a pre-lecture quiz, then reading the lecture completing the rest of the activities. Try to create the projects by comprehending the lessons rather than copying the solution code; however that code is available in the /solutions folders in each project-oriented lesson. Another idea would be to form a study group with friends go through the content together. For further study, we recommend [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). +> **Students**: to use this curriculum on your own, fork the entire repo and complete the exercises on your own, starting with a pre-lecture quiz. Then read the lecture and complete the rest of the activities. Try to create the projects by comprehending the lessons rather than copying the solution code; however, that code is available in the /solutions folders in each project-oriented lesson. Another idea would be to form a study group with friends and go through the content together. For further study, we recommend [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). ## Meet the Team @@ -57,7 +57,7 @@ In addition, a low-stakes quiz before a class sets the intention of the student - Assignment - Post-lesson quiz -> **A note about quizzes**: All quizzes are contained [in this app](https://red-water-0103e7a0f.azurestaticapps.net/), for 40 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder. They are gradually being localized. +> **A note about quizzes**: All quizzes are contained [in this app](https://red-water-0103e7a0f.azurestaticapps.net/), for 40 total quizzes of three questions each. They are linked from within the lessons, but the quiz app can be run locally; follow the instruction in the `quiz-app` folder. They are gradually being localized. ## Lessons From 4a779c2897637339efe2e211b68888fceccbb254 Mon Sep 17 00:00:00 2001 From: ehmsu <35581029+ehmsu@users.noreply.github.com> Date: Sat, 30 Oct 2021 16:43:45 -0400 Subject: [PATCH 179/254] Create assignment.fr.md --- .../07-python/translations/assignment.fr.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 2-Working-With-Data/07-python/translations/assignment.fr.md diff --git a/2-Working-With-Data/07-python/translations/assignment.fr.md b/2-Working-With-Data/07-python/translations/assignment.fr.md new file mode 100644 index 00000000..1e423e53 --- /dev/null +++ b/2-Working-With-Data/07-python/translations/assignment.fr.md @@ -0,0 +1,23 @@ +# Tâche: Traitement Des Données en Python + +Dans cette tâche, développez le code que nous avons commencé dans nos défis. La tâche a deux sections: + +## Modélisation de la Propagation de COVID-19 + + - [ ] Placez les graphiques $R_t$ de 5-6 pays sur une graphe à comparer, ou mettez plusieurs graphiques côte à côte + - [ ] Voiez comment les nombres des morts et guérisons sont liés aux nombres des infectés + - [ ] Trouvez combien de temps une maladie typique dure en mettre en corrélation le taux de l'infection avex le taux du décès et cherchez les anomalies. Peut-être vous avez besoin de regarder les pays différents à le trouver. + - [ ] Calculez le taux du décès et comment il change au fil du temps. *Il se peut que vous voulez prendre en compte la durée de la maladie en jours alors que vous pouvez déplacer une série chronologique avant de faire les calculs* + +## Analyse des Articles COVID-19 + +- [ ] Build co-occurrence matrix of different medications, and see which medications often occur together (i.e. mentioned in one abstract). You can modify the code for building co-occurrence matrix for medications and diagnoses. +- [ ] Visualize this matrix using heatmap. +- [ ] As a stretch goal, visualize the co-occurrence of medications using [chord diagram](https://en.wikipedia.org/wiki/Chord_diagram). [This library](https://pypi.org/project/chord/) may help you draw a chord diagram. +- [ ] As another stretch goal, extract dosages of different medications (such as **400mg** in *take 400mg of chloroquine daily*) using regular expressions, and build dataframe that shows different dosages for different medications. **Note**: consider numeric values that are in close textual vicinity of the medicine name. + +## Rubric + +Exemplaire | Acceptable | A Besoin D’amélioration +--- | --- | -- | +Chaque tâche est complet, illustré, et expliqué, y compris au moins un des deux objectifs | Plus que 5 tâches sont complets, aucun des objectifs sont essayés, ou les résultats ne sont pas évidents | Moins que 5 (mais plus que 3) tâches sont complets, les illustrations n'expliquent pas l'objectif From a02d48df8a0a3eea64654ac81d44dc354bd92ac4 Mon Sep 17 00:00:00 2001 From: Kurt Brummert Date: Sat, 30 Oct 2021 17:41:50 -0400 Subject: [PATCH 180/254] Update README.md Update documentation --- .../01-defining-data-science/README.md | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/1-Introduction/01-defining-data-science/README.md b/1-Introduction/01-defining-data-science/README.md index ca25810d..084e1147 100644 --- a/1-Introduction/01-defining-data-science/README.md +++ b/1-Introduction/01-defining-data-science/README.md @@ -11,11 +11,11 @@ ## [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) ## What is Data? -In our everyday life, we are constantly surrounded by data. The text you are reading now is data, the list of phone numbers of your friends in your smartphone is data, as well as the current time displayed on your watch. As human beings, we naturally operate with data by counting the money we have or writing letters to our friends. +In our everyday life, we are constantly surrounded by data. The text you are reading now is data. The list of phone numbers of your friends in your smartphone is data, as well as the current time displayed on your watch. As human beings, we naturally operate with data by counting the money we have or by writing letters to our friends. -However, data became much more critical with the creation of computers. The primary role of computers is to perform computations, but they need data to operate on. Thus, we need to understand how computers store and process data. +However, data became much more critical with the creation of computers. The primary role of computers is to perform computations, but they need data to operate on. Thus, we need to understand how computers store and process data. -With the emergence of the Internet, the role of computers as data handling devices increased. If you think of it, we now use computers more and more for data processing and communication, rather than actual computations. When we write an e-mail to a friend or search for some information on the Internet - we are essentially creating, storing, transmitting, and manipulating data. +With the emergence of the Internet, the role of computers as data handling devices increased. If you think about it, we now use computers more and more for data processing and communication, rather than actual computations. When we write an e-mail to a friend or search for some information on the Internet - we are essentially creating, storing, transmitting, and manipulating data. > Can you remember the last time you have used computers to actually compute something? ## What is Data Science? @@ -25,12 +25,12 @@ In [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Data Science** is This definition highlights the following important aspects of data science: * The main goal of data science is to **extract knowledge** from data, in order words - to **understand** data, find some hidden relationships and build a **model**. -* Data science uses **scientific methods**, such as probability and statistics. In fact, when the term *data science* was first introduced, some people argued that data science is just a new fancy name for statistics. Nowadays it has become evident that the field is much broader. -* Obtained knowledge should be applied to produce some **actionable insights**. -* We should be able to operate on both **structured** and **unstructured** data. We will come back to discuss different types of data later in the course. -* **Application domain** is an important concept, and data scientist often needs at least some degree of expertise in the problem domain. +* Data science uses **scientific methods**, such as probability and statistics. In fact, when the term *data science* was first introduced, some people argued that data science was just a new fancy name for statistics. Nowadays it has become evident that the field is much broader. +* Obtained knowledge should be applied to produce some **actionable insights**, i.e. practical insights that you can apply to real business situations. +* We should be able to operate on both **structured** and **unstructured** data. We will come back to discuss different types of data later in the course. +* **Application domain** is an important concept, and data scientists often need at least some degree of expertise in the problem domain, for example: finance, medicine, marketing, etc. -> Another important aspect of Data Science is that it studies how data can be gathered, stored and operated upon using computers. While statistics gives us mathematical foundations, data science applies mathematical concepts to actually draw insights from data. +> Another important aspect of Data Science is that it studies how data can be gathered, stored and operated upon using computers. While statistics gives us mathematical foundations, data science applies mathematical concepts to actually draw insights from data. One of the ways (attributed to [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) to look at the data science is to consider it to be a separate paradigm of science: * **Empirical**, in which we rely mostly on observations and results of experiments @@ -40,34 +40,34 @@ One of the ways (attributed to [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray ## Other Related Fields -Since data is a pervasive concept, data science itself is also a broad field, touching many other related disciplines. +Since data is pervasive, data science itself is also a broad field, touching many other disciplines.

Databases
-The most obvious thing to consider is **how to store** the data, i.e. how to structure them in a way that allows faster processing. There are different types of databases that store structured and unstructured data, which we will consider in our course. +A critical consideration is **how to store** the data, i.e. how to structure it in a way that allows faster processing. There are different types of databases that store structured and unstructured data, which we will consider in our course.
Big Data
-Often we need to store and process really large quantities of data with relatively simple structure. There are special approaches and tools to store that data in a distributed manner on a computer cluster, and process them efficiently. +Often we need to store and process very large quantities of data with a relatively simple structure. There are special approaches and tools to store that data in a distributed manner on a computer cluster, and process it efficiently.
Machine Learning
-One of the ways to understand the data is to **build a model** that will be able to predict desired outcome. Being able to learn such models from data is the area studied in **machine learning**. You may want to have a look at our Machine Learning for Beginners Curriculum to get deeper into that field. +One way to understand data is to **build a model** that will be able to predict a desired outcome. Developing models from data is called **machine learning**. You may want to have a look at our Machine Learning for Beginners Curriculum to learn more about it.
Artificial Intelligence
-As machine learning, artificial intelligence also relies on data, and it involves building high complexity models that will exhibit the behavior similar to a human being. Also, AI methods often allow us to turn unstructured data (eg. natural language) into structured by extracting some insights. +An area of machine learning known as artificial intelligence (AI) also relies on data, and it involves building high complexity models that mimic human thought processes. AI methods often allow us to turn unstructured data (e.g. natural language) into structured insights.
Visualization
-Vast amounts of data are incomprehensible for a human being, but once we create useful visualizations - we can start making much more sense of data, and drawing some conclusions. Thus, it is important to know many ways to visualize information - something that we will cover in Section 3 of our course. Related fields also include **Infographics**, and **Human-Computer Interaction** in general. +Vast amounts of data are incomprehensible for a human being, but once we create useful visualizations using that data, we can make more sense of the data, and draw some conclusions. Thus, it is important to know many ways to visualize information - something that we will cover in Section 3 of our course. Related fields also include **Infographics**, and **Human-Computer Interaction** in general.
## Types of Data -As we have already mentioned - data is everywhere, we just need to capture it in the right way! It is useful to distinguish between **structured** and **unstructured** data. The former are typically represented in some well-structured form, often as a table or number of tables, while latter is just a collection of files. Sometimes we can also talk about **semistructured** data, that have some sort of a structure that may vary greatly. +As we have already mentioned, data is everywhere. We just need to capture it in the right way! It is useful to distinguish between **structured** and **unstructured** data. The former is typically represented in some well-structured form, often as a table or number of tables, while the latter is just a collection of files. Sometimes we can also talk about **semistructured** data, that have some sort of a structure that may vary greatly. | Structured | Semi-structured | Unstructured | | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------- | @@ -80,15 +80,15 @@ As we have already mentioned - data is everywhere, we just need to capture it in There are many possible sources of data, and it will be impossible to list all of them! However, let's mention some of the typical places where you can get data: * **Structured** - - **Internet of Things**, including data from different sensors, such as temperature or pressure sensors, provides a lot of useful data. For example, if an office building is equipped with IoT sensors, we can automatically control heating and lighting in order to minimize costs. - - **Surveys** that we ask users after purchase of a good, or after visiting a web site. + - **Internet of Things** (IoT), including data from different sensors, such as temperature or pressure sensors, provides a lot of useful data. For example, if an office building is equipped with IoT sensors, we can automatically control heating and lighting in order to minimize costs. + - **Surveys** that we ask users to complete after a purchase, or after visiting a web site. - **Analysis of behavior** can, for example, help us understand how deeply a user goes into a site, and what is the typical reason for leaving the site. * **Unstructured** - - **Texts** can be a rich source of insights, starting from overall **sentiment score**, up to extracting keywords and even some semantic meaning. - - **Images** or **Video**. A video from surveillance camera can be used to estimate traffic on the road, and inform people about potential traffic jams. - - Web server **Logs** can be used to understand which pages of our site are most visited, and for how long. + - **Texts** can be a rich source of insights, such as an overall **sentiment score**, or extracting keywords and semantic meaning. + - **Images** or **Video**. A video from a surveillance camera can be used to estimate traffic on the road, and inform people about potential traffic jams. + - Web server **Logs** can be used to understand which pages of our site are most often visited, and for how long. * Semi-structured - - **Social Network** graph can be a great source of data about user personality and potential effectiveness in spreading information around. + - **Social Network** graphs can be great sources of data about user personalities and potential effectiveness in spreading information around. - When we have a bunch of photographs from a party, we can try to extract **Group Dynamics** data by building a graph of people taking pictures with each other. By knowing different possible sources of data, you can try to think about different scenarios where data science techniques can be applied to know the situation better, and to improve business processes. @@ -100,56 +100,56 @@ In Data Science, we focus on the following steps of data journey:
1) Data Acquisition
-First step is to collect the data. While in many cases it can be a straightforward process, like data coming to a database from web application, sometimes we need to use special techniques. For example, data from IoT sensors can be overwhelming, and it is a good practice to use buffering endpoints such as IoT Hub to collect all the data before further processing. +The first step is to collect the data. While in many cases it can be a straightforward process, like data coming to a database from a web application, sometimes we need to use special techniques. For example, data from IoT sensors can be overwhelming, and it is a good practice to use buffering endpoints such as IoT Hub to collect all the data before further processing.
2) Data Storage
-Storing the data can be challenging, especially if we are talking about big data. When deciding how to store data, it makes sense to anticipate the way you would want later on to query them. There are several ways data can be stored: +Storing data can be challenging, especially if we are talking about big data. When deciding how to store data, it makes sense to anticipate the way you would to query the data in the future. There are several ways data can be stored:
    -
  • Relational database stores a collection of tables, and uses a special language called SQL to query them. Typically, tables would be connected to each other using some schema. In many cases we need to convert the data from original form to fit the schema.
  • -
  • NoSQL database, such as CosmosDB, does not enforce schema on data, and allows storing more complex data, for example, hierarchical JSON documents or graphs. However, NoSQL database does not have rich querying capabilities of SQL, and cannot enforce referential integrity between data.
  • -
  • Data Lake storage is used for large collections of data in raw form. Data lakes are often used with big data, where all data cannot fit into one machine, and has to be stored and processed by a cluster. Parquet is the data format that is often used in conjunction with big data.
  • +
  • A relational database stores a collection of tables, and uses a special language called SQL to query them. Typically, tables are organized into different groups called schemas. In many cases we need to convert the data from original form to fit the schema.
  • +
  • A NoSQL database, such as CosmosDB, does not enforce schemas on data, and allows storing more complex data, for example, hierarchical JSON documents or graphs. However, NoSQL databases do not have the rich querying capabilities of SQL, and cannot enforce referential integrity, i.e. rules on how the data is structured in tables and governing the relationships between tables.
  • +
  • Data Lake storage is used for large collections of data in raw, unstructured form. Data lakes are often used with big data, where all data cannot fit on one machine, and has to be stored and processed by a cluster of servers. Parquet is the data format that is often used in conjunction with big data.
3) Data Processing
-This is the most exciting part of data journey, which involved processing the data from its original form to the form that can be used for visualization/model training. When dealing with unstructured data such as text or images, we may need to use some AI techniques to extract **features** from the data, thus converting it to structured form. +This is the most exciting part of the data journey, which involves converting the data from its original form into a form that can be used for visualization/model training. When dealing with unstructured data such as text or images, we may need to use some AI techniques to extract **features** from the data, thus converting it to structured form.
4) Visualization / Human Insights
-Often to understand the data we need to visualize them. Having many different visualization techniques in our toolbox we can find the right view to make an insight. Often, data scientist needs to "play with data", visualizing it many times and looking for some relationships. Also, we may use techniques from statistics to test some hypotheses or prove correlation between different pieces of data. +Oftentimes, in order to understand the data, we need to visualize it. Having many different visualization techniques in our toolbox, we can find the right view to make an insight. Often, a data scientist needs to "play with data", visualizing it many times and looking for some relationships. Also, we may use statistical techniques to test a hypotheses or prove a correlation between different pieces of data.
-
5) Training predictive model
+
5) Training a predictive model
-Because the ultimate goal of data science is to be able to take decisions based on data, we may want to use the techniques of Machine Learning to build predictive model that will be able to solve our problem. +Because the ultimate goal of data science is to be able to make decisions based on data, we may want to use the techniques of Machine Learning to build a predictive model. We can then use this to make predictions using new data sets with similar structures.
-Of course, depending on the actual data some steps might be missing (eg., when we already have the data in the database, or when we do not need model training), or some steps might be repeated several times (such as data processing). +Of course, depending on the actual data, some steps might be missing (e.g., when we already have the data in the database, or when we do not need model training), or some steps might be repeated several times (such as data processing). ## Digitalization and Digital Transformation -In the last decade, many businesses started to understand the importance of data when making business decisions. To apply data science principles to running a business one first needs to collect some data, i.e. somehow turn business processes into digital form. This is known as **digitalization**, and followed by using data science techniques to guide decisions it often leads to significant increase of productivity (or even business pivot), called **digital transformation**. +In the last decade, many businesses started to understand the importance of data when making business decisions. To apply data science principles to running a business, one first needs to collect some data, i.e. translate business processes into digital form. This is known as **digitalization**. Applying data science techniques to this data to guide decisions can lead to significant increases in productivity (or even business pivot), called **digital transformation**. -Let's consider an example. Suppose, we have a data science course (like this one), which we deliver online to students, and we want to use data science to improve it. How can we do it? +Let's consider an example. Suppose we have a data science course (like this one) which we deliver online to students, and we want to use data science to improve it. How can we do it? -We can start with thinking "what can be digitized?". The simplest way would be to measure time it takes each student to complete each module, and the obtained knowledge (eg. by giving multiple-choice test at the end of each module). By averaging time-to-complete across all students, we can find out which modules cause the most problems to students, and work on simplifying them. +We can start by asking "What can be digitized?" The simplest way would be to measure the time it takes each student to complete each module, and to measure the obtained knowledge by giving a multiple-choice test at the end of each module. By averaging time-to-complete across all students, we can find out which modules cause the most difficulties for students, and work on simplifying them. -> You may argue that this approach is not ideal, because modules can be of different length. It is probably more fair to divide the time by the length of the module (in number of characters), and compare those values instead. +> You may argue that this approach is not ideal, because modules can be of different lengths. It is probably more fair to divide the time by the length of the module (in number of characters), and compare those values instead. -When we start analyzing results of multiple-choice tests, we can try to find out specific concepts that students understand poorly, and improve the content. To do that, we need to design tests in such a way that each question maps to a certain concept or chunk of knowledge. +When we start analyzing results of multiple-choice tests, we can try to determine which concepts that students have difficulty understanding, and and use that information to improve the content. To do that, we need to design tests in such a way that each question maps to a certain concept or chunk of knowledge. -If we want to get even more complicated, we can plot the time taken for each module against the age category of students. We might find out that for some age categories it takes inappropriately long time to complete the module, or students drop out at certain point. This can help us provide age recommendation for the module, and minimize people's dissatisfaction from wrong expectations. +If we want to get even more complicated, we can plot the time taken for each module against the age category of students. We might find out that for some age categories it takes an inappropriately long time to complete the module, or that students drop out before completing it. This can help us provide age recommendations for the module, and minimize people's dissatisfaction from wrong expectations. ## 🚀 Challenge -In this challenge, we will try to find concepts relevant to the field of Data Science by looking at texts. We will take Wikipedia article on Data Science, download and process the text, and then build a word cloud like this one: +In this challenge, we will try to find concepts relevant to the field of Data Science by looking at texts. We will take a Wikipedia article on Data Science, download and process the text, and then build a word cloud like this one: ![Word Cloud for Data Science](images/ds_wordcloud.png) -Visit [`notebook.ipynb`](notebook.ipynb) to read through the code. You can also run the code, and see how it performs all data transformations in real time. +Visit [`notebook.ipynb`](notebook.ipynb) to read through the code. You can also run the code, and see how it performs all data transformations in real time. -> If you do not know how to run code in Jupyter Notebook, have a look at [this article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +> If you do not know how to run code in a Jupyter Notebook, have a look at [this article](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). From a5610760530b9af58b135fc458a8288f00d42b3b Mon Sep 17 00:00:00 2001 From: ludovicobesana Date: Sun, 31 Oct 2021 15:56:18 +0100 Subject: [PATCH 181/254] feat: Add favicon --- images/favicon.png | Bin 0 -> 6188 bytes index.html | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 images/favicon.png diff --git a/images/favicon.png b/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..9e5b4f6ac5ab75ef5467dcdb59f9db3cc7a0f405 GIT binary patch literal 6188 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 79c76acf..2edab889 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,7 @@ + @@ -23,4 +24,4 @@ - \ No newline at end of file + From aad92567e8b4fcc308a699484614c7dad3e41773 Mon Sep 17 00:00:00 2001 From: Floor Drees Date: Sun, 31 Oct 2021 22:27:46 +0100 Subject: [PATCH 182/254] Add NL translation project README Loving this curriculum! --- translations/README.nl.md | 115 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 translations/README.nl.md diff --git a/translations/README.nl.md b/translations/README.nl.md new file mode 100644 index 00000000..e5220328 --- /dev/null +++ b/translations/README.nl.md @@ -0,0 +1,115 @@ +# Data Science voor Beginners - Een curriculum + +[![GitHub license](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/) + + +Met groot genoegen bieden Azure Cloud Advocates bij Microsoft dit curriculum van 10 weken en 20 lessen aan over data science (datawetenschap). Elke les bevat quizzen voor en na de les, schriftelijke instructies om de les te voltooien, een oplossing en een opdracht. Onze projectmatige pedagogiek stelt je in staat om te leren tijdens het bouwen, een bewezen manier om nieuwe vaardigheden te laten 'plakken'. + + +**Met dank aan de auteurs:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Speciale dank 🙏 gaat uit naar onze [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) auteurs, proeflezers en "meedenkers",** notably Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), +[Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), Tauqeer Ahmad, Yogendrasingh Pawar + +|![ Sketchnote door [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Title.png)| +|:---:| +| Data Science voor Beginners - _Sketchnote door [@nitya](https://twitter.com/nitya)_ | + + +# Start + +> **Leerkrachten**: we hebben [suggesties bijgevoegd](for-teachers.md) over het gebruik van dit curriculum. We staan open voor uw feedback [in ons discussie forum](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! + +> **Studenten, leerlingen**: "fork" om dit lesmateriaal te gebruiken de gehele folder, en werk op eigen kracht door de opdrachten. Start steeds met de quiz vooraf. Lees dan de lezing en volg de rest van de opdrachten. Probeer de projecten te voltooien zonder de oplossing een-op-een te kopiëren; maar weet dat de oplossing in de /solutions folder te vinden is. Overweeg een studie groep te vormen en samen door het lesmateriaal te gaan. Wil je nog meer leren? Ga dan naar [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa). + +## Het team achter Data Science voor Beginners + +[![Promo video](ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Promo video") + +**Gif door** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal) + +> 🎥 Klik op de afbeelding hierboven om een video over de makers van dit project te bekijken! + +## Pedagogie + +We hebben twee pedagogische uitgangspunten gekozen bij het bouwen van dit curriculum: we wilden ervoor zorgen dat het projectmatig is en dat het frequente quizzen bevat. Aan het einde van deze serie hebben studenten de basisprincipes van datawetenschap geleerd, waaronder ethische concepten, "data preparation", verschillende manieren van werken met gegevens, gegevensvisualisatie, gegevensanalyse, praktijkgevallen van data wetenschap en meer. + +Bovendien zet een laagdrempelige quiz voor een les de intentie van de student om een ​​onderwerp te leren, terwijl een tweede quiz na de les zorgt voor verdere retentie. Dit curriculum is ontworpen om flexibel en leuk te zijn en kan geheel of gedeeltelijk worden gevolgd. De projecten beginnen klein en worden steeds complexer tegen het einde van de cyclus van 10 weken. + +> Vind onze richtlijnen hierL [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md). Ook hier verwelkomen wij feedback. + +## Elke les omvat: + +- (Optioneel) sketchnote +- (Optioneel) video +- Een warmup quiz voor de les +- Uitgeschreven lezing +- Voor projectgebaseerde lessen: stapsgewijze handleidingen voor het bouwen van het project +- Kennischecks +- Een uitdaging +- Aanvullende lectuur +- Opdracht +- Quiz na de les + + +> **Een opmerking over de quizzen**: Alle quizzen zijn opgenomen [in deze app](https://red-water-0103e7a0f.azurestaticapps.net/), voor in totaal 40 quizzen van elk drie vragen. Ze zijn gekoppeld vanuit de lessen, maar de quiz-app kan lokaal worden uitgevoerd; volg de instructies in de `quiz-app` map. Ze worden stilaan gelokaliseerd. + +## Lessen + + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](./sketchnotes/00-Roadmap.png)| +|:---:| +| Data Science voor Beginners: Roadmap - _Sketchnote door [@nitya](https://twitter.com/nitya)_ | + + +| Les Nummer | Onderwerp | Lesgroepering | Leerdoelen | Link | Auteur | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Datawetenschap definiëren | [Introductie](1-Introduction/README.md) | Leer de basisconcepten achter datawetenschap en hoe deze verband houdt met kunstmatige intelligentie, machine learning en big data. | [les](1-Introduction/01-defining-data-science/README.md) [video](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Ethiek | [Introductie](1-Introduction/README.md) | Data-ethiekconcepten, uitdagingen en kaders. | [lesson](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Data definiëren | [Introductie](1-Introduction/README.md) | Hoe gegevens worden geclassificeerd en de gemeenschappelijke bronnen. | [les](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Inleiding tot statistiek en waarschijnlijkheid | [Introductie](1-Introduction/README.md) | De wiskundige techniek van waarschijnlijkheid en statistiek om gegevens te begrijpen. | [les](1-Introduction/04-stats-and-probability/README.md) [video](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Werken met relationele gegevens | [Werken met Data](2-Working-With-Data/README.md) | Inleiding tot relationele gegevens en de basisprincipes van het verkennen en analyseren van relationele gegevens met de Structured Query Language, ook bekend als SQL (uitgesproken als "see-quell"). | [les](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Werken met NoSQL Data | [Werken met Data](2-Working-With-Data/README.md) | Inleiding tot niet-relationele gegevens, de verschillende soorten en de basisprincipes van het verkennen en analyseren van documentdatabases. | [les](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Aan de slag met Python | [Werken met Data](2-Working-With-Data/README.md) |Basisprincipes van het gebruik van Python voor gegevensverkenning met bibliotheken zoals Panda's. Fundamenteel begrip van Python-programmering wordt aanbevolen. | [les](2-Working-With-Data/07-python/README.md) [video](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Data Preparation | [Werken met Data](2-Working-With-Data/README.md) | Onderwerpen over gegevenstechnieken voor het opschonen en transformeren van gegevens om uitdagingen als ontbrekende, onnauwkeurige of onvolledige gegevens aan te pakken. | [les](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Hoeveelheden visualiseren | [Data Visualisatie](3-Data-Visualization/README.md) | Leer Matplotlib te gebruiken om vogelgegevens te visualiseren 🦆 | [les](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Distributies van gegevens visualiseren | [Data Visualisatie](3-Data-Visualization/README.md) | Visualiseren van waarnemingen en trends binnen een interval. | [les](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Verhoudingen visualiseren | [Data Visualisatie](3-Data-Visualization/README.md) | Het visualiseren van discrete en gegroepeerde percentages. | [les](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Relaties visualiseren | [Data Visualisatie](3-Data-Visualization/README.md) | Het visualiseren van verbanden en correlaties tussen gegevenssets en hun variabelen. | [les](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Betekenisvolle visualisaties | [Data Visualisatie](3-Data-Visualization/README.md) | Technieken en begeleiding om uw visualisaties waardevol te maken voor effectieve probleemoplossing en inzichten. | [les](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Inleiding tot de Data Science-levenscyclus | [Levenscyclus](4-Data-Science-Lifecycle/README.md) | Inleiding tot de data science-levenscyclus en de eerste stap van het verwerven en extraheren van gegevens. | [les](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Analyse | [Levenscyclus](4-Data-Science-Lifecycle/README.md) | Deze fase van de data science-levenscyclus richt zich op technieken om data te analyseren. | [les](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Communicatie | [Levenscyclus](4-Data-Science-Lifecycle/README.md) | Deze fase van de data science-levenscyclus richt zich op het presenteren van de inzichten uit de data op een manier die het voor besluitvormers gemakkelijker maakt om te begrijpen. | [les](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Data Science in de Cloud | [Levenscyclus](5-Data-Science-In-Cloud/README.md) | Deze lessenreeks introduceert datawetenschap in de cloud en de voordelen ervan. | [les](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) en [Maud](https://twitter.com/maudstweets) | +| 18 | Data Science in de Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Modellen trainen met behulp van low code-tools. |[les](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) en [Maud](https://twitter.com/maudstweets) | +| 19 | Data Science in de Cloud | [Cloud Data](5-Data-Science-In-Cloud/README.md) | Modellen implementeren met Azure Machine Learning Studio. | [les](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) en [Maud](https://twitter.com/maudstweets) | +| 20 | Data Science in het Wild | [In het Wild](6-Data-Science-In-Wild/README.md) | Data science projecten in de echte wereld. | [les](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## Offline toegang + +Deze documentatie kan offline geconsumeerd worden door [Docsify](https://docsify.js.org/#/) te gebruiken. Fork deze foldeer, [installeer Docsify](https://docsify.js.org/#/quickstart) op uw computer en typ vervolgens in de hoofdmap van deze opslagplaats `docsify serve`. De website wordt bediend op poort 3000: `localhost:3000`. + +> Let op, notebooks worden niet weergegeven via Docsify, dus als je een notebook moet uitvoeren, doe dat dan apart in VS Code met een Python-kernel. + +## PDF + +Een PDF van alle lessen is [hier](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf) te vinden. + +## Hulp gewenst! + +Als je het hele curriculum of een deel ervan wilt vertalen, volg dan onze gids [Vertalingen](TRANSLATIONS.md). + +## Ander Curricula + +Ons team maakt andere curricula: +- [Machine Learning voor Beginners](https://aka.ms/ml-beginners) +- [IoT voor Beginners](https://aka.ms/iot-beginners) +- [Web Dev voor Beginners](https://aka.ms/webdev-beginners) From 7628aa644ff21f0b9b8b5b59e4cebcfe239c06fc Mon Sep 17 00:00:00 2001 From: Floor Drees Date: Sun, 31 Oct 2021 22:33:29 +0100 Subject: [PATCH 183/254] NL README for 1-Introductions --- 1-Introduction/translations/README.nl.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 1-Introduction/translations/README.nl.md diff --git a/1-Introduction/translations/README.nl.md b/1-Introduction/translations/README.nl.md new file mode 100644 index 00000000..04682436 --- /dev/null +++ b/1-Introduction/translations/README.nl.md @@ -0,0 +1,17 @@ +# Inleiding tot datawetenschap + +![data in actie](images/data.jpg) +> Beeld door Stephen Dawson op Unsplash + +In deze lessen ontdek je hoe Data Science wordt gedefinieerd en leer je over ethische overwegingen waarmee een datawetenschapper rekening moet houden. Je leert ook hoe gegevens worden gedefinieerd en leert over statistiek en waarschijnlijkheid, de academische kerndomeinen van Data Science. + +### Onderwerpen + +1. [Data Science definiëren](01-defining-data-science/README.md) +2. [Ethiek in Data Science](02-ethics/README.md) +3. [Data definiëren](03-defining-data/README.md) +4. [Inleiding tot statistiek en kansrekening](04-stats-and-probability/README.md) + +### Credits + +Dit lesmateriaal is met liefde ❤️ geschreven door [Nitya Narasimhan](https://twitter.com/nitya) en [Dmitry Soshnikov](https://twitter.com/shwars). From 00567ead7a2896e23d4479b23966725ecea40644 Mon Sep 17 00:00:00 2001 From: Floor Drees Date: Sun, 31 Oct 2021 23:17:53 +0100 Subject: [PATCH 184/254] NL README 2-Working-With-Data project --- 2-Working-With-Data/translations/README.nl.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 2-Working-With-Data/translations/README.nl.md diff --git a/2-Working-With-Data/translations/README.nl.md b/2-Working-With-Data/translations/README.nl.md new file mode 100644 index 00000000..3ce3b957 --- /dev/null +++ b/2-Working-With-Data/translations/README.nl.md @@ -0,0 +1,16 @@ +# Werken met gegevens + +![data love](images/data-love.jpg) +> Beeld door Alexander Sinn op Unsplash + +Leer over de manieren waarop gegevens kunnen worden beheerd, gemanipuleerd en gebruikt in applicaties. Leer meer over relationele en niet-relationele databases en hoe gegevens daarin kunnen worden opgeslagen. Lees over de basisprincipes van het werken met Python om gegevens te beheren, en ontdek enkele van de vele manieren waarop je met Python kunt werken om gegevens te beheren en te ontginnen. +### Onderwerpen + +1. [Relationele databases](05-relational-databases/README.md) +2. [Niet-relationale databases](06-non-relational/README.md) +3. [Aan de slag met Python](07-python/README.md) +4. [Data voorbereiden](08-data-preparation/README.md) + +### Credits + +Dit materiaal is met ❤️ geschreven door [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) en [Jasmine Greenaway](https://twitter.com/paladique) From 86e9fae19c36717d47218515df679bace65d99bc Mon Sep 17 00:00:00 2001 From: Floor Drees Date: Sun, 31 Oct 2021 23:30:37 +0100 Subject: [PATCH 185/254] NL README project 3-Data-Vizualisation --- .../translations/README.nl.md | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 3-Data-Visualization/translations/README.nl.md diff --git a/3-Data-Visualization/translations/README.nl.md b/3-Data-Visualization/translations/README.nl.md new file mode 100644 index 00000000..eb04fff2 --- /dev/null +++ b/3-Data-Visualization/translations/README.nl.md @@ -0,0 +1,27 @@ +# Visualisaties + +![Een bij op lavendel](./images/bee.jpg) +> Beeld door Jenna Lee op Unsplash + +Het visualiseren van data is een van de belangrijkste taken van een data scientist. Afbeeldingen zeggen meer dan 1000 woorden, en een visualisatie kan helpen allerlei interessante delen van uw gegevens te identificeren, zoals pieken, uitbijters, groeperingen, tendensen en meer, die kunnen helpen het verhaal te begrijpen dat de data probeert te vertellen. + +In deze vijf lessen verkennen we gegevens uit de natuur en maken we interessante en mooie visualisaties met behulp van verschillende technieken. +### Onderwerpen + +1. [Hoeveelheden visualiseren](09-visualization-quantities/README.md) +1. [Distributie visualiseren](10-visualization-distributions/README.md) +1. [Proporties visualiseren](11-visualization-proportions/README.md) +1. [Relaties visualiseren](12-visualization-relationships/README.md) +1. [Betekenisvolle visualisaties maken](13-meaningful-visualizations/README.md) + +### Credits + +🌸 Deze lessen in visualisatie zijn geschreven door [Jen Looper](https://twitter.com/jenlooper) + +🍯 De US Honey Production data is gebruikt uit Jessica Li's project op [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). De [data](https://usda.library.cornell.edu/concern/publications/rn301137d) is afgeleid van de [United States Department of Agriculture](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 De gegevens voor paddenstoelen zijn ook afkomstig van [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset), herzien door Hatteras Dunton. Deze dataset bevat beschrijvingen van hypothetische monsters die overeenkomen met 23 soorten kieuwen van paddenstoelen in de Agaricus- en Lepiota-familie. Paddestoel getekend uit The Audubon Society Field Guide to North American Mushrooms (1981). Deze dataset werd in 1987 geschonken aan UCI ML 27. + +🦆 Gegevens voor Minnesota Birds komen eveneens van [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) gescraped van [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) door Hannah Collins. + +Al deze datasets zijn gelicentieerd als [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). From 54e955a7d0a4a09efccc005fa9a0ad91e978eef0 Mon Sep 17 00:00:00 2001 From: vahid baghi Date: Mon, 1 Nov 2021 11:16:53 +0330 Subject: [PATCH 186/254] Create README.fa.md adding persian translation --- 1-Introduction/translations/README.fa.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 1-Introduction/translations/README.fa.md diff --git a/1-Introduction/translations/README.fa.md b/1-Introduction/translations/README.fa.md new file mode 100644 index 00000000..46baec88 --- /dev/null +++ b/1-Introduction/translations/README.fa.md @@ -0,0 +1,21 @@ +
+ +# مقدمه‌ای بر علم داده + + +![data in action](images/data.jpg) +> تصویر از Stephen Dawson در Unsplash + +شما در این بخش با تعریف علم داده و ملاحظات اخلاقی که یک دانشمند علوم داده باید در نظر داشته باشد آشنا خواهید شد. همچنین با تعریف داده و کمی هم با آمار و احتمالات که پایه و اساس علم داده است آشنا خواهید شد. + +### سرفصل ها + +1. [تعریف علم داده](01-defining-data-science/README.md) +2. [اصول اخلاقی علم داده](02-ethics/README.md) +3. [تعریف داده](03-defining-data/README.md) +4. [مقدمه ای بر آمار و احتمال](04-stats-and-probability/README.md) + +### تهیه کنندگان + +این درس ها با ❤️ توسط [Nitya Narasimhan](https://twitter.com/nitya) و [Dmitry Soshnikov](https://twitter.com/shwars) تهیه شده است. +
From badfd94a842f00226f4d9b456f8e9f3dcdf9a165 Mon Sep 17 00:00:00 2001 From: Naveen Namani Date: Mon, 1 Nov 2021 16:46:03 +0530 Subject: [PATCH 187/254] case sensitive paths --- docs/_sidebar.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 2701ba71..cbabcc41 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -16,11 +16,11 @@ - [Meaningful Visualizations](../3-Data-Visualization/13-meaningful-visualizations/README.md) - Data Science Lifecycle - [Introduction](../4-Data-Science-Lifecycle/14-Introduction/README.md) - - [Analyzing](../4-Data-Science-Lifecycle/15-Analyzing/README.md) - - [Communication](../4-Data-Science-Lifecycle/16-Communication/README.md) + - [Analyzing](../4-Data-Science-Lifecycle/15-analyzing/README.md) + - [Communication](../4-Data-Science-Lifecycle/16-communication/README.md) - Data Science in the Cloud - [Introduction](../5-Data-Science-In-Cloud/17-Introduction/README.md) - [Low Code](../5-Data-Science-In-Cloud/18-Low-Code/README.md) - [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md) - Data Science in the Wild - - [DS In The Wild](../6-Data-Science-In-Wild/README.md) \ No newline at end of file + - [DS In The Wild](../6-Data-Science-In-Wild/README.md) From 2c865ca69255fef3b8fe79fa3d28afbda49a2074 Mon Sep 17 00:00:00 2001 From: Swapnil <89239360+swapnilregmi@users.noreply.github.com> Date: Mon, 1 Nov 2021 20:33:19 +0545 Subject: [PATCH 188/254] Update assignment.ne.md --- .../19-Azure/translations/assignment.ne.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md b/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md index 5d8b9338..f94794c6 100644 --- a/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md +++ b/5-Data-Science-In-Cloud/19-Azure/translations/assignment.ne.md @@ -2,10 +2,10 @@ ## निर्देशन -हामीले Azure ML SDK सँग मोडेललाई तालिम, डिप्लोय, र उपभोग गर्न Azure ML प्लेटफर्म कसरी प्रयोग गर्ने भनेर हेर्यौं। अब केहि डेटा को लागी वरिपरि हेर्नुहोस् जुन तपाईले अर्को मोडेललाई प्रशिक्षित गर्न, प्रयोग गर्न र उपभोग गर्न सक्नुहुन्छ। तपाईंले Kaggle र [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-40229. -cxa&ocid=AID3041109) मा डाटासेट फेला पार्न सक्नुहुन्छ। +हामीले Azure ML SDK सँग मोडेललाई तालिम, डिप्लोय, र उपभोग गर्न Azure ML प्लेटफर्म कसरी प्रयोग गर्ने भनेर हेर्यौं। अब केहि डेटा को लागी वरिपरि हेर्नुहोस् जुन तपाईले अर्को मोडेललाई प्रशिक्षित गर्न, प्रयोग गर्न र उपभोग गर्न सक्नुहुन्छ। तपाईंले Kaggle र [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-40229-cxa&ocid=AID3041109) मा डाटासेट फेला पार्न सक्नुहुन्छ। ## रूब्रिक |अनुकरणीय | पर्याप्त | सुधारको आवश्यकता | -| AutoML कन्फिगरेसन गरिरहँदा, तपाईंले कुन प्यारामिटरहरू प्रयोग गर्न सक्नुहुन्छ भनी हेर्न SDK कागजात हेर्नुभयो। तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण चलाउनुभयो, र तपाईंले मोडेल स्पष्टीकरण जाँच गर्नुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो।|तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण चलाउनुभयो, र तपाईंले मोडेल स्पष्टीकरण जाँच गर्नुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो। | तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण दिनुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो। | \ No newline at end of file +| AutoML कन्फिगरेसन गरिरहँदा, तपाईंले कुन प्यारामिटरहरू प्रयोग गर्न सक्नुहुन्छ भनी हेर्न SDK कागजात हेर्नुभयो। तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण चलाउनुभयो, र तपाईंले मोडेल स्पष्टीकरण जाँच गर्नुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो।|तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण चलाउनुभयो, र तपाईंले मोडेल स्पष्टीकरण जाँच गर्नुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो। | तपाईंले Azure ML SDK प्रयोग गरेर AutoML मार्फत डेटासेटमा प्रशिक्षण दिनुभयो। तपाईंले उत्तम मोडेल प्रयोग गर्नुभयो र तपाईं Azure ML SDK मार्फत यसलाई उपभोग गर्न सक्षम हुनुभयो। | From 51f83182ca641af8cfc8c937d247e6ac0b0466f8 Mon Sep 17 00:00:00 2001 From: Ryan Gann <43328613+RyanGann@users.noreply.github.com> Date: Mon, 1 Nov 2021 14:06:05 -0500 Subject: [PATCH 189/254] Update README.md Typo. Changed "order" to "other" --- 1-Introduction/01-defining-data-science/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/01-defining-data-science/README.md b/1-Introduction/01-defining-data-science/README.md index 084e1147..19fb45f0 100644 --- a/1-Introduction/01-defining-data-science/README.md +++ b/1-Introduction/01-defining-data-science/README.md @@ -24,7 +24,7 @@ In [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Data Science** is This definition highlights the following important aspects of data science: -* The main goal of data science is to **extract knowledge** from data, in order words - to **understand** data, find some hidden relationships and build a **model**. +* The main goal of data science is to **extract knowledge** from data, in other words - to **understand** data, find some hidden relationships and build a **model**. * Data science uses **scientific methods**, such as probability and statistics. In fact, when the term *data science* was first introduced, some people argued that data science was just a new fancy name for statistics. Nowadays it has become evident that the field is much broader. * Obtained knowledge should be applied to produce some **actionable insights**, i.e. practical insights that you can apply to real business situations. * We should be able to operate on both **structured** and **unstructured** data. We will come back to discuss different types of data later in the course. From 86704da9a6ca180bc1b3785186872a6c62de9eab Mon Sep 17 00:00:00 2001 From: Thoogend1 Date: Tue, 2 Nov 2021 15:14:18 +0100 Subject: [PATCH 190/254] Added NL translation of assignment 01 --- .../translations/assignment.nl.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 1-Introduction/01-defining-data-science/translations/assignment.nl.md diff --git a/1-Introduction/01-defining-data-science/translations/assignment.nl.md b/1-Introduction/01-defining-data-science/translations/assignment.nl.md new file mode 100644 index 00000000..f670798a --- /dev/null +++ b/1-Introduction/01-defining-data-science/translations/assignment.nl.md @@ -0,0 +1,33 @@ +# Opdracht: Data Science Scenarios + +In deze eerste opdracht vragen we je na te denken over processen of problemen van verschillende aspecten van het echte leven. Om vervolgens na te denken over hoe je deze kan verbeteren met Data Science. Denk bijvoorbeeld aan; + +1. Welke data kan ik verzamelen +2. Hoe kan ik deze data verzamelen? +3. Hoe wil ik deze data opslaan? Hoe groot zal de hoeveelheid data worden? +4. Wat voor inzichten wil ik krijgen op deze data? Welke beslissingen kan ik gaan maken aan de hand van deze data? + +Probeer 3 verschillende problemen/processen te bedenken, en beschrijf voor elk van deze items het onderwerp van het probleem. + +Hier zijn wat voorbeeld onderwerpen om je in de goede richting te helpen: + +1. Hoe kan ik data gebruiken om het leertraject van kinderen op school te verbeteren? +2. Hoe kan ik data gebruiken om controle te krijgen op het vaccinatieprocess tijdens de pandemie? +3. Hoe kan ik data gebruiken om inzicht te krijgen in mijn productiviteit op het werk? + + +## Instructies + +Vul de volgende tabel in (vul je eigen onderwerp in, indien nodig): + +| Probleem Onderwerp | Probleem | Welke data te verzamelen | Hoe de data te verzamelen | Welke inzichten/beslissingen wil ik maken | +|----------------|---------|-----------------------|-----------------------|--------------------------------------| +| Onderwijs | | | | | +| Vaccinaties | | | | | +| Productiviteit | | | | | + +## Rubriek + +Uitstekend | Adequaat | Vereist verbetering +--- | --- | -- | +Men kon voldoende databronnen vinden, deze juist opslaan en hier de juiste inzichten aan ontlenen voor alle probleemstellingen. | Sommige aspecten van de oplssing zijn niet concreet, de data opslag is niet gedefinieerd, tenminste 2 van de probleemstellingen zijn besproken. | Enkel onderdelen vand e oplossing zijn beschreven, slechts een van de probleemstellingen is besproken. From 7e1d6e3123f6ff36a4de138ab73a3815c267ecac Mon Sep 17 00:00:00 2001 From: vahid baghi Date: Fri, 5 Nov 2021 10:28:00 +0330 Subject: [PATCH 191/254] Update README.fa.md --- 1-Introduction/translations/README.fa.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1-Introduction/translations/README.fa.md b/1-Introduction/translations/README.fa.md index 46baec88..45532340 100644 --- a/1-Introduction/translations/README.fa.md +++ b/1-Introduction/translations/README.fa.md @@ -3,17 +3,17 @@ # مقدمه‌ای بر علم داده -![data in action](images/data.jpg) +![data in action](../images/data.jpg) > تصویر از Stephen Dawson در Unsplash شما در این بخش با تعریف علم داده و ملاحظات اخلاقی که یک دانشمند علوم داده باید در نظر داشته باشد آشنا خواهید شد. همچنین با تعریف داده و کمی هم با آمار و احتمالات که پایه و اساس علم داده است آشنا خواهید شد. ### سرفصل ها -1. [تعریف علم داده](01-defining-data-science/README.md) -2. [اصول اخلاقی علم داده](02-ethics/README.md) -3. [تعریف داده](03-defining-data/README.md) -4. [مقدمه ای بر آمار و احتمال](04-stats-and-probability/README.md) +1. [تعریف علم داده](../01-defining-data-science/README.md) +2. [اصول اخلاقی علم داده](../02-ethics/README.md) +3. [تعریف داده](../03-defining-data/README.md) +4. [مقدمه ای بر آمار و احتمال](../04-stats-and-probability/README.md) ### تهیه کنندگان From f55ff50466f8f3ac256b86599a65df393f2698e1 Mon Sep 17 00:00:00 2001 From: Maud Date: Fri, 5 Nov 2021 16:22:14 +0100 Subject: [PATCH 192/254] Fixed typo --- 2-Working-With-Data/06-non-relational/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-Working-With-Data/06-non-relational/README.md b/2-Working-With-Data/06-non-relational/README.md index 808dc702..423b6023 100644 --- a/2-Working-With-Data/06-non-relational/README.md +++ b/2-Working-With-Data/06-non-relational/README.md @@ -49,7 +49,7 @@ NoSQL is an umbrella term for the different ways to store non-relational data an ![Graphical representation of a columnar data store showing a customer database with two column families named Identity and Contact Info](images/columnar-db.png) -[Columnar](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) data stores organizes data into columns and rows like a relational data structure but each column is divided into groups called a column family, where the all the data under one column is related and can be retrieved and changed in one unit. +[Columnar](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) data stores organizes data into columns and rows like a relational data structure but each column is divided into groups called a column family, where all the data under one column is related and can be retrieved and changed in one unit. ### Document Data Stores with the Azure Cosmos DB From 42d2a68bc0868ac2647990d2000752d3c27da0ac Mon Sep 17 00:00:00 2001 From: Eugene Chung Date: Fri, 5 Nov 2021 14:16:58 -0400 Subject: [PATCH 193/254] fixed paths for README.zh-cn.md --- 2-Working-With-Data/translations/README.zh-cn.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/2-Working-With-Data/translations/README.zh-cn.md b/2-Working-With-Data/translations/README.zh-cn.md index ebcb87f9..fb0e368b 100644 --- a/2-Working-With-Data/translations/README.zh-cn.md +++ b/2-Working-With-Data/translations/README.zh-cn.md @@ -7,10 +7,10 @@ ### 话题 -1. [关系数据库](05-relational-databases/README.md) -2. [非关系数据库](06-non-relational/README.md) -3. [使用Python](07-python/README.md) -4. [准备数据](08-data-preparation/README.md) +1. [关系数据库](../05-relational-databases/README.md) +2. [非关系数据库](../06-non-relational/README.md) +3. [使用Python](../07-python/README.md) +4. [准备数据](../08-data-preparation/README.md) ### 学分 From a097fda28b2c573955c7b5b0a96ccd5fd7645a66 Mon Sep 17 00:00:00 2001 From: nahyeong99 Date: Sat, 6 Nov 2021 04:11:52 +0900 Subject: [PATCH 194/254] README for translation --- 1-Introduction/translations/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 1-Introduction/translations/README.md diff --git a/1-Introduction/translations/README.md b/1-Introduction/translations/README.md new file mode 100644 index 00000000..b041eb5b --- /dev/null +++ b/1-Introduction/translations/README.md @@ -0,0 +1,17 @@ +# Introduction to Data Science + +![data in action](images/data.jpg) +> Photo by Stephen Dawson on Unsplash + +In these lessons, you will discover how Data Science is defined and learn about ethical considerations that must be considered by a data scientist. You will also learn how data is defined and learn a bit about statistics and probability, the core academic domains of Data Science. + +### Topics + +1. [Defining Data Science](01-defining-data-science/README.md) +2. [Data Science Ethics](02-ethics/README.md) +3. [Defining Data](03-defining-data/README.md) +4. [Introduction to Statistics and Probability](04-stats-and-probability/README.md) + +### Credits + +These lessons were written with ❤️ by [Nitya Narasimhan](https://twitter.com/nitya) and [Dmitry Soshnikov](https://twitter.com/shwars). From e25cf768f2af71d828e2117ed85cb5d8f6ce0480 Mon Sep 17 00:00:00 2001 From: nahyeongKim <74201593+nahyeong99@users.noreply.github.com> Date: Sat, 6 Nov 2021 04:42:10 +0900 Subject: [PATCH 195/254] Update README.md --- 1-Introduction/translations/README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/1-Introduction/translations/README.md b/1-Introduction/translations/README.md index b041eb5b..232dcd3f 100644 --- a/1-Introduction/translations/README.md +++ b/1-Introduction/translations/README.md @@ -1,17 +1,18 @@ -# Introduction to Data Science +# 데이터 과학의 입문 ![data in action](images/data.jpg) -> Photo by Stephen Dawson on Unsplash +> 이미지 출처: Stephen Dawson on Unsplash -In these lessons, you will discover how Data Science is defined and learn about ethical considerations that must be considered by a data scientist. You will also learn how data is defined and learn a bit about statistics and probability, the core academic domains of Data Science. +이 레슨에서, 당신은 어떻게 데이터 과학이 정의되었는지 발견하고 데이터 과학자에게 있어서 필히 고려해야만 하는 윤리적 사항들에 대하여 배울 것입니다. 당신은 또한 데이터가 어떻게 정의되었는지와, 데이터 과학 학습 영역에서의 중심인 약간의 통계와 확률에 대하여 배울 것입니다. -### Topics -1. [Defining Data Science](01-defining-data-science/README.md) -2. [Data Science Ethics](02-ethics/README.md) -3. [Defining Data](03-defining-data/README.md) -4. [Introduction to Statistics and Probability](04-stats-and-probability/README.md) +### 토픽 -### Credits +1. [데이터 과학 정의하기](01-defining-data-science/README.md) +2. [데이터 과학에서의 윤리](02-ethics/README.md) +3. [데이터 정의하기](03-defining-data/README.md) +4. [통계와 확률에 대한 소개](04-stats-and-probability/README.md) -These lessons were written with ❤️ by [Nitya Narasimhan](https://twitter.com/nitya) and [Dmitry Soshnikov](https://twitter.com/shwars). +### 출처 + +이 강의들은 [Nitya Narasimhan](https://twitter.com/nitya) 과 [Dmitry Soshnikov](https://twitter.com/shwars)에 의해 쓰여졌음❤️ From 1be226e0e89b17fcff500f89b2b84ca9f71f888b Mon Sep 17 00:00:00 2001 From: nahyeongKim <74201593+nahyeong99@users.noreply.github.com> Date: Sat, 6 Nov 2021 04:42:23 +0900 Subject: [PATCH 196/254] Rename README.md to README.ko.md --- 1-Introduction/translations/{README.md => README.ko.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 1-Introduction/translations/{README.md => README.ko.md} (100%) diff --git a/1-Introduction/translations/README.md b/1-Introduction/translations/README.ko.md similarity index 100% rename from 1-Introduction/translations/README.md rename to 1-Introduction/translations/README.ko.md From 2b47221e8567cb66c41726694ff64d6ca77074e9 Mon Sep 17 00:00:00 2001 From: Hyejeong443 <82637076+Hyejeong443@users.noreply.github.com> Date: Sat, 6 Nov 2021 13:05:18 +0900 Subject: [PATCH 197/254] Update assignment.md --- .../14-Introduction/assignment.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/4-Data-Science-Lifecycle/14-Introduction/assignment.md b/4-Data-Science-Lifecycle/14-Introduction/assignment.md index e0ff4244..0a6db90f 100644 --- a/4-Data-Science-Lifecycle/14-Introduction/assignment.md +++ b/4-Data-Science-Lifecycle/14-Introduction/assignment.md @@ -1,23 +1,23 @@ -# Assessing a Dataset +# 데이터셋 평가 -A client has approached your team for help in investigating a taxi customer's seasonal spending habits in New York City. +한 고객이 뉴욕에서 택시 고객의 계절별 소비 습관을 조사하는 데 도움을 청하기 위해 귀하의 팀에 연락했습니다. -They want to know: **Do yellow taxi passengers in New York City tip drivers more in the winter or summer?** +그들은 알고 싶어한다: **뉴욕의 노란 택시 승객들은 겨울이나 여름에 기사들에게 팁을 더 많이 주는가?** -Your team is in the [Capturing](Readme.md#Capturing) stage of the Data Science Lifecycle and you are in charge of handling the the dataset. You have been provided a notebook and [data](../../data/taxi.csv) to explore. +귀하의 팀은 데이터과학 라이프사이클 [캡처링](Readme.md#Capturing) 단계에 있으며, 귀하는 데이터 셋을 처리하는 임무를 맡고 있습니다. 노트북과 가공할 [데이터](../../data/taxi.csv)를 제공받으셨습니다. -In this directory is a [notebook](notebook.ipynb) that uses Python to load yellow taxi trip data from the [NYC Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). -You can also open the taxi data file in text editor or spreadsheet software like Excel. +이 디렉토리에서는 파이썬을 사용하여 [NYC택시 & 리무진 위원회](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets)로부터 노란색 택시 트립 데이터를 로드하는 [노트북](notebook.ipynb)이 있습니다. +엑셀과 같은 텍스트 편집기나 스프레드시트 소프트웨어에서 택시 데이터 파일을 열 수도 있습니다. -## Instructions +## 지시사항 -- Assess whether or not the data in this dataset can help answer the question. -- Explore the [NYC Open Data catalog](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93). Identify an additional dataset that could potentially be helpful in answering the client's question. -- Write 3 questions that you would ask the client for more clarification and better understanding of the problem. +- 이 데이터 세트의 데이터가 질문에 대답하는 데 도움이 될 수 있는지 여부를 평가합니다. +- [NYC Open Data 카탈로그](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93)를 살펴보십시오. 고객의 질문에 대답하는 데 잠재적으로 도움이 될 수 있는 추가 데이터 세트를 식별합니다. +- 고객에게 문제에 대한 보다 명확한 설명과 이해를 위해 물어볼 질문 3개를 작성합니다. -Refer to the [dataset's dictionary](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) and [user guide](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) for more information about the data. +데이터에 대한 자세한 내용은 [정보 사전](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) 및 [사용자 가이드](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf)을 참조하십시오. ## Rubric -Exemplary | Adequate | Needs Improvement +모범 | 충분 | 개선 필요 --- | --- | -- | From 9a02c016f69a9ab3cbd151d9e57c396904a7487c Mon Sep 17 00:00:00 2001 From: Hyejeong443 <82637076+Hyejeong443@users.noreply.github.com> Date: Sat, 6 Nov 2021 13:06:01 +0900 Subject: [PATCH 198/254] Update assignment.md --- 4-Data-Science-Lifecycle/14-Introduction/assignment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/4-Data-Science-Lifecycle/14-Introduction/assignment.md b/4-Data-Science-Lifecycle/14-Introduction/assignment.md index 0a6db90f..df425137 100644 --- a/4-Data-Science-Lifecycle/14-Introduction/assignment.md +++ b/4-Data-Science-Lifecycle/14-Introduction/assignment.md @@ -17,7 +17,7 @@ 데이터에 대한 자세한 내용은 [정보 사전](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) 및 [사용자 가이드](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf)을 참조하십시오. -## Rubric +## 표제 모범 | 충분 | 개선 필요 --- | --- | -- | From c1802f663259e9cfaa9bfc88f1164bf6940b1ea2 Mon Sep 17 00:00:00 2001 From: ludovicobesana Date: Sat, 6 Nov 2021 19:14:38 +0100 Subject: [PATCH 199/254] fix: Update favicon img --- images/favicon.png | Bin 6188 -> 4556 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/favicon.png b/images/favicon.png index 9e5b4f6ac5ab75ef5467dcdb59f9db3cc7a0f405..7e33f5aedba624bb20001cc044b0fdd9a8587a46 100644 GIT binary patch delta 4214 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 Gy8l0+P~2Yt delta 5859 zcmZu#cQD*hwEpc{U9fr(WFv^Wy2N6!%j&%(L|a7fgb+VHt4oAPQKCfDAWHP;(TQFX z5;Z~e-kvw_{qxG)IdkuvneY3~%$+&knbUWx7@1@bUIJGqt1&+r0043i+*Z4URfU2WY`ko$p03^6`bGX5wx7+SC%}~4 z7cTtuOAk~N@UjI}g5uxrRdDyF3U=q>hJ(;tiU3Tlk7`-&&@VGtfg~6G97ft6f;8AI za-y<#n+psakUsP|{6jjFqngMe_hfH%_n9hk`g31l!h38g?Dn#ZZ&eHw5r526pv!{Ms5 zaNJ6^fSsbQ{oXipK4*jbPHpSTX5yFEBselyQW!!Xmd7XocSHckRxtO6hZ>>z4Usx^ zZN4HQ1T;Vv@x_M(6_7??@CXfL6hu)|&=S$kw*Mm1`B}c{Ebg_)n?8B;;xMGG6Kog$ zDYvCa%8jjCt^E`T;R49vFxR4F=*zlRH5jeu>fh8#I^srKH>NPeh#waA&%Prd@5RN? zE!r|9my(r5=j%Q}rtfOTbhHG+897nkVd95}P&8oA1Hk?m0+4dDaPsscdI-avn@M~K zy~ca*T{^-FI@rJDmWSt9+id0 zY*qd~*r;o>BgXv*qCX&TRlEH-$O7k8y&liyzrahEzPN6(Ma-ZmKn$YETE7=)Fk8RJ z4h}MID#M6>qn)KpT$Y7%&R)sVroV0zH>)A3);~@YdeyA^bX!(|myWn4YQM;7XenE* z6aRf3*{^c9Z0C0p+UwaK(+Ur!Jmr4#vH4nOh;_OE|mO#Q%Q(Y<&7+2!s5cRcXB3 zbs6uQQ%^m^*|23Kf0UlHC^&hS5RaLJPd-P|7vDyBqcv<)qK`i!Vni?q0)Ziv0Y|3W zV^D6I+3YzoaCWY+^e4?22CpT7Catu!+t?II3IOx|>CV;Q#b*!e(ZNFnvF#z{t`|8u zA8*K3e}E?GZ!y4=Uv$w)4_^4%2mU%{`*l|<_tga zMPto;L2GY0tx`>0JlZ6s&yGdVuo4FHtamu}QR;Q@8(qP9$JCuK0*ee`TeY?j4Af`j zLPJ{FSCCrdt(;~L>TzlL{HeT6Im_fUoB8MMxwa_-&S%-d087wd_=Gu7!hpg9hz`W6 zPh2#avF|J;36KCd)i2nk*GOnk&@Phb$_6)RXB@NMaRNd_NoJ~DmE|*^ArI^A7izL? zeu0T$<`$qdrN(;r`b<@3UBJVV{iRuA8 zDhGxh5j9`Y0qzq2{lW=Q*dVq_yeG5)031?e51#wV?Rc(*fQm1yPkr7((ctlT7B)6z zL9&;ztu?hzHU8ECE+AKs-VLjS>9pJE0r0 zsHG5g(*7J5@N)uf2n+G5jeF8aji-`wosPIFGwahQn)TU_uA`S_zJC9#;XR~a?U~c$ z8FV@waSi$sr`lpi#zhs4PCtxLq=1%H86Q26heSTg2vPg+K72AZcTWI4b1g+ZZ#Q7) z80EJ<8T$VHO+MXBXGySstdOQMhB()6eYLb>4(%X>V0)4EV|8;673vkj=YtZD;6m7x z(66Mz51ODieE(?jhnLfUdvT!HvM0g@-ZDGOUR<>yaw`mj2;G>e!Tb0ygl_Uqs%&by zOur*&_xlacGLKX+RoTa;VaY${Y>rgRY=;5q!@$0E#4E*&hh?UQY?K+q6_g7mH54!DvI{#38RKqelOER{MzAPNqKF_2v zS*GtUQ{aqf9?WkcjRN;M4ua3gcrI-fzPPColdt+{e`|;AkST@m!5u=XxZQ`Lx5um6 z%Pj(0UI~N@Ea|c-7>h=?UmA>GFo=^zDnZ)X+K|hwy)5{o!6nTC^QH+Z*R!Inb#q^% zVwx;#p`H@lIJt>@S%<=@dkq(Nh@ur)Ibg)=6-R6YkA@*J;N&{|H}xhZH+U&MC23*Q zGpF4X$QDASh^lN1N0jmCQuGX#iR(FN*k}bs<~313oEEyQzB}^an>wszAj@n;WBi3< z{9d)}w!?Te%<9^jvdfd@0sFil`tpXM66oauvwSF%@{*i?2jK^{P#BnYa)#mmd+;2j8l8)M_F^rP<;h0AyL-{g;tAhKuL`f^8Wb6*Z; zpBXcxu)Y`YpSB2u0AKw*{R`He&D~MA$A7X!-CSN?9-5eVtSApx6nl-im(J?M5c_z_ zem8P)lEq0i(c>xjFPWA#EiF0yHl~T^4n-P}@DKU&T7o+~}-=k(n$r!|Eld3JwR9lb&u*09%w0Z8Za2_H};##~Cay)Pm z6K%ED)*LrmkP**HeA&Q*e`d>8+{EI`pD+#ZZZ4OpO^qnfEa!#ix?)-2U+qkSKRBluhG>EqS0Z;@w&x3Z@e*7s>}Ob7@- zRJ$`71@%~5WIu?{>>NTrv7Rp!2Uqt^Xka?ZVjR|=NgLurdVc7X%5Et1FqXUD@wCAsvCChj1Y705ALH@V?^76jrA?!zg1_RUX2WC9G zxCrLUvno;EUZ1-Cqr=MzDEN~2xY1YECioFe31fs-3wH>Dz)Cfmo;7K6qCNHNklJ|5 zw6Wm0>*t|mX-bJmw~>}saYAC729IJV3Ty4G|1Qv=z)FtzwJF0P$8Y_TreKq$?MV!Ro#Z1#*S|XQ4?R}+8h6Ti(B@jxrE+EvESX+w z7X0)n(NK9HkUKHRcE6+6=@eEANwei2N6DS@vPW?u@;pYgq^%b^<7wfV>~b*$3tjd4 zI7pIO=k~Eq19RZNAo|=k{{~=yLc5wprzVXMe^ZCC<-%aH1N;mn!@?JGfNOX_l%ML8Xy(@J2tjM6;#lIJe@P`BA>oZ!=WeeH{h|(8HHat< z%Z;Yx{R${SJv4uXgEfz~Ii)|0CWBj#IJ?|0cJje5Fuuk;IsZRYFIS#EGwW|_4VpPS zL$St_=oc`&_(S!gKtjF4#$+}Luad(E0b~`sp$3RFo@_;;>qZe050|5P09Jxyt6xYB zk!i)TVu)Bo$s1dk8nI=Gg|Z`dWW*N{I+T((FMks1JD`ywz|4Bt`#3bpN47bvMz1w2W=U>pW zQ}gK7ap2wlG>;VMsgsXl-9L@~(o64B^WEzp{jT6-1aEZYqyb zm{{nRJbDJ!xCUJg=OkZ(o3DbI13At%cDtHR^PcHF5@SP2r-?c}QtEw3X*2tgEP&Ym z6;cXDFxB<`T1?L#!=fV{ks%Nzv*jeNH@g_=zt((`ZX|vYLkvv6CufA6>y;l#3&;G6 z?Xa1wa%QfW5-g7QIQk0dOTSy+$_Af5O+;i~-gW{dd*g3s6y`S_sWBk*@t$u7kH6eh z`7*}4E)^q1-%d(_QHL>^htBVvvD1QN7Is8CW2_MH9jZ$F00?s za~}PjkAT(TVZFGxxJn|gWZtdmU$;!=c)6f)#~JF};O#dePoyH@Sk zdAfOnpn~7OS@OYM-6F%SzfDgaq*!~K%k=G7HrHO_f_M%`Xc`QIPt*!B(oDtiB_t28 zo9&9-Pt*J$ST*gsKC8XLe&v_Hw`D3tKN^AjAB~FA3$*ydjK#Ma8W~`j`cvzi(#r!) zAL103NJ%HAEgt3z#O~R!MIk{euwR3xSzGFf4og(IO*x^dsVP!kk;6M*$CAC*QAg7` z6se=GrC7k3G(Ol$lVMaaY7HLVNLgKlTOBYgTRsUcajoL_!G;_Yo&L%j;TjB#dH|N- zTMtsNxU}9%wH!XRJvpJ(;MOfNwvG!GC4ui&@}1l9?V|#gkwNbIT?^hnzt%++O^AZ4 zv`AmCrO4Bp`OdwDMkwlL(5iLJN$2ad+11e1vm{1BLPFbaW2zt#Va$>(@+y4gR7ONRXP|dM%*tSYvYcowI4)KD!KdWe^Pf+7oj!3?_Utw(s`r~Y>j^U5L~tRf zTz|&7;&Z;yP;sSqXNkQ1u}t24w=)dCdA40u-S%dabhDf*uW?lMqB#y(KM!1O6p zid;#8@?UCvyIf5ysS+BGDE-H{ZG?aw2Y>Yc%{bwLB3@*9dt@;kY_0MA;w$o3$Uv|>&xWZ z9P~0scjQ>`Sw5$Y6u*Zuco(k|Rzjaz((YPAiEh9UYu(0U=8YA1?bn1B#8+JKZY&f^15Y zorxZ)XtcVC^iB=`)l@j45VDx=UJyx7Z`M&;??L`p6*F1ZL=(Oyrd!zPu(uPua3JI0LSkjA2y+3=GFZkZjtlXP3eQb1?K<#z+qbX|S zjqE9yPlw$E@x;Y1!^Yj$DSJ9fQg%tQdq-=%x@$B{cul+qve&(=eM?cBrxwD8Zq#iH zzp@!~ozjPx?I8eyk4?qFrTTk3>ENt<}oPJD?ed-dSWU}vlO7LSG7~`@`K4yBs;K? z_WN+mzIRvsu4a3OUeAHIe6c_vkIb?2{79vw(L27qyIxwqxJs zDv5gh8H@!ynXxC?W|ZNtX63z}Z*F$F$$7m$F&Ut7(C1E=2{d5yir&EQf7D(4-75k< zq@+LiziZR~$_V_*gai{E(Vqseq+V@;Z~I_PeQd3L?C#;c?5-|A3@IimB#IOg7c~?W zzb7GfPgFtxiM)qIiU=LA{SSbvyRD;r!2biF{BMMXhoVWcE$tYEl#H~rxI~^}h9rtq5p From 57297a4b28f3228cc0191060d2e59f4b97d0d8b4 Mon Sep 17 00:00:00 2001 From: chaeyoon20 Date: Sun, 7 Nov 2021 04:53:25 +0900 Subject: [PATCH 200/254] add README.ko.md and assignment.ko.md --- .../15-analyzing/translations/README.ko.md | 46 +++++++++++++++++++ .../translations/assignment.ko.md | 22 +++++++++ 2 files changed, 68 insertions(+) create mode 100644 4-Data-Science-Lifecycle/15-analyzing/translations/README.ko.md create mode 100644 4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ko.md diff --git a/4-Data-Science-Lifecycle/15-analyzing/translations/README.ko.md b/4-Data-Science-Lifecycle/15-analyzing/translations/README.ko.md new file mode 100644 index 00000000..7ae57b00 --- /dev/null +++ b/4-Data-Science-Lifecycle/15-analyzing/translations/README.ko.md @@ -0,0 +1,46 @@ +# 데이터 과학의 라이프 사이클: 분석하기 + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/15-Analyzing.png)| +|:---:| +| 데이터 과학의 라이프 사이클: 분석하기 - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +## 강의 전 퀴즈 + +## [강의 전 퀴즈](https://red-water-0103e7a0f.azurestaticapps.net/quiz/28) + +데이터의 라이프사이클을 분석하면 데이터가 제안된 질문에 답하거나 특정 문제를 해결할 수 있음을 확인할 수 있습니다. 또한 이 단계는 모델이 이러한 질문과 문제를 올바르게 해결하는지 확인하는 데 초점을 맞출 수 있습니다. 이 과정에서는 데이터 내의 특징과 관계를 정의하는 기술이며 모델링을 위한 데이터를 준비하는 데 사용할 수 있는 탐색 데이터 분석(Exploratory Data Analysis) 또는 EDA에 초점을 맞춥니다. + + [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1)의 예제 데이터셋을 사용하여 파이썬 및 Pandas 라이브러리에 어떻게 적용할 수 있는지 보여드리겠습니다. 이 데이터셋에는 이메일에서 발견되는 몇 가지 일반적인 단어가 포함되어 있으며 이러한 이메일의 출처는 익명입니다. 이 디렉터리에 있는 [노트북](notebook.ipynb)을 사용하여 계속 진행하십시오. + +## 탐색 데이터 분석 + +라이프사이클의 캡처 단계는 데이터를 획득하는 단계이며 당면한 문제와 질문입니다. 하지만 데이터가 최종 결과를 지원하는 데 도움이 될 수 있는지 어떻게 알 수 있을까요? +데이터 과학자는 데이터를 획득할 때 다음과 같은 질문을 할 수 있습니다. +- 이 문제를 해결할 데이터가 충분한가요? +- 이 문제에 적합한 품질의 데이터입니까? +- 이 데이터를 통해 추가 정보를 발견하게 되면 목표를 바꾸거나 재정의하는 것을 고려해야 하나요? +탐색적 데이터 분석은 데이터를 파악하는 프로세스이며, 이러한 질문에 답하는 데 사용할 수 있을 뿐만 아니라 데이터셋으로 작업하는 데 따른 당면 과제를 파악할 수 있습니다. 이를 달성하기 위해 사용되는 몇 가지 기술에 초점을 맞춰보겠습니다. + +## 데이터 프로파일링, 기술 통계 및 Pandas +이 문제를 해결하기에 충분한 데이터가 있는지 어떻게 평가합니까? 데이터 프로파일링은 기술 통계 기법을 통해 데이터셋에 대한 일반적인 전체 정보를 요약하고 수집할 수 있습니다. 데이터 프로파일링은 우리가 사용할 수 있는 것을 이해하는 데 도움이 되며 기술 통계는 우리가 사용할 수 있는 것이 얼마나 많은지 이해하는 데 도움이 됩니다. + +이전 강의에서 우리는 Pandas를 사용하여 [`describe()` 함수]와 함께 기술 통계를 제공했습니다. 숫자 데이터에 대한 카운트, 최대값 및 최소값, 평균, 표준 편차 및 분위수를 제공합니다. `describe()` 함수와 같은 기술 통계를 사용하면 얼마나 가지고 있고 더 필요한지를 평가하는 데 도움이 될 수 있습니다. + +## 샘플링 및 쿼리 +대규모 데이터셋의 모든 것을 탐색하는 것은 매우 많은 시간이 걸릴 수 있으며 일반적으로 컴퓨터가 수행해야 하는 작업입니다. 그러나 샘플링은 데이터를 이해하는 데 유용한 도구이며 데이터 집합에 무엇이 있고 무엇을 나타내는지를 더 잘 이해할 수 있도록 해줍니다. 표본을 사용하여 확률과 통계량을 적용하여 데이터에 대한 일반적인 결론을 내릴 수 있습니다. 표본 추출하는 데이터의 양에 대한 규칙은 정의되어 있지 않지만, 표본 추출하는 데이터의 양이 많을수록 데이터에 대한 일반화의 정확성을 높일 수 있다는 점에 유의해야 합니다. +Pandas에는 받거나 사용하려는 임의의 샘플 수에 대한 아규먼트를 전달할 수 있는 [라이브러리 속 함수`sample()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html)이 있습니다. + +데이터에 대한 일반적인 쿼리는 몇 가지 일반적인 질문과 이론에 답하는 데 도움이 될 수 있습니다. 샘플링과 달리 쿼리를 사용하면 질문이 있는 데이터의 특정 부분을 제어하고 집중할 수 있습니다. +Pandas 라이브러리의 [`query()` 함수](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html)를 사용하면 열을 선택하고 간단한 검색된 행을 통해 데이터에 대한 답변을 제공받을 수 있습니다. + +## 시각화를 통한 탐색 +시각화 생성을 시작하기 위해 데이터가 완전히 정리되고 분석될 때까지 기다릴 필요가 없습니다. 실제로 탐색하는 동안 시각적 표현이 있으면 데이터의 패턴, 관계 및 문제를 식별하는 데 도움이 될 수 있습니다. 또한, 시각화는 데이터 관리에 관여하지 않는 사람들과 의사 소통하는 수단을 제공하고 캡처 단계에서 해결되지 않은 추가 질문을 공유하고 명확히 할 수 있는 기회가 될 수 있습니다. 시각적으로 탐색하는 몇 가지 인기 있는 방법에 대해 자세히 알아보려면 [section on Visualizations](3-Data-Visualization)을 참조하세요. + +## 불일치 식별을 위한 탐색 +이 강의의 모든 주제는 누락되거나 일치하지 않는 값을 식별하는 데 도움이 될 수 있지만 Pandas는 이러한 값 중 일부를 확인하는 기능을 제공합니다. [isna() 또는 isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html)에서 결측값을 확인할 수 있습니다. 데이터 내에서 이러한 값을 탐구할 때 중요한 한 가지 요소는 처음에 이러한 값이 왜 이렇게 되었는지 이유를 탐구하는 것입니다. 이는 [문제 해결을 위해 취해야 할 조치](2-Working-With-Data\08-data-preparation\notebook.ipynb)를 결정하는 데 도움이 될 수 있습니다. + +## [강의 전 퀴즈](https://red-water-0103e7a0f.azurestaticapps.net/quiz/27) + +## 과제 + +[Exploring for answers](assignment.md) diff --git a/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ko.md b/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ko.md new file mode 100644 index 00000000..882c40a0 --- /dev/null +++ b/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.ko.md @@ -0,0 +1,22 @@ +# 정답 찾기 + +이는 지난 강의의 [assignment](..\14-Introduction\assignment.md)와 이어지며, 우리는 잠시 데이터셋을 살펴보았습니다. 이제 데이터를 더욱 자세히 살펴보겠습니다. + +다시 한번, 고객이 알고싶어하는 질문: **뉴욕의 노란 택시 승객들은 겨울이나 여름에 기사들에게 팁을 더 많이 주나요?** + +당신의 팀은 Data Science Lifecycle의 [Analyzing](Readme.md)단계에 있으며, 이 곳에서 데이터셋에 대한 탐색적 데이터분석을 수행해야합니다. 당신은 2019년 1월부터 7월까지 200건의 택시 거래가 포함된 노트북과 데이터셋을 제공받았습니다. + +## 지시사항 + +이 디렉토리에는 [notebook](assignment.ipynb)와 [Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets)의 데이터가 있습니다. 데이터에 대한 자세한 내용은 [dataset's dictionary](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) 및 [user guide](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf)를 참조하세요. + +이번 강의에서 배운 몇 가지 기술을 사용하여 노트북에 있는 EDA를 직접 수행하고(원하는 경우 셀 추가) 다음 질문에 답하십시오. + +- 데이터의 어떤 다른 영향이 팁 금액에 영향을 미칠 수 있습니까? +- 클라이언트의 질문에 답하는 데 가장 필요없는 열은 무엇입니까? +- 지금까지 제공된 자료에 따르면, 데이터가 계절별 팁에대한 증거를 제공하는 것 같습니까? + +## Rubric + +모범 | 충분 | 개선 필요 +--- | --- | -- | From a0415e4c967e67597f9b39076befb693076cb80d Mon Sep 17 00:00:00 2001 From: qzylalala <304228244@qq.com> Date: Sun, 7 Nov 2021 21:16:59 +0800 Subject: [PATCH 201/254] [zh-cn] 3/README --- .../translations/README.zh-cn.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 3-Data-Visualization/translations/README.zh-cn.md diff --git a/3-Data-Visualization/translations/README.zh-cn.md b/3-Data-Visualization/translations/README.zh-cn.md new file mode 100644 index 00000000..2a5393fa --- /dev/null +++ b/3-Data-Visualization/translations/README.zh-cn.md @@ -0,0 +1,28 @@ +# 可视化 + +![a bee on a lavender flower](../images/bee.jpg) +> 拍摄者 Jenna Lee 上传于 Unsplash + +数据可视化是数据科学家最重要的任务之一。一张图片有时胜过千言万语,同时可视化还可以帮助你指出你的数据中包含的各种有趣的特征,例如峰值、异常值、分组、趋势等等,这可以帮助你更好的了解你的数据。 + +在这五节课当中,你将接触到来源于大自然的数据,并使用各种不同的技术来完成有趣且漂亮的可视化。 + +### 主题 + +1. [可视化数据](../09-visualization-quantities/README.md) +1. [可视化数据分布](../10-visualization-distributions/README.md) +1. [可视化数据占比](../11-visualization-proportions/README.md) +1. [可视化数据间的关系](../12-visualization-relationships/README.md) +1. [做有意义的可视化](../13-meaningful-visualizations/README.md) + +### 致谢 + +这些可视化课程是由 [Jen Looper](https://twitter.com/jenlooper) 用 🌸 编写的 + +🍯 US Honey Production 所使用的数据来自 Jessica Li 在 [Kaggle](https://www.kaggle.com/jessicali9530/honey-production) 上的项目. 实际上,该 [数据集](https://usda.library.cornell.edu/concern/publications/rn301137d) 来自 [美国农业部](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 mushrooms 所使用的数据集也是来自于 [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) ,该数据集经历过 Hatteras Dunton 的一些小修订. 该数据集包括对与姬松茸和环柄菇属中 23 种金针菇相对应的假设样本的描述。 蘑菇取自于奥杜邦协会北美蘑菇野外指南 (1981)。 该数据集于 1987 年捐赠给了 UCI ML(机器学习数据集仓库) 27 + +🦆 Minnesota Birds 的数据也来自于 [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) ,是由 Hannah Collins 从 [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) 中获取的. + +以上这些数据集都遵循 [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/) 条款. \ No newline at end of file From c3deb5759b54e9d02e581f9c5efec647f097974a Mon Sep 17 00:00:00 2001 From: JULO01 <90795588+JULO01@users.noreply.github.com> Date: Sun, 7 Nov 2021 14:51:33 +0100 Subject: [PATCH 202/254] Fixed Navigation Bar scaling of quiz-app --- quiz-app/src/App.vue | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/quiz-app/src/App.vue b/quiz-app/src/App.vue index 65b54a08..8b5365df 100644 --- a/quiz-app/src/App.vue +++ b/quiz-app/src/App.vue @@ -1,14 +1,21 @@

#Qg7v$1R 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 Date: Thu, 14 Oct 2021 00:36:30 +0530 Subject: [PATCH 082/254] Added hindi translation of all Vizualization base README --- .../assignment.hi.md | 10 ++ .../translations/README.hi.md | 168 ++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 3-Data-Visualization/13-meaningful-visualizations/assignment.hi.md create mode 100644 3-Data-Visualization/13-meaningful-visualizations/translations/README.hi.md diff --git a/3-Data-Visualization/13-meaningful-visualizations/assignment.hi.md b/3-Data-Visualization/13-meaningful-visualizations/assignment.hi.md new file mode 100644 index 00000000..26ab71ac --- /dev/null +++ b/3-Data-Visualization/13-meaningful-visualizations/assignment.hi.md @@ -0,0 +1,10 @@ +# अपना खुद का कस्टम दृश्य बनाएं + +## निर्देश + +एक सामाजिक नेटवर्क बनाने के लिए इस परियोजना में कोड नमूने का उपयोग करते हुए, अपने स्वयं के सामाजिक इंटरैक्शन के डेटा का मजाक उड़ाएं। आप सोशल मीडिया के अपने उपयोग को मैप कर सकते हैं या अपने परिवार के सदस्यों का आरेख बना सकते हैं। एक दिलचस्प वेब ऐप बनाएं जो सोशल नेटवर्क का एक अनूठा विज़ुअलाइज़ेशन दिखाता है। +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधार की जरूरत +--- | --- | -- | +एक गिटहब रेपो कोड के साथ प्रस्तुत किया जाता है जो ठीक से चलता है (इसे एक स्थिर वेब ऐप के रूप में तैनात करने का प्रयास करें) और परियोजना को समझाते हुए एक एनोटेट रीडमे है | रेपो ठीक से नहीं चलता है या अच्छी तरह से प्रलेखित नहीं है | रेपो ठीक से नहीं चलता है और अच्छी तरह से प्रलेखित नहीं है \ No newline at end of file diff --git a/3-Data-Visualization/13-meaningful-visualizations/translations/README.hi.md b/3-Data-Visualization/13-meaningful-visualizations/translations/README.hi.md new file mode 100644 index 00000000..82b0f217 --- /dev/null +++ b/3-Data-Visualization/13-meaningful-visualizations/translations/README.hi.md @@ -0,0 +1,168 @@ +# सार्थक विज़ुअलाइज़ेशन बनाना + +|![ सकेटच्नोते करने वाला [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| सार्थक विज़ुअलाइज़ेशन - _सकेटच्नोते करने वाला [@nitya](https://twitter.com/nitya)_ | + +> "यदि आप डेटा को काफी देर तक प्रताड़ित करते हैं, तो यह कुछ भी कबूल कर लेगा" - [रोनाल्ड कोसे](https://en.wikiquote.org/wiki/Ronald_Coase) + +एक डेटा वैज्ञानिक के बुनियादी कौशल में से एक सार्थक डेटा विज़ुअलाइज़ेशन बनाने की क्षमता है जो आपके सवालों के जवाब देने में मदद करता है। अपने डेटा की कल्पना करने से पहले, आपको यह सुनिश्चित करने की आवश्यकता है कि इसे साफ और तैयार किया गया है, जैसा कि आपने पिछले पाठों में किया था। उसके बाद, आप यह तय करना शुरू कर सकते हैं कि डेटा को सर्वोत्तम तरीके से कैसे प्रस्तुत किया जाए। + +इस पाठ में, आप समीक्षा करेंगे: + +1. सही चार्ट प्रकार कैसे चुनें +2. भ्रामक चार्टिंग से कैसे बचें +3. रंग के साथ कैसे काम करें +4. पठनीयता के लिए अपने चार्ट को कैसे स्टाइल करें +5. एनिमेटेड या 3डी चार्टिंग समाधान कैसे तैयार करें +6. क्रिएटिव विज़ुअलाइज़ेशन कैसे बनाएं + +## [व्याख्यान पूर्व प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/24) + +## सही चार्ट प्रकार चुनें + +पिछले पाठों में, आपने चार्टिंग के लिए Matplotlib और Seaborn का उपयोग करके सभी प्रकार के दिलचस्प डेटा विज़ुअलाइज़ेशन बनाने का प्रयोग किया था। सामान्य तौर पर, आप इस तालिका का उपयोग करके पूछे जाने वाले प्रश्न के लिए [सही प्रकार का चार्ट](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) चुन सकते हैं: + + +| आपको चाहिए: | आपको उपयोग करना चाहिए: | +| -------------------------- | ----------------------------- | +| समय के साथ डेटा रुझान दिखाएं | रेखा | +| श्रेणियों की तुलना करें | बार, पाई | +| योग की तुलना करें | पाई, स्टैक्ड बार | +| रिश्ते दिखाएँ | तितर बितर, रेखा, पहलू, दोहरी रेखा | +| वितरण दिखाएं | तितर बितर, हिस्टोग्राम, बॉक्स | +| अनुपात दिखाएँ | पाई, डोनट, वफ़ल | + +> ✅ आपके डेटा की बनावट के आधार पर, आपको इसका समर्थन करने के लिए दिए गए चार्ट को प्राप्त करने के लिए इसे टेक्स्ट से न्यूमेरिक में बदलने की आवश्यकता हो सकती है। + +## धोखे से बचें + +यहां तक ​​कि अगर एक डेटा वैज्ञानिक सही डेटा के लिए सही चार्ट चुनने के लिए सावधान है, तो ऐसे कई तरीके हैं जिनसे डेटा को एक बिंदु साबित करने के लिए प्रदर्शित किया जा सकता है, अक्सर डेटा को कम करने की कीमत पर। भ्रामक चार्ट और इन्फोग्राफिक्स के कई उदाहरण हैं! + +[![हाउ चार्ट्स लाइ बाय अल्बर्टो काहिरा](./images/tornado.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How चार्ट्स झूठ") + +> भ्रामक चार्ट के बारे में एक सम्मेलन वार्ता के लिए ऊपर की छवि पर क्लिक करें + +यह चार्ट दिनांक के आधार पर सत्य के विपरीत दिखाने के लिए X अक्ष को उलट देता है: + +![खराब चार्ट 1](images/bad-chart-1.png) + +[यह चार्ट](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) और भी भ्रामक है, क्योंकि यह निष्कर्ष निकालने के लिए सही है कि, समय के साथ, विभिन्न काउंटियों में COVID मामलों में गिरावट आई है। वास्तव में, यदि आप तिथियों को करीब से देखते हैं, तो आप पाते हैं कि उन्हें उस भ्रामक गिरावट की प्रवृत्ति देने के लिए पुनर्व्यवस्थित किया गया है। + +![खराब चार्ट 2](images/bad-chart-2.jpg) + +यह कुख्यात उदाहरण धोखा देने के लिए रंग और एक फ़्लिप वाई अक्ष का उपयोग करता है: यह निष्कर्ष निकालने के बजाय कि बंदूक के अनुकूल कानून के पारित होने के बाद बंदूक की मौत बढ़ गई, वास्तव में आंख को यह सोचने के लिए मूर्ख बनाया जाता है कि विपरीत सच है: + +![खराब चार्ट 3](images/bad-chart-3.jpg) + +यह अजीब चार्ट दिखाता है कि कैसे अनुपात में हेरफेर किया जा सकता है, उल्लसित प्रभाव के लिए: + +![खराब चार्ट 4](images/bad-chart-4.jpg) + +अतुलनीय की तुलना करना अभी तक एक और छायादार चाल है। एक [अद्भुत वेब साइट](https://tylervigen.com/spurious-correlations) सभी 'नकली सहसंबंध' के बारे में है जो मेन में तलाक की दर और मार्जरीन की खपत जैसी 'तथ्यों' से संबंधित चीजों को प्रदर्शित करती है। एक Reddit समूह डेटा का [बदसूरत उपयोग](https://www.reddit.com/r/dataisugly/top/?t=all) भी एकत्र करता है। + +यह समझना महत्वपूर्ण है कि भ्रामक चार्ट द्वारा आंख को कितनी आसानी से मूर्ख बनाया जा सकता है। भले ही डेटा वैज्ञानिक की मंशा अच्छी हो, लेकिन खराब प्रकार के चार्ट का चुनाव, जैसे कि बहुत अधिक श्रेणियां दिखाने वाला पाई चार्ट, भ्रामक हो सकता है। + +## रंग + +आपने ऊपर 'फ्लोरिडा गन हिंसा' चार्ट में देखा कि कैसे रंग चार्ट को अर्थ की एक अतिरिक्त परत प्रदान कर सकते हैं, विशेष रूप से वे जो मैटप्लोटलिब और सीबॉर्न जैसे पुस्तकालयों का उपयोग करके डिज़ाइन नहीं किए गए हैं जो विभिन्न सत्यापित रंग पुस्तकालयों और पट्टियों के साथ आते हैं। अगर आप हाथ से चार्ट बना रहे हैं, तो [रंग सिद्धांत](https://colormatters.com/color-and-design/basic-color-theory) का थोड़ा अध्ययन करें + +> ✅ चार्ट डिजाइन करते समय सावधान रहें, कि एक्सेसिबिलिटी विज़ुअलाइज़ेशन का एक महत्वपूर्ण पहलू है। आपके कुछ उपयोगकर्ता कलर ब्लाइंड हो सकते हैं - क्या आपका चार्ट दृष्टिबाधित उपयोगकर्ताओं के लिए अच्छा प्रदर्शन करता है? + +अपने चार्ट के लिए रंग चुनते समय सावधान रहें, क्योंकि रंग वह अर्थ बता सकता है जिसका आप इरादा नहीं कर सकते। ऊपर 'ऊंचाई' चार्ट में 'गुलाबी महिलाएं' एक विशिष्ट 'स्त्री' अर्थ व्यक्त करती हैं जो चार्ट की विचित्रता को जोड़ती है। + +जबकि [रंग अर्थ](https://colormatters.com/color-symbolism/the-meanings-of-colors) दुनिया के अलग-अलग हिस्सों में अलग-अलग हो सकते हैं, और उनकी छाया के अनुसार अर्थ में परिवर्तन होता है। सामान्यतया, रंग अर्थों में शामिल हैं: + +| रंग | अर्थ | +| ------ | ------------------- | +| लाल | शक्ति | +| नीला | भरोसा, वफादारी | +| पीला | खुशी, सावधानी | +| हरा | पारिस्थितिकी, भाग्य, ईर्ष्या | +| बैंगनी | खुशी | +| नारंगी | कंपन | + +यदि आपको कस्टम रंगों के साथ चार्ट बनाने का काम सौंपा गया है, तो सुनिश्चित करें कि आपके चार्ट दोनों पहुंच योग्य हैं और आपके द्वारा चुना गया रंग उस अर्थ से मेल खाता है जिसे आप व्यक्त करने का प्रयास कर रहे हैं। + +## पठनीयता के लिए अपने चार्ट को स्टाइल करना + +यदि चार्ट पढ़ने योग्य नहीं हैं तो वे अर्थपूर्ण नहीं हैं! अपने डेटा के साथ अच्छी तरह से स्केल करने के लिए अपने चार्ट की चौड़ाई और ऊंचाई को स्टाइल करने पर विचार करने के लिए कुछ समय निकालें। यदि एक चर (जैसे सभी ५० राज्यों) को प्रदर्शित करने की आवश्यकता है, तो यदि संभव हो तो उन्हें Y अक्ष पर लंबवत रूप से दिखाएं ताकि क्षैतिज-स्क्रॉलिंग चार्ट से बचा जा सके। + +अपनी कुल्हाड़ियों को लेबल करें, यदि आवश्यक हो तो एक किंवदंती प्रदान करें, और डेटा की बेहतर समझ के लिए टूलटिप्स प्रदान करें। + +यदि आपका डेटा X अक्ष पर टेक्स्टुअल और वर्बोज़ है, तो आप बेहतर पठनीयता के लिए टेक्स्ट को एंगल कर सकते हैं। [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) ३डी प्लॉटिंग की पेशकश करता है, अगर आप डेटा इसका समर्थन करते हैं। परिष्कृत डेटा विज़ुअलाइज़ेशन `mpl_toolkits.mplot3d` का उपयोग करके तैयार किया जा सकता है। + +![3d plots](images/3d.png) + +## एनिमेशन और 3डी चार्ट डिस्प्ले + +आज कुछ बेहतरीन डेटा विज़ुअलाइज़ेशन एनिमेटेड हैं। शर्ली वू ने डी3 के साथ अद्भुत काम किए हैं, जैसे '[फिल्म फूल](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', जहां प्रत्येक फूल एक फिल्म का एक दृश्य है। गार्जियन के लिए एक और उदाहरण 'बस्स्ड आउट' है, ग्रीन्सॉक और डी3 के साथ विज़ुअलाइज़ेशन के संयोजन के साथ एक इंटरैक्टिव अनुभव और एक स्क्रॉलीटेलिंग आलेख प्रारूप यह दिखाने के लिए कि एनवाईसी लोगों को शहर से बाहर निकालकर अपनी बेघर समस्या को कैसे संभालता है। + +![busing](images/busing.png) + +> "बस्स्ड आउट: हाउ अमेरिका मूव्स इट्स बेघर" से [अभिभावक](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). नादिह ब्रेमर और शर्ली वू द्वारा विज़ुअलाइज़ेशन + +हालांकि यह पाठ इन शक्तिशाली विज़ुअलाइज़ेशन लाइब्रेरी को सिखाने के लिए पर्याप्त नहीं है, फिर भी एक एनिमेटेड सोशल नेटवर्क के रूप में "डेंजरस लाइजन्स" पुस्तक के विज़ुअलाइज़ेशन को प्रदर्शित करने के लिए लाइब्रेरी का उपयोग करके Vue.js ऐप में D3 पर अपना हाथ आज़माएं। + +> "लेस लिआइसन्स डेंजरियस" एक पत्र-पत्रिका उपन्यास है, या पत्रों की एक श्रृंखला के रूप में प्रस्तुत उपन्यास है। 1782 में चोडरलोस डी लैक्लोस द्वारा लिखित, यह 18 वीं शताब्दी के अंत में फ्रांसीसी अभिजात वर्ग के दो द्वंद्वयुद्ध नायक, विकोमेट डी वालमोंट और मार्क्विस डी मेर्टुइल के शातिर, नैतिक रूप से दिवालिया सामाजिक युद्धाभ्यास की कहानी कहता है। दोनों अंत में अपने निधन से मिलते हैं लेकिन सामाजिक क्षति का एक बड़ा सौदा किए बिना नहीं। उपन्यास उनके मंडलियों में विभिन्न लोगों को लिखे गए पत्रों की एक श्रृंखला के रूप में सामने आता है, जो बदला लेने की साजिश रच रहा है या बस परेशानी पैदा कर रहा है। कथा के प्रमुख सरगनाओं को नेत्रहीन रूप से खोजने के लिए इन पत्रों का एक विज़ुअलाइज़ेशन बनाएं। + +आप एक वेब ऐप पूरा करेंगे जो इस सोशल नेटवर्क का एक एनिमेटेड दृश्य प्रदर्शित करेगा। यह एक पुस्तकालय का उपयोग करता है जिसे Vue.js और D3 का उपयोग करके [एक नेटवर्क का दृश्य](https://github.com/emiliorizzo/vue-d3-network) बनाने के लिए बनाया गया था। जब ऐप चल रहा हो, तो आप डेटा को इधर-उधर करने के लिए स्क्रीन पर चारों ओर नोड्स खींच सकते हैं। +![liaisons](images/liaisons.png) + +## प्रोजेक्ट: D3.js का उपयोग करके नेटवर्क दिखाने के लिए एक चार्ट बनाएं + +> इस पाठ फ़ोल्डर में एक `solution` फ़ोल्डर शामिल है जहां आप अपने संदर्भ के लिए पूर्ण परियोजना ढूंढ सकते हैं। + +1. स्टार्टर फोल्डर के रूट में README.md फाइल में दिए गए निर्देशों का पालन करें। सुनिश्चित करें कि आपके प्रोजेक्ट की निर्भरता स्थापित करने से पहले आपके मशीन पर NPM और Node.js चल रहे हैं। + +2. `starter/src` फ़ोल्डर खोलें। आपको एक `assets` फ़ोल्डर मिलेगा जहां आप उपन्यास के सभी अक्षरों वाली एक .json फ़ाइल ढूंढ सकते हैं, जिसमें 'से' और 'प्रेषक' लिखावट हो। + +3. विज़ुअलाइज़ेशन को सक्षम करने के लिए कोड को `components/Nodes.vue` में पूरा करें। `createLinks()` नामक विधि की तलाश करें और निम्नलिखित नेस्टेड लूप जोड़ें। + +अक्षरों के लिए 'से' और 'से' डेटा कैप्चर करने के लिए .json ऑब्जेक्ट के माध्यम से लूप करें और `links` ऑब्जेक्ट का निर्माण करें ताकि विज़ुअलाइज़ेशन लाइब्रेरी इसका उपभोग कर सके: + +```javascript +// अक्षरों के माध्यम से लूप + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +टर्मिनल से अपना ऐप चलाएं (एनपीएम रन सर्व करें) और विज़ुअलाइज़ेशन का आनंद लें! + +## चुनौती + +भ्रामक विज़ुअलाइज़ेशन खोजने के लिए इंटरनेट का भ्रमण करें. लेखक उपयोगकर्ता को कैसे मूर्ख बनाता है, और क्या यह जानबूझकर किया गया है? विज़ुअलाइज़ेशन को यह दिखाने के लिए सही करने का प्रयास करें कि उन्हें कैसा दिखना चाहिए। + +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/25) + +## समीक्षा और आत्म अध्ययन + +भ्रामक डेटा विज़ुअलाइज़ेशन के बारे में पढ़ने के लिए यहां कुछ लेख दिए गए हैं: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +ऐतिहासिक संपत्तियों और कलाकृतियों के लिए इन रुचि विज़ुअलाइज़ेशन पर एक नज़र डालें: + +https://handbook.pubpub.org/ + +इस लेख को देखें कि एनीमेशन आपके विज़ुअलाइज़ेशन को कैसे बढ़ा सकता है: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## कार्यभार + +[अपना खुद का कस्टम विज़ुअलाइज़ेशन बनाएं](assignment.hi.md) From c3c61fad96abe89eef51eed14ffbfa375f1ef0bf Mon Sep 17 00:00:00 2001 From: imsushant12 Date: Thu, 14 Oct 2021 00:43:30 +0530 Subject: [PATCH 083/254] Added hindi translation of all Vizualization base README --- 3-Data-Visualization/translations/README.hi.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/3-Data-Visualization/translations/README.hi.md b/3-Data-Visualization/translations/README.hi.md index 3d900203..67525567 100644 --- a/3-Data-Visualization/translations/README.hi.md +++ b/3-Data-Visualization/translations/README.hi.md @@ -11,11 +11,11 @@ इन पांच पाठों में, आप प्रकृति से प्राप्त डेटा का पता लगाएंगे और विभिन्न तकनीकों का उपयोग करके दिलचस्प और सुंदर विज़ुअलाइज़ेशन बनाएंगे। ### Topics -1. [विज़ुअलाइज़िंग मात्रा](09-visualization-quantities/README.md) -1. [विज़ुअलाइज़िंग वितरण](10-visualization-distributions/README.md) -1. [विज़ुअलाइज़िंग अनुपात](11-visualization-proportions/README.md) -1. [रिश्तों की कल्पना](12-visualization-relationships/README.md) -1. [सार्थक विज़ुअलाइज़ेशन बनाना](13-meaningful-visualizations/README.md) +1. [विज़ुअलाइज़िंग मात्रा](09-visualization-quantities/translations/README.hi.mdREADME.hi.md) +1. [विज़ुअलाइज़िंग वितरण](10-visualization-distributions/translations/README.hi.md) +1. [विज़ुअलाइज़िंग अनुपात](11-visualization-proportions/translations/README.hi.md) +1. [रिश्तों की कल्पना](12-visualization-relationships/translations/README.hi.md) +1. [सार्थक विज़ुअलाइज़ेशन बनाना](13-meaningful-visualizations/translations/README.hi.md) ### Credits From 6a4c5f01e308ae7fdfec3409225a509c6ad6c412 Mon Sep 17 00:00:00 2001 From: imsushant12 Date: Thu, 14 Oct 2021 00:44:05 +0530 Subject: [PATCH 084/254] Added hindi translation of all Vizualization base README --- .../translations/README.hi.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 3-Data-Visualization/09-visualization-quantities/translations/README.hi.md diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.hi.md b/3-Data-Visualization/09-visualization-quantities/translations/README.hi.md new file mode 100644 index 00000000..d0745bfc --- /dev/null +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.hi.md @@ -0,0 +1,204 @@ +# विज़ुअलाइज़िंग मात्रा + +|![ सकेटच्नोते करने वाला [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| विज़ुअलाइज़िंग मात्रा - _सकेटच्नोते करने वाला [@nitya](https://twitter.com/nitya)_ | + +इस पाठ में आप यह पता लगाएंगे कि मात्रा की अवधारणा के चारों ओर दिलचस्प विज़ुअलाइज़ेशन कैसे बनाएं, यह जानने के लिए कई उपलब्ध पायथन पुस्तकालयों में से एक का उपयोग कैसे करें। मिनेसोटा के पक्षियों के बारे में साफ किए गए डेटासेट का उपयोग करके, आप स्थानीय वन्यजीवों के बारे में कई रोचक तथ्य जान सकते हैं। +## [प्री-रीडिंग क्विज](https://red-water-0103e7a0f.azurestaticapps.net/quiz/16) + +## माटप्लोटलिब के साथ पंखों का निरीक्षण करें + +सरल और परिष्कृत दोनों प्रकार के प्लॉट और विभिन्न प्रकार के चार्ट बनाने के लिए एक उत्कृष्ट पुस्तकालय है [माटप्लोटलिब](https://matplotlib.org/stable/index.html)। सामान्य शब्दों में, इन पुस्तकालयों का उपयोग करके डेटा को प्लॉट करने की प्रक्रिया में आपके डेटाफ़्रेम के उन हिस्सों की पहचान करना शामिल है जिन्हें आप लक्षित करना चाहते हैं, उस डेटा पर कोई भी आवश्यक परिवर्तन करना, इसके x और y अक्ष मान निर्दिष्ट करना, यह तय करना कि किस प्रकार का प्लॉट दिखाना है, और फिर साजिश दिखा रहा है। माटप्लोटलिब विज़ुअलाइज़ेशन की एक विशाल विविधता प्रदान करता है, लेकिन इस पाठ के लिए, आइए उन पर ध्यान केंद्रित करें जो मात्रा को देखने के लिए सबसे उपयुक्त हैं: लाइन चार्ट, स्कैटरप्लॉट और बार प्लॉट। + +> ✅ अपने डेटा की संरचना और जो कहानी आप बताना चाहते हैं, उसके अनुरूप सर्वोत्तम चार्ट का उपयोग करें। +> - समय के साथ रुझानों का विश्लेषण करने के लिए: लाइन +> - मानों की तुलना करने के लिए: बार, कॉलम, पाई, स्कैटरप्लॉट +> - यह दिखाने के लिए कि भाग किस प्रकार संपूर्ण से संबंधित हैं: पाई +> - डेटा का वितरण दिखाने के लिए: स्कैटरप्लॉट, बार +> - रुझान दिखाने के लिए: लाइन, कॉलम +> - मानों के बीच संबंध दिखाने के लिए: लाइन, स्कैटरप्लॉट, बबल + +यदि आपके पास एक डेटासेट है और यह पता लगाने की आवश्यकता है कि किसी दिए गए आइटम में से कितना शामिल है, तो आपके पास सबसे पहले कार्यों में से एक इसके मूल्यों का निरीक्षण करना होगा। + +✅ माटप्लोटलिब के लिए बहुत अच्छी 'चीट शीट' उपलब्ध हैं [here](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) and [here](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). + +## बर्ड विंगस्पैन मूल्यों के बारे में एक लाइन प्लॉट बनाएं + +इस पाठ फ़ोल्डर के मूल में `नोटबुक.आईपीएनबी` फ़ाइल खोलें और एक सेल जोड़ें। + +> नोट: डेटा इस रेपो की जड़ में `/आंकड़े` फ़ोल्डर में संग्रहीत है। + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +यह डेटा टेक्स्ट और संख्याओं का मिश्रण है: + + +| | नाम | वैज्ञानिक नाम | श्रेणी | आदेश | परिवार | जाति | संरक्षण की स्थिति | न्यूनतम लंबाई | अधिकतम लंबाई | मिनबॉडीमास | मैक्सबॉडीमास | मिनविंगस्पैन | मैक्सविंगस्पैन | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | ब्लैक-बेल्ड सीटी-बतख | डेंड्रोसाइग्ना ऑटमलिस | बतख / गीज़ / जलपक्षी | अंसेरी फॉर्म्स | अनाटिडे | डेंड्रोसाइग्ना | एल सी | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | फुल्वस सीटी-बतख | डेंड्रोसाइग्ना बाइकलर | बतख / गीज़ / जलपक्षी | अंसेरी फॉर्म्स | अनाटिडे | डेंड्रोसाइग्ना | एल सी | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | हिम हंस | Anser caerulescens | बतख / गीज़ / जलपक्षी | अंसेरी फॉर्म्स | अनाटिडे | Anser | एल सी | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | रॉस हंस | Anser rossii | बतख / गीज़ / जलपक्षी | अंसेरी फॉर्म्स | अनाटिडे | Anser | एल सी | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | ग्रेटर व्हाइट-फ्रंटेड गूज | Anser albifrons | बतख / गीज़ / जलपक्षी | अंसेरी फॉर्म्स | अनाटिडे | Anser | एल सी | 64 | 81 | 1930 | 3310 | 130 | 165 | + +आइए बुनियादी लाइन प्लॉट का उपयोग करके कुछ संख्यात्मक डेटा को प्लॉट करके शुरू करें। मान लीजिए आप इन दिलचस्प पक्षियों के लिए अधिकतम पंखों का दृश्य चाहते हैं। + +```python +wingspan = birds['MaxWingspan'] +wingspan.plot() +``` +![मैक्स विंगस्पैन](images/max-wingspan.png) + +आप तुरंत क्या नोटिस करते हैं? ऐसा लगता है कि कम से कम एक बाहरी है - वह काफी पंख है! एक २३०० सेंटीमीटर पंखों का फैलाव २३ मीटर के बराबर होता है - क्या मिनेसोटा में पटरोडैक्टाइल घूम रहे हैं? आइए जांच करते हैं। + +जबकि आप उन आउटलेर्स को खोजने के लिए एक्सेल में एक त्वरित सॉर्ट कर सकते हैं, जो शायद टाइपो हैं, प्लॉट के भीतर से काम करके विज़ुअलाइज़ेशन प्रक्रिया जारी रखें। + +प्रश्न में किस प्रकार के पक्षी हैं, यह दिखाने के लिए x-अक्ष में लेबल जोड़ें: + +``` +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.xticks(rotation=45) +x = birds['Name'] +y = birds['MaxWingspan'] + +plt.plot(x, y) + +plt.show() +``` +![लेबल के साथ विंगस्पैन](images/max-wingspan-labels.png) + +यहां तक ​​कि लेबल के रोटेशन को 45 डिग्री पर सेट करने के बाद भी, पढ़ने के लिए बहुत कुछ है। आइए एक अलग रणनीति का प्रयास करें: केवल उन आउटलेर्स को लेबल करें और चार्ट के भीतर लेबल सेट करें। लेबलिंग के लिए अधिक जगह बनाने के लिए आप स्कैटर चार्ट का उपयोग कर सकते हैं: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) + +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + plt.plot(x, y, 'bo') + if birds['MaxWingspan'][i] > 500: + plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) + +plt.show() +``` +यहाँ क्या चल रहा है? आपने निचले लेबल को छिपाने के लिए `tick_params` का उपयोग किया और फिर अपने पक्षियों के डेटासेट पर एक लूप बनाया। 'बो' का उपयोग करके छोटे गोल नीले डॉट्स वाले चार्ट को प्लॉट करते हुए, आपने 500 से अधिक पंखों वाले किसी भी पक्षी की जाँच की और यदि ऐसा है तो डॉट के बगल में उनका लेबल प्रदर्शित किया। आप y अक्ष (`वाई * (1 - 0.05)`) पर लेबल को थोड़ा सा ऑफसेट करते हैं और एक लेबल के रूप में पक्षी के नाम का उपयोग करते हैं। + +आपने क्या खोजा? + +![बाहरी कारकों के कारण](images/labeled-wingspan.png) +## अपना डेटा फ़िल्टर करें + +बाल्ड ईगल और प्रेयरी फाल्कन दोनों, जबकि शायद बहुत बड़े पक्षी, गलत लेबल वाले प्रतीत होते हैं, उनके अधिकतम पंखों में अतिरिक्त `0` जोड़ा जाता है। यह संभावना नहीं है कि आप 25 मीटर पंखों वाले बाल्ड ईगल से मिलेंगे, लेकिन यदि ऐसा है, तो कृपया हमें बताएं! आइए उन दो आउटलेर्स के बिना एक नया डेटाफ़्रेम बनाएं: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: + plt.plot(x, y, 'bo') +plt.show() +``` + +आउटलेर्स को फ़िल्टर करके, आपका डेटा अब अधिक सुसंगत और समझने योग्य है। + +![पंखों का बिखराव](images/scatterplot-wingspan.png) + +अब जबकि हमारे पास कम से कम पंखों के मामले में एक क्लीनर डेटासेट है, तो आइए इन पक्षियों के बारे में और जानें। + +जबकि लाइन और स्कैटर प्लॉट डेटा मानों और उनके वितरण के बारे में जानकारी प्रदर्शित कर सकते हैं, हम इस डेटासेट में निहित मूल्यों के बारे में सोचना चाहते हैं। आप मात्रा के बारे में निम्नलिखित प्रश्नों के उत्तर देने के लिए विज़ुअलाइज़ेशन बना सकते हैं: + +> पक्षियों की कितनी श्रेणियां हैं और उनकी संख्या क्या है? +> कितने पक्षी विलुप्त, संकटग्रस्त, दुर्लभ या सामान्य हैं? +> लिनिअस की शब्दावली में विभिन्न जीनस और आदेश कितने हैं? +## बार चार्ट का अन्वेषण करें + +बार चार्ट व्यावहारिक होते हैं जब आपको डेटा के समूह दिखाने की आवश्यकता होती है। आइए इस डेटासेट में मौजूद पक्षियों की श्रेणियों का पता लगाएं, यह देखने के लिए कि संख्या के हिसाब से कौन सा सबसे आम है। + +नोटबुक फ़ाइल में, एक मूल बार चार्ट बनाएं + +✅ ध्यान दें, आप या तो पिछले अनुभाग में पहचाने गए दो बाहरी पक्षियों को फ़िल्टर कर सकते हैं, उनके पंखों में टाइपो को संपादित कर सकते हैं, या उन्हें इन अभ्यासों के लिए छोड़ सकते हैं जो पंखों के मूल्यों पर निर्भर नहीं करते हैं। + +यदि आप एक बार चार्ट बनाना चाहते हैं, तो आप उस डेटा का चयन कर सकते हैं जिस पर आप ध्यान केंद्रित करना चाहते हैं। कच्चे डेटा से बार चार्ट बनाए जा सकते हैं: + +```python +birds.plot(x='Category', + kind='bar', + stacked=True, + title='Birds of Minnesota') + +``` +![बार चार्ट के रूप में पूर्ण डेटा](images/full-data-bar.png) + +हालांकि, यह बार चार्ट अपठनीय है क्योंकि इसमें बहुत अधिक गैर-समूहीकृत डेटा है। आपको केवल उस डेटा का चयन करने की आवश्यकता है जिसे आप प्लॉट करना चाहते हैं, तो आइए उनकी श्रेणी के आधार पर पक्षियों की लंबाई देखें। + +केवल पक्षी की श्रेणी को शामिल करने के लिए अपना डेटा फ़िल्टर करें। + +✅ ध्यान दें कि आप डेटा को प्रबंधित करने के लिए पंडों का उपयोग करते हैं, और फिर माटप्लोटलिब को चार्टिंग करने दें। + +चूंकि कई श्रेणियां हैं, आप इस चार्ट को लंबवत रूप से प्रदर्शित कर सकते हैं और सभी डेटा के हिसाब से इसकी ऊंचाई को बदल सकते हैं: + +```python +category_count = birds.value_counts(birds['Category'].values, sort=True) +plt.rcParams['figure.figsize'] = [6, 12] +category_count.plot.barh() +``` +![श्रेणी और लंबाई](images/category-counts.png) + +यह बार चार्ट प्रत्येक श्रेणी में पक्षियों की संख्या का एक अच्छा दृश्य दिखाता है। पलक झपकते ही, आप देखते हैं कि इस क्षेत्र में पक्षियों की सबसे बड़ी संख्या बतख/गीज़/जलपक्षी श्रेणी में है। मिनेसोटा '10,000 झीलों की भूमि' है इसलिए यह आश्चर्य की बात नहीं है! + +✅ इस डेटासेट पर कुछ और मायने रखने की कोशिश करें। क्या आपको कुछ आश्चर्य होता है? + +## डेटा की तुलना करना + +आप नए अक्ष बनाकर समूहीकृत डेटा की विभिन्न तुलनाओं को आज़मा सकते हैं। किसी पक्षी की श्रेणी के आधार पर उसकी अधिकतम लंबाई की तुलना करने का प्रयास करें: + +```python +maxlength = birds['MaxLength'] +plt.barh(y=birds['Category'], width=maxlength) +plt.rcParams['figure.figsize'] = [6, 12] +plt.show() +``` +![डेटा की तुलना करना](images/category-length.png) + +यहां कुछ भी आश्चर्य की बात नहीं है: हमिंगबर्ड में पेलिकन या गीज़ की तुलना में कम से कम अधिकतम लंबाई होती है। यह अच्छा है जब डेटा तार्किक समझ में आता है! + +आप डेटा को सुपरइम्पोज़ करके बार चार्ट के अधिक दिलचस्प विज़ुअलाइज़ेशन बना सकते हैं। आइए किसी दी गई पक्षी श्रेणी पर न्यूनतम और अधिकतम लंबाई को सुपरइम्पोज़ करें: + +```python +minLength = birds['MinLength'] +maxLength = birds['MaxLength'] +category = birds['Category'] + +plt.barh(category, maxLength) +plt.barh(category, minLength) + +plt.show() +``` +इस प्लॉट में आप न्यूनतम लंबाई और अधिकतम लंबाई की प्रति पक्षी श्रेणी की सीमा देख सकते हैं। आप सुरक्षित रूप से कह सकते हैं कि, इस डेटा को देखते हुए, पक्षी जितना बड़ा होगा, उसकी लंबाई सीमा उतनी ही बड़ी होगी। चित्ताकर्षक! + +![superimposed values](images/superimposed.png) + +## 🚀 चुनौती + +यह पक्षी डेटासेट एक विशेष पारिस्थितिकी तंत्र के भीतर विभिन्न प्रकार के पक्षियों के बारे में जानकारी का खजाना प्रदान करता है। इंटरनेट के चारों ओर खोजें और देखें कि क्या आप अन्य पक्षी-उन्मुख डेटासेट पा सकते हैं। उन तथ्यों की खोज करने के लिए इन पक्षियों के चारों ओर चार्ट और ग्राफ़ बनाने का अभ्यास करें जिन्हें आपने महसूस नहीं किया है। +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/17) + +## समीक्षा और स्व अध्ययन + +इस पहले पाठ ने आपको मात्राओं की कल्पना करने के लिए Matplotlib का उपयोग करने के तरीके के बारे में कुछ जानकारी दी है। विज़ुअलाइज़ेशन के लिए डेटासेट के साथ काम करने के अन्य तरीकों के बारे में कुछ शोध करें। [प्लॉटली](https://github.com/plotly/plotly.py) प्वह है जिसे हम इन पाठों में शामिल नहीं करेंगे, इसलिए देखें कि यह क्या पेशकश कर सकता है। +## कार्यभार + +[लाइन्स, स्कैटर, और बार्स](assignment.md) From 378861982982ffff1f3c4731f75173fdbe530424 Mon Sep 17 00:00:00 2001 From: imsushant12 Date: Thu, 14 Oct 2021 00:44:31 +0530 Subject: [PATCH 085/254] Added hindi translation of all Vizualization base README --- .../translations/README.hi.md | 191 ++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 3-Data-Visualization/10-visualization-distributions/translations/README.hi.md diff --git a/3-Data-Visualization/10-visualization-distributions/translations/README.hi.md b/3-Data-Visualization/10-visualization-distributions/translations/README.hi.md new file mode 100644 index 00000000..161d4571 --- /dev/null +++ b/3-Data-Visualization/10-visualization-distributions/translations/README.hi.md @@ -0,0 +1,191 @@ +# विज़ुअलाइज़िंग वितरण + +|![ सकेटच्नोते करने वाला [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| विज़ुअलाइज़िंग वितरण - _सकेटच्नोते करने वाला [@nitya](https://twitter.com/nitya)_ | + +In the previous lesson, you learned some interesting facts about a dataset about the birds of Minnesota. You found some erroneous data by visualizing outliers and looked at the differences between bird categories by their maximum length. + +## [प्री-लेक्चर क्विज](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) +## पक्षियों के डेटासेट का अन्वेषण करें + +डेटा में खुदाई करने का दूसरा तरीका इसके वितरण को देखना है, या डेटा को एक अक्ष के साथ कैसे व्यवस्थित किया जाता है। शायद, उदाहरण के लिए, आप इस डेटासेट के सामान्य वितरण के बारे में जानना चाहेंगे, मिनेसोटा के पक्षियों के लिए अधिकतम पंख या अधिकतम शरीर द्रव्यमान। + +आइए इस डेटासेट में डेटा के वितरण के बारे में कुछ तथ्यों की खोज करें। इस पाठ फ़ोल्डर के मूल में _नोटबुक.आईपीएनबी_ फ़ाइल में, पांडा, मैटप्लोटलिब और अपना डेटा आयात करें: + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` + +सामान्य तौर पर, आप देख सकते हैं कि स्कैटर प्लॉट का उपयोग करके डेटा कैसे वितरित किया जाता है, जैसा कि हमने पिछले पाठ में किया था: + +```python +birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8)) + +plt.title('Max Length per Order') +plt.ylabel('Order') +plt.xlabel('Max Length') + +plt.show() +``` +यह प्रति पक्षी क्रम में शरीर की लंबाई के सामान्य वितरण का एक सिंहावलोकन देता है, लेकिन यह सही वितरण प्रदर्शित करने का सबसे अच्छा तरीका नहीं है। उस कार्य को आमतौर पर हिस्टोग्राम बनाकर नियंत्रित किया जाता है। +## हिस्टोग्राम के साथ काम करना + +माटप्लोटलिब हिस्टोग्राम का उपयोग करके डेटा वितरण की कल्पना करने के लिए बहुत अच्छे तरीके प्रदान करता है। इस प्रकार का चार्ट एक बार चार्ट की तरह होता है जहां वितरण को बार के ऊपर और नीचे के माध्यम से देखा जा सकता है। हिस्टोग्राम बनाने के लिए, आपको संख्यात्मक डेटा की आवश्यकता होती है। हिस्टोग्राम बनाने के लिए, आप हिस्टोग्राम के लिए 'इतिहास' के रूप में परिभाषित एक चार्ट तैयार कर सकते हैं। यह चार्ट संख्यात्मक डेटा की संपूर्ण डेटासेट की श्रेणी के लिए MaxBodyMass के वितरण को दर्शाता है। डेटा की सरणी को विभाजित करके इसे छोटे डिब्बे में दिया जाता है, यह डेटा के मूल्यों के वितरण को प्रदर्शित कर सकता है: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) +plt.show() +``` +![संपूर्ण डेटासेट पर वितरण](images/dist1.png) + +जैसा कि आप देख सकते हैं, इस डेटासेट में 400+ पक्षी अपने मैक्स बॉडी मास के लिए 2000 से कम की सीमा में आते हैं। `बिन्स` पैरामीटर को अधिक संख्या में बदलकर डेटा में अधिक जानकारी प्राप्त करें, जैसे कुछ 30: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) +plt.show() +``` +![बड़े डिब्बे परम के साथ संपूर्ण डेटासेट पर वितरण](images/dist2.png) + +यह चार्ट वितरण को कुछ अधिक बारीक तरीके से दिखाता है। यह सुनिश्चित करके कि आप केवल एक दी गई सीमा के भीतर डेटा का चयन करते हैं, बाईं ओर कम तिरछा एक चार्ट बनाया जा सकता है: + +केवल उन पक्षियों को प्राप्त करने के लिए अपना डेटा फ़िल्टर करें जिनके शरीर का द्रव्यमान 60 से कम है, और 40 `डिब्बे` दिखाएं: + +```python +filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] +filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) +plt.show() +``` +![फ़िल्टर्ड हिस्टोग्राम](images/dist3.png) + +✅ कुछ अन्य फ़िल्टर और डेटा बिंदु आज़माएं। डेटा का पूरा वितरण देखने के लिए, लेबल किए गए वितरण दिखाने के लिए `['मैक्सबॉडीमास']` फ़िल्टर को हटा दें। + +हिस्टोग्राम भी कोशिश करने के लिए कुछ अच्छे रंग और लेबलिंग संवर्द्धन प्रदान करता है: + +दो वितरणों के बीच संबंध की तुलना करने के लिए एक 2डी हिस्टोग्राम बनाएं। आइए `मैक्सबॉडीमास` बनाम `अधिकतम लंबाई` की तुलना करें। माटप्लोटलिब चमकीले रंगों का उपयोग करके अभिसरण दिखाने के लिए एक अंतर्निहित तरीका प्रदान करता है: + +```python +x = filteredBirds['MaxBodyMass'] +y = filteredBirds['MaxLength'] + +fig, ax = plt.subplots(tight_layout=True) +hist = ax.hist2d(x, y) +``` +एक विशेष रूप से मजबूत अभिसरण बिंदु के साथ, एक अपेक्षित अक्ष के साथ इन दो तत्वों के बीच एक अपेक्षित सहसंबंध प्रतीत होता है: + +![2डी प्लॉट](images/2D.png) + +संख्यात्मक डेटा के लिए हिस्टोग्राम डिफ़ॉल्ट रूप से अच्छी तरह से काम करते हैं। क्या होगा यदि आपको टेक्स्ट डेटा के अनुसार वितरण देखने की आवश्यकता है? +## टेक्स्ट डेटा का उपयोग करके वितरण के लिए डेटासेट का अन्वेषण करें + +इस डेटासेट में पक्षी श्रेणी और उसके जीनस, प्रजातियों और परिवार के साथ-साथ इसके संरक्षण की स्थिति के बारे में अच्छी जानकारी भी शामिल है। आइए इस संरक्षण जानकारी में खुदाई करें। पक्षियों का वितरण उनकी संरक्षण स्थिति के अनुसार क्या है? + +> ✅ डेटासेट में, संरक्षण की स्थिति का वर्णन करने के लिए कई समरूपों का उपयोग किया जाता है। ये एक्रोनिम्स [IUCN रेड लिस्ट कैटेगरी](https://www.iucnredlist.org/) से आते हैं, जो एक संगठन है जो प्रजातियों की स्थिति को सूचीबद्ध करता है। +> +> - सीआर: गंभीर रूप से संकटग्रस्त +> - एन: लुप्तप्राय +> - पूर्व: विलुप्त +> - एलसी: कम से कम चिंता +> - एनटी: खतरे के पास +> - वीयू: कमजोर + +ये टेक्स्ट-आधारित मान हैं इसलिए आपको हिस्टोग्राम बनाने के लिए एक ट्रांसफ़ॉर्म करना होगा। फ़िल्टर्ड बर्ड्स डेटाफ़्रेम का उपयोग करते हुए, इसके न्यूनतम विंगस्पैन के साथ-साथ इसकी संरक्षण स्थिति प्रदर्शित करें। क्या देखती है? + +```python +x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] +x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan'] +x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan'] +x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan'] +x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan'] +x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan'] + +kwargs = dict(alpha=0.5, bins=20) + +plt.hist(x1, **kwargs, color='red', label='Extinct') +plt.hist(x2, **kwargs, color='orange', label='Critically Endangered') +plt.hist(x3, **kwargs, color='yellow', label='Endangered') +plt.hist(x4, **kwargs, color='green', label='Near Threatened') +plt.hist(x5, **kwargs, color='blue', label='Vulnerable') +plt.hist(x6, **kwargs, color='gray', label='Least Concern') + +plt.gca().set(title='Conservation Status', ylabel='Max Body Mass') +plt.legend(); +``` + +![विंगस्पैन और संरक्षण संयोजन](images/histogram-conservation.png) + +न्यूनतम पंखों की अवधि और संरक्षण की स्थिति के बीच कोई अच्छा संबंध प्रतीत नहीं होता है। इस पद्धति का उपयोग करके डेटासेट के अन्य तत्वों का परीक्षण करें। आप अलग-अलग फ़िल्टर भी आज़मा सकते हैं। क्या आप कोई सहसंबंध पाते हैं? +## घनत्व भूखंड + +आपने देखा होगा कि अब तक हमने जिन आयतचित्रों को देखा है वे 'चरणबद्ध' हैं और एक चाप में सुचारू रूप से प्रवाहित नहीं होते हैं। एक आसान घनत्व चार्ट दिखाने के लिए, आप एक घनत्व प्लॉट आज़मा सकते हैं। + +घनत्व वाले भूखंडों के साथ काम करने के लिए, अपने आप को एक नई प्लॉटिंग लाइब्रेरी से परिचित कराएं, [सीबॉर्न](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). + +सीबॉर्न लोड हो रहा है, एक बुनियादी घनत्व प्लॉट आज़माएं: + +```python +import seaborn as sns +import matplotlib.pyplot as plt +sns.kdeplot(filteredBirds['MinWingspan']) +plt.show() +``` +![घनत्व प्लॉट](images/density1.png) + +आप देख सकते हैं कि न्यूनतम विंगस्पैन डेटा के लिए प्लॉट पिछले वाले को कैसे गूँजता है; यह थोड़ा चिकना है। सीबॉर्न के दस्तावेज़ीकरण के अनुसार, "हिस्टोग्राम के सापेक्ष, केडीई एक ऐसे प्लॉट का निर्माण कर सकता है जो कम अव्यवस्थित और अधिक व्याख्या योग्य हो, विशेष रूप से कई वितरणों को चित्रित करते समय। लेकिन इसमें विकृतियों को पेश करने की क्षमता होती है यदि अंतर्निहित वितरण बाध्य है या सुचारू नहीं है। जैसे हिस्टोग्राम, प्रतिनिधित्व की गुणवत्ता भी अच्छे चौरसाई मापदंडों के चयन पर निर्भर करती है।" [स्रोत](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) दूसरे शब्दों में, आउटलेयर हमेशा की तरह आपके चार्ट को खराब व्यवहार करेंगे। + +यदि आप अपने द्वारा बनाए गए दूसरे चार्ट में उस दांतेदार मैक्सबॉडीमास लाइन को फिर से देखना चाहते हैं, तो आप इस पद्धति का उपयोग करके इसे फिर से बनाकर इसे बहुत अच्छी तरह से सुचारू कर सकते हैं: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass']) +plt.show() +``` +![चिकनी बॉडीमास लाइन](images/density2.png) + +यदि आप एक चिकनी, लेकिन बहुत चिकनी रेखा नहीं चाहते हैं, तो `bw_adjust` पैरामीटर संपादित करें: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) +plt.show() +``` +![कम चिकनी बॉडीमास लाइन](images/density3.png) + +✅ इस प्रकार के प्लॉट और प्रयोग के लिए उपलब्ध मापदंडों के बारे में पढ़ें! + +इस प्रकार का चार्ट खूबसूरती से व्याख्यात्मक दृश्य प्रस्तुत करता है। कोड की कुछ पंक्तियों के साथ, उदाहरण के लिए, आप प्रति पक्षी अधिकतम शरीर द्रव्यमान घनत्व दिखा सकते हैं: + +```python +sns.kdeplot( + data=filteredBirds, x="MaxBodyMass", hue="Order", + fill=True, common_norm=False, palette="crest", + alpha=.5, linewidth=0, +) +``` + +![प्रति आदेश बॉडीमास](images/density4.png) + +आप एक चार्ट में कई चरों के घनत्व को भी मैप कर सकते हैं। किसी पक्षी की संरक्षण स्थिति की तुलना में उसकी अधिकतम लंबाई और न्यूनतम लंबाई को टेक्स्ट करें: + +```python +sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") +``` + +![एकाधिक घनत्व, आरोपित](images/multi.png) + +शायद यह शोध करने लायक है कि 'कमजोर' पक्षियों का समूह उनकी लंबाई के अनुसार सार्थक है या नहीं। + +## 🚀 चुनौती + +हिस्टोग्राम बुनियादी स्कैटरप्लॉट, बार चार्ट या लाइन चार्ट की तुलना में अधिक परिष्कृत प्रकार के चार्ट हैं। हिस्टोग्राम के उपयोग के अच्छे उदाहरण खोजने के लिए इंटरनेट पर खोज करें। उनका उपयोग कैसे किया जाता है, वे क्या प्रदर्शित करते हैं, और किन क्षेत्रों या पूछताछ के क्षेत्रों में उनका उपयोग किया जाता है? + +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/19) + +## समीक्षा और स्व अध्ययन + +इस पाठ में, आपने Matplotlib का उपयोग किया और अधिक परिष्कृत चार्ट दिखाने के लिए Seaborn के साथ काम करना शुरू किया। सीबॉर्न में `केडीप्लॉट` पर कुछ शोध करें, "एक या अधिक आयामों में निरंतर संभाव्यता घनत्व वक्र"। यह कैसे काम करता है, यह समझने के लिए [दस्तावेज](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) पढ़ें। + +## कार्यभार + +[अपने कौशल को लागू करें](assignment.md) From a129071451117ec9340182895d0074ebfdd7e329 Mon Sep 17 00:00:00 2001 From: imsushant12 Date: Thu, 14 Oct 2021 00:44:50 +0530 Subject: [PATCH 086/254] Added hindi translation of all Vizualization base README --- .../translations/README.hi.md | 184 ++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 3-Data-Visualization/11-visualization-proportions/translations/README.hi.md diff --git a/3-Data-Visualization/11-visualization-proportions/translations/README.hi.md b/3-Data-Visualization/11-visualization-proportions/translations/README.hi.md new file mode 100644 index 00000000..53e1b342 --- /dev/null +++ b/3-Data-Visualization/11-visualization-proportions/translations/README.hi.md @@ -0,0 +1,184 @@ +# विज़ुअलाइज़िंग अनुपात + +|![ सकेटच्नोते करने वाला [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|विज़ुअलाइज़िंग अनुपात - _सकेटच्नोते करने वाला [@nitya](https://twitter.com/nitya)_ | + +इस पाठ में, आप अनुपात की कल्पना करने के लिए एक अलग प्रकृति-केंद्रित डेटासेट का उपयोग करेंगे, जैसे कि मशरूम के बारे में दिए गए डेटासेट में कितने अलग-अलग प्रकार के कवक आते हैं। आइए ऑडबोन सूची से प्राप्त डेटासेट का उपयोग करके इन आकर्षक कवक का पता लगाएं, एग्रिकस और लेपियोटा परिवारों में ग्रील्ड मशरूम की 23 प्रजातियों के बारे में विवरण। आप स्वादिष्ट विज़ुअलाइज़ेशन के साथ प्रयोग करेंगे जैसे: + +- पाई चार्ट 🥧 +- डोनट चार्ट 🍩 +- वफ़ल चार्ट 🧇 + + +> 💡 माइक्रोसॉफ्ट अनुसंधान द्वारा [चार्टिकुलेटर](https://charticulator.com) नामक एक बहुत ही रोचक परियोजना डेटा विज़ुअलाइज़ेशन के लिए एक निःशुल्क ड्रैग एंड ड्रॉप इंटरफ़ेस प्रदान करती है। अपने एक ट्यूटोरियल में वे इस मशरूम डेटासेट का भी उपयोग करते हैं! तो आप एक ही समय में डेटा का पता लगा सकते हैं और पुस्तकालय सीख सकते हैं: [चार्टिकुलेटर ट्यूटोरियल](https://charticulator.com/tutorials/tutorial4.html)। + +## [प्री-लेक्चर क्विज](https://red-water-0103e7a0f.azurestaticapps.net/quiz/20) + +## अपने मशरूम को जानें 🍄 + +मशरूम बहुत दिलचस्प हैं। आइए उनका अध्ययन करने के लिए एक डेटासेट आयात करें: + +```python +import pandas as pd +import matplotlib.pyplot as plt +mushrooms = pd.read_csv('../../data/mushrooms.csv') +mushrooms.head() +``` +विश्लेषण के लिए कुछ महान डेटा के साथ एक तालिका मुद्रित की जाती है: + + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Poisonous | Convex | Smooth | Brown | Bruises | Pungent | Free | Close | Narrow | Black | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | +| Edible | Convex | Smooth | Yellow | Bruises | Almond | Free | Close | Broad | Black | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Grasses | +| Edible | Bell | Smooth | White | Bruises | Anise | Free | Close | Broad | Brown | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Meadows | +| Poisonous | Convex | Scaly | White | Bruises | Pungent | Free | Close | Narrow | Brown | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | + +तुरंत, आप देखते हैं कि सभी डेटा टेक्स्टुअल है। चार्ट में इसका उपयोग करने में सक्षम होने के लिए आपको इस डेटा को परिवर्तित करना होगा। अधिकांश डेटा, वास्तव में, एक वस्तु के रूप में दर्शाया जाता है: + +```python +print(mushrooms.select_dtypes(["object"]).columns) +``` + +आउटपुट है: + +```output +Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', + 'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color', + 'stalk-shape', 'stalk-root', 'stalk-surface-above-ring', + 'stalk-surface-below-ring', 'stalk-color-above-ring', + 'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number', + 'ring-type', 'spore-print-color', 'population', 'habitat'], + dtype='object') +``` +यह डेटा लें और 'वर्ग' कॉलम को एक श्रेणी में बदलें: + +```python +cols = mushrooms.select_dtypes(["object"]).columns +mushrooms[cols] = mushrooms[cols].astype('category') +``` +अब, यदि आप मशरूम डेटा का प्रिंट आउट लेते हैं, तो आप देख सकते हैं कि इसे जहरीले/खाद्य वर्ग के अनुसार श्रेणियों में बांटा गया है: + + +| | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | ... | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ---- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| class | | | | | | | | | | | | | | | | | | | | | | +| Edible | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | +| Poisonous | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | + +यदि आप अपने वर्ग श्रेणी लेबल बनाने के लिए इस तालिका में प्रस्तुत क्रम का पालन करते हैं, तो आप एक पाई चार्ट बना सकते हैं: + +## Pie! + +```python +labels=['Edible','Poisonous'] +plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%') +plt.title('Edible?') +plt.show() +``` +वोइला, मशरूम के इन दो वर्गों के अनुसार इस डेटा के अनुपात को दर्शाने वाला एक पाई चार्ट। लेबल के क्रम को सही करना बहुत महत्वपूर्ण है, विशेष रूप से यहां, इसलिए उस क्रम को सत्यापित करना सुनिश्चित करें जिसके साथ लेबल सरणी बनाई गई है! + +![पाई चार्ट](images/pie1.png) + +## डोनट्स! + +कुछ अधिक नेत्रहीन दिलचस्प पाई चार्ट एक डोनट चार्ट है, जो बीच में एक छेद के साथ एक पाई चार्ट है। आइए इस पद्धति का उपयोग करके हमारे डेटा को देखें। + +विभिन्न आवासों पर एक नज़र डालें जहाँ मशरूम उगते हैं: + +```python +habitat=mushrooms.groupby(['habitat']).count() +habitat +``` +यहां, आप अपने डेटा को आवास के आधार पर समूहित कर रहे हैं। 7 सूचीबद्ध हैं, इसलिए उन्हें अपने डोनट चार्ट के लिए लेबल के रूप में उपयोग करें: + +```python +labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood'] + +plt.pie(habitat['class'], labels=labels, + autopct='%1.1f%%', pctdistance=0.85) + +center_circle = plt.Circle((0, 0), 0.40, fc='white') +fig = plt.gcf() + +fig.gca().add_artist(center_circle) + +plt.title('Mushroom Habitats') + +plt.show() +``` + +![डोनट चार्ट](images/donut.png) + +यह कोड एक चार्ट और एक केंद्र वृत्त बनाता है, फिर उस केंद्र वृत्त को चार्ट में जोड़ता है। `0.40` को दूसरे मान में बदलकर केंद्र वृत्त की चौड़ाई संपादित करें। + +डोनट चार्ट को लेबल बदलने के लिए कई तरह से ट्वीक किया जा सकता है। विशेष रूप से लेबल को पठनीयता के लिए हाइलाइट किया जा सकता है। [दस्तावेज़] (https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut) में और जानें। + +अब जबकि आप जानते हैं कि अपने डेटा को कैसे समूहबद्ध करना है और फिर उसे पाई या डोनट के रूप में प्रदर्शित करना है, तो आप अन्य प्रकार के चार्टों को एक्सप्लोर कर सकते हैं। एक वफ़ल चार्ट आज़माएं, जो मात्रा की खोज का एक अलग तरीका है। +## Waffles! + +एक 'वफ़ल' प्रकार का चार्ट मात्राओं को वर्गों के 2डी सरणी के रूप में देखने का एक अलग तरीका है। इस डेटासेट में मशरूम कैप रंगों की विभिन्न मात्राओं को देखने का प्रयास करें। ऐसा करने के लिए, आपको [PyWaffle](https://pypi.org/project/pywaffle/) नामक एक सहायक पुस्तकालय स्थापित करने और Matplotlib का उपयोग करने की आवश्यकता है: + +```python +pip install pywaffle +``` + +समूह के लिए अपने डेटा का एक खंड चुनें: + +```python +capcolor=mushrooms.groupby(['cap-color']).count() +capcolor +``` + +लेबल बनाकर और फिर अपने डेटा को समूहीकृत करके एक वफ़ल चार्ट बनाएं: + +```python +import pandas as pd +import matplotlib.pyplot as plt +from pywaffle import Waffle + +data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'], + 'amount': capcolor['class'] + } + +df = pd.DataFrame(data) + +fig = plt.figure( + FigureClass = Waffle, + rows = 100, + values = df.amount, + labels = list(df.color), + figsize = (30,30), + colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"], +) +``` + +वफ़ल चार्ट का उपयोग करके, आप स्पष्ट रूप से इस मशरूम डेटासेट के कैप रंगों के अनुपात को देख सकते हैं। दिलचस्प बात यह है कि कई हरे-छिपे हुए मशरूम हैं! + +![वफ़ल चार्ट](images/waffle.png) + +✅ Pywaffle उन चार्ट के भीतर आइकन का समर्थन करता है जो [Font Awesome](https://fontawesome.com/) में उपलब्ध किसी भी आइकन का उपयोग करते हैं। वर्गों के बजाय आइकन का उपयोग करके और भी अधिक रोचक वफ़ल चार्ट बनाने के लिए कुछ प्रयोग करें। + +इस पाठ में, आपने अनुपातों की कल्पना करने के तीन तरीके सीखे। सबसे पहले, आपको अपने डेटा को श्रेणियों में समूहित करना होगा और फिर यह तय करना होगा कि डेटा प्रदर्शित करने का सबसे अच्छा तरीका कौन सा है - पाई, डोनट, या वफ़ल। सभी स्वादिष्ट हैं और डेटासेट के तत्काल स्नैपशॉट के साथ उपयोगकर्ता को संतुष्ट करते हैं। +## 🚀 चुनौती + +इन स्वादिष्ट चार्ट को फिर से बनाने का प्रयास करें [चार्टिकुलेटर](https://charticulator.com). +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/21) + +## समीक्षा और आत्म अध्ययन + +कभी-कभी यह स्पष्ट नहीं होता कि पाई, डोनट, या वफ़ल चार्ट का उपयोग कब करना है। इस विषय पर पढ़ने के लिए यहां कुछ लेख दिए गए हैं: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +इस चिपचिपे निर्णय के बारे में अधिक जानकारी प्राप्त करने के लिए कुछ शोध करें। +## कार्यभार + +[इसे एक्सेल में आज़माएं](assignment.md) From 7c2ca6e3c77c7a8d989dc080b6b8b87210c1f87e Mon Sep 17 00:00:00 2001 From: imsushant12 Date: Thu, 14 Oct 2021 00:45:13 +0530 Subject: [PATCH 087/254] Added hindi translation of all Vizualization base README --- .../translations/README.hi.md | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 3-Data-Visualization/12-visualization-relationships/translations/README.hi.md diff --git a/3-Data-Visualization/12-visualization-relationships/translations/README.hi.md b/3-Data-Visualization/12-visualization-relationships/translations/README.hi.md new file mode 100644 index 00000000..247d580d --- /dev/null +++ b/3-Data-Visualization/12-visualization-relationships/translations/README.hi.md @@ -0,0 +1,173 @@ +# रिश्तों की कल्पना: शहद के बारे में सब कुछ + +|![ सकेटच्नोते करने वाला [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|रिश्तों की कल्पना - _सकेटच्नोते करने वाला [@nitya](https://twitter.com/nitya)_ | + +[यूनाइटेड स्टेट्स डिपार्टमेंट ऑफ़ एग्रीकल्चर](https://www.nass.usda.gov/) से प्राप्त एक डेटासेट के अनुसार, अपने शोध के प्रकृति फ़ोकस को जारी रखते हुए, आइए विभिन्न प्रकार के शहद के बीच संबंधों को दिखाने के लिए दिलचस्प विज़ुअलाइज़ेशन खोजें। लगभग_NASS/index.php)। + +लगभग ६०० वस्तुओं का यह डेटासेट कई यू.एस. राज्यों में शहद उत्पादन को प्रदर्शित करता है। इसलिए, उदाहरण के लिए, आप प्रत्येक राज्य के लिए प्रति वर्ष एक पंक्ति के साथ, 1998-2012 से किसी दिए गए राज्य में उत्पादित कॉलोनियों की संख्या, प्रति कॉलोनी उपज, कुल उत्पादन, स्टॉक, मूल्य प्रति पाउंड और शहद का मूल्य देख सकते हैं। . + +किसी दिए गए राज्य के प्रति वर्ष उत्पादन और, उदाहरण के लिए, उस राज्य में शहद की कीमत के बीच संबंधों की कल्पना करना दिलचस्प होगा। वैकल्पिक रूप से, आप प्रति कॉलोनी राज्यों की शहद उपज के बीच संबंधों की कल्पना कर सकते हैं। इस वर्ष की अवधि में विनाशकारी 'सीसीडी' या 'कॉलोनी पतन विकार' शामिल है जिसे पहली बार 2006 में देखा गया था (http://npic.orst.edu/envir/ccd.html), इसलिए यह अध्ययन करने के लिए एक मार्मिक डेटासेट है।🐝 + +## [व्याख्यान पूर्व प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/22) + +इस पाठ में, आप सीबॉर्न का उपयोग कर सकते हैं, जिसका उपयोग आपने पहले किया है, चरों के बीच संबंधों की कल्पना करने के लिए एक अच्छे पुस्तकालय के रूप में। सीबॉर्न के `रिलप्लॉट` फ़ंक्शन का उपयोग विशेष रूप से दिलचस्प है जो स्कैटर प्लॉट्स और लाइन प्लॉट्स को जल्दी से '[सांख्यिकीय संबंध](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)' की कल्पना करने की अनुमति देता है, जो डेटा वैज्ञानिक को बेहतर ढंग से समझने की अनुमति दें कि चर एक दूसरे से कैसे संबंधित हैं। + +## तितर बितर भूखंडों + +यह दिखाने के लिए स्कैटरप्लॉट का उपयोग करें कि प्रति राज्य शहद की कीमत साल दर साल कैसे विकसित हुई है। सीबॉर्न, `रिलप्लॉट` का उपयोग करते हुए, राज्य डेटा को आसानी से समूहित करता है और श्रेणीबद्ध और संख्यात्मक डेटा दोनों के लिए डेटा बिंदु प्रदर्शित करता है। + +आइए डेटा और सीबोर्न आयात करके शुरू करें: + +```python +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +honey = pd.read_csv('../../data/honey.csv') +honey.head() +``` +आपने देखा कि शहद के आंकड़ों में कई दिलचस्प कॉलम हैं, जिनमें साल और कीमत प्रति पाउंड शामिल हैं। आइए इस डेटा को यू.एस. राज्य द्वारा समूहीकृत करें: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | + + +प्रति पाउंड शहद की कीमत और इसकी यू.एस. मूल स्थिति के बीच संबंध दिखाने के लिए एक बुनियादी स्कैटरप्लॉट बनाएं। सभी राज्यों को प्रदर्शित करने के लिए `y` अक्ष को पर्याप्त लंबा बनाएं: + +```python +sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5); +``` +![scatterplot 1](images/scatter1.png) + +अब, शहद रंग योजना के साथ समान डेटा दिखाएं ताकि यह दिखाया जा सके कि मूल्य वर्षों में कैसे विकसित होता है। साल दर साल बदलाव दिखाने के लिए आप 'ह्यू' पैरामीटर जोड़कर ऐसा कर सकते हैं: + +> ✅ [सीबॉर्न में आपके द्वारा उपयोग किए जा सकने वाले रंग पैलेट](https://seaborn.pydata.org/tutorial/color_palettes.html) के बारे में अधिक जानें - एक सुंदर इंद्रधनुष रंग योजना आज़माएं! + +```python +sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5); +``` +![स्कैटरप्लॉट 2](images/scatter2.png) + +इस रंग योजना में बदलाव के साथ, आप देख सकते हैं कि शहद की कीमत प्रति पाउंड के मामले में पिछले कुछ वर्षों में स्पष्ट रूप से एक मजबूत प्रगति हुई है। वास्तव में, यदि आप सत्यापित करने के लिए डेटा में सेट किए गए नमूने को देखते हैं (उदाहरण के लिए किसी दिए गए राज्य, एरिज़ोना को चुनें) तो आप कुछ अपवादों के साथ, साल दर साल मूल्य वृद्धि का एक पैटर्न देख सकते हैं: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + + +इस प्रगति की कल्पना करने का दूसरा तरीका रंग के बजाय आकार का उपयोग करना है। कलरब्लाइंड यूजर्स के लिए यह एक बेहतर विकल्प हो सकता है। डॉट परिधि में वृद्धि करके मूल्य में वृद्धि दिखाने के लिए अपना विज़ुअलाइज़ेशन संपादित करें: + +```python +sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5); +``` +आप डॉट्स के आकार को धीरे-धीरे बढ़ते हुए देख सकते हैं। + +![स्कैटरप्लॉट 3](images/scatter3.png) + +क्या यह आपूर्ति और मांग का एक साधारण मामला है? जलवायु परिवर्तन और कॉलोनी के ढहने जैसे कारकों के कारण, क्या साल दर साल खरीद के लिए कम शहद उपलब्ध है, और इस तरह कीमत बढ़ जाती है? + +इस डेटासेट में कुछ चरों के बीच संबंध खोजने के लिए, आइए कुछ लाइन चार्ट देखें। + +## लाइन चार्ट + +प्रश्‍न : क्‍या शहद की कीमत में प्रति पौंड वर्ष दर वर्ष स्पष्ट वृद्धि हुई है? सिंगल लाइन चार्ट बनाकर आप इसे आसानी से खोज सकते हैं: + +```python +sns.relplot(x="year", y="priceperlb", kind="line", data=honey); +``` +Aउत्तर: हाँ, वर्ष २००३ के आसपास कुछ अपवादों को छोड़कर: + +![लाइन चार्ट 1](इमेज/लाइन1.पीएनजी) + +क्योंकि सीबॉर्न एक पंक्ति के आसपास डेटा एकत्र कर रहा है, यह "माध्य की साजिश रचकर प्रत्येक x मान पर कई माप और माध्य के आसपास 95% विश्वास अंतराल" प्रदर्शित करता है। [स्रोत](https://seaborn.pydata.org/tutorial/relational.html)। इस समय लेने वाले व्यवहार को `ci=none` जोड़कर अक्षम किया जा सकता है। + +प्रश्न: क्या २००३ में हम शहद की आपूर्ति में भी वृद्धि देख सकते हैं? अगर आप साल दर साल कुल उत्पादन को देखें तो क्या होगा? + +```python +sns.relplot(x="year", y="totalprod", kind="line", data=honey); +``` + +![लाइन चार्ट 2](इमेज/लाइन2.पीएनजी) + +उत्तर: वास्तव में नहीं। यदि आप कुल उत्पादन को देखें, तो वास्तव में उस विशेष वर्ष में वृद्धि हुई प्रतीत होती है, भले ही आम तौर पर इन वर्षों के दौरान उत्पादित होने वाले शहद की मात्रा में गिरावट आई हो। + +प्रश्न: उस मामले में, 2003 के आसपास शहद की कीमत में उस उछाल का क्या कारण हो सकता है? + +इसे खोजने के लिए, आप एक पहलू ग्रिड का पता लगा सकते हैं। + +## पहलू ग्रिड + +फ़ैसिट ग्रिड आपके डेटासेट का एक पहलू लेते हैं (हमारे मामले में, आप 'वर्ष' चुन सकते हैं ताकि बहुत अधिक फ़ैसिट उत्पन्न न हों)। सीबॉर्न तब आपके चुने हुए x और y निर्देशांकों में से प्रत्येक के लिए अधिक आसान दृश्य तुलना के लिए एक प्लॉट बना सकता है। क्या 2003 इस प्रकार की तुलना में अलग है? + +[सीबॉर्न का दस्तावेज़ीकरण](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid) द्वारा सुझाए गए अनुसार `relplot` का उपयोग जारी रखते हुए एक पहलू ग्रिड बनाएं। +```python +sns.relplot( + data=honey, + x="yieldpercol", y="numcol", + col="year", + col_wrap=3, + kind="line" +``` +इस विज़ुअलाइज़ेशन में, आप प्रति कॉलोनी उपज और साल दर साल कॉलोनियों की संख्या की तुलना कॉलम के लिए 3 पर सेट रैप के साथ कर सकते हैं: + +![पहलू ग्रिड](छवियां/पहलू.पीएनजी) + +इस डेटासेट के लिए, विशेष रूप से कॉलोनियों की संख्या और उनकी उपज, साल दर साल और राज्य दर राज्य के संबंध में कुछ भी नहीं है। क्या इन दो चरों के बीच संबंध खोजने का कोई अलग तरीका है? + +## ड्यूल-लाइन प्लॉट्स + +एक दूसरे के ऊपर दो लाइनप्लॉट्स को सुपरइम्पोज़ करके, सीबॉर्न की 'डेस्पाइन' का उपयोग करके उनके शीर्ष और दाएं स्पाइन को हटाने के लिए, और उपयोग करके एक मल्टीलाइन प्लॉट आज़माएं`ax.twinx` [Matplotlib . से व्युत्पन्न](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx चार्ट को x अक्ष साझा करने और दो y अक्ष प्रदर्शित करने की अनुमति देता है। तो, प्रति कॉलोनी उपज और कॉलोनियों की संख्या प्रदर्शित करें, जो आरोपित हैं: + +```python +fig, ax = plt.subplots(figsize=(12,6)) +lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, + label = 'Number of bee colonies', legend=False) +sns.despine() +plt.ylabel('# colonies') +plt.title('Honey Production Year over Year'); + +ax2 = ax.twinx() +lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", + label ='Yield per colony', legend=False) +sns.despine(right=False) +plt.ylabel('colony yield') +ax.figure.legend(); +``` +![सुपरइम्पोज्ड प्लॉट्स](images/dual-line.png) + +हालांकि वर्ष 2003 के आस-पास कुछ भी सामने नहीं आया, यह हमें इस पाठ को एक छोटे से सुखद नोट पर समाप्त करने की अनुमति देता है: जबकि कुल मिलाकर कॉलोनियों की संख्या घट रही है, कॉलोनियों की संख्या स्थिर हो रही है, भले ही प्रति कॉलोनी उनकी उपज घट रही हो . + +जाओ, मधुमक्खियों, जाओ! + +❤️ +## चुनौती + +इस पाठ में, आपने फैसेट ग्रिड सहित स्कैटरप्लॉट और लाइन ग्रिड के अन्य उपयोगों के बारे में कुछ और सीखा। किसी भिन्न डेटासेट का उपयोग करके फ़ैसिट ग्रिड बनाने के लिए स्वयं को चुनौती दें, शायद एक जिसे आपने इन पाठों से पहले उपयोग किया था। ध्यान दें कि उन्हें बनाने में कितना समय लगता है और इन तकनीकों का उपयोग करके आपको कितने ग्रिड बनाने की आवश्यकता है, इस बारे में आपको सावधान रहने की आवश्यकता है। +## [व्याख्यान के बाद प्रश्नोत्तरी](https://red-water-0103e7a0f.azurestaticapps.net/quiz/23) + +## समीक्षा और आत्म अध्ययन + +रेखा भूखंड सरल या काफी जटिल हो सकते हैं। [सीबॉर्न डॉक्युमेंटेशन](https://seaborn.pydata.org/generated/seaborn.lineplot.html) को विभिन्न तरीकों से पढ़कर आप उन्हें बना सकते हैं। डॉक्स में सूचीबद्ध अन्य विधियों के साथ इस पाठ में आपके द्वारा बनाए गए लाइन चार्ट को बढ़ाने का प्रयास करें। +## कार्यभार + +[मधुमक्खी के छत्ते में गोता लगाएँ] (असाइनमेंट.एमडी) From 4102b624e6c12098ff7d5b5ba4b5059bae342639 Mon Sep 17 00:00:00 2001 From: Izael Date: Wed, 13 Oct 2021 16:30:53 -0300 Subject: [PATCH 088/254] Translated Stats and Probability to PT-BR --- .../translations/README.pt-br.md | 261 ++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 1-Introduction/04-stats-and-probability/translations/README.pt-br.md diff --git a/1-Introduction/04-stats-and-probability/translations/README.pt-br.md b/1-Introduction/04-stats-and-probability/translations/README.pt-br.md new file mode 100644 index 00000000..10fb6565 --- /dev/null +++ b/1-Introduction/04-stats-and-probability/translations/README.pt-br.md @@ -0,0 +1,261 @@ +# Uma Breve Introdução a Estatística e Probabilidade + +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/04-Statistics-Probability.png)| +|:---:| +| Estatística e Probabilidade - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +Teoria da Probabilidade e Estatística são duas áreas altamente relacionadas da Matemática que são altamente relevante para a Ciência de Dados. É possível operar com dados sem um conhecimento aprofundado de matemática, mas ainda é bom saber pelo menos alguns conceitos. Aqui nós vamos apresentar uma breve introdução que ajudará você a começar. + +[![Vídeo de Introdução](../images/video-prob-and-stats.png)](https://youtu.be/Z5Zy85g4Yjw) + + +## [Quiz Pré Aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/6) + +## Probabilidade e Variáveis Aleatórias + +**Probabilidade** é um número entre 0 e 1 que expressa o quão provável um **evento** é. É definida como um número de resultados positivos (que levam ao evento), divido pelo número possível de resultados, dado que todos os resultados são igualmente prováveis. Por exemplo, quando jogamos um dado, a probabilidade de termos um número par é 3/6 = 0.5. + +Quando falamos de eventos, usamos **variáveis aleatórias**. Por exemplo, a variável aleatória que representa o número obtido quando jogamos um dado assumiria valores entre 1 e 6. O conjunto de números entre 1 a 6 é chamado de **espaço amostral**. Podemos falar sobre a probabilidade de uma variável aleatória ser um certo valor, como por exemplo P(X=3)=1/6. + +A variável aleatória nos exemplos anteriores são chamadas de **discretas**, pois possui um espaço amostral contável, ex. existem valores separados que podem ser numerados. Existem casos onde o espaço amostral é uma gama de valores reais, ou todo o conjunto de números reais. Essas variáveis são chamadas de **contínuas**. Um bom exemplo é a hora em que o ônibus chega. + +## Distribuição de Probabilidade + +No caso de variáveis discretas, é fácil descrever a probabilidade de cada um por uma função P(X). Para cada valor *s* do espaço amostrals *S* vai dar um número entre 0 e 1, de modo que todos os valores P(X=s) para todos os eventos seria 1. + +A distribuição discreta mais conhecida é a **distribuição uniforme**, no qual existe um espaço amostral de N elementos, com probabilidade de 1/N para todos eles. + +É mais difícil descrever a distribuição de probabilidade para uma variável contínua, com valores sorteados dentro de um intervalo [a, b], ou todo o conjunto dos números reais ℝ. Considere o caso da chegado do horário de ônibus. Na verdade, para cada horário de chegada exato $t$, a probabilidade do ônibus chegar exatamente naquele horário é 0! + +> Agora você sabe que eventos com probabilidade 0 acontecem, e muito frequentemente! Pelo menos toda vez que o ônibus chegar! + +Nós só podemos falar da probabilidade de uma variável cair em um determinado intervalo de valores, ex. P(t1≤X<t2). Nesse caso, a distribuição de probabilidade é descrita por uma **função densidade de probabilidade** p(x), sendo que + +![P(t_1\le X1, x2, ..., xn. Nós podemos definir o valor da **média** (ou **média aritmética**) da sequência da forma tradicional como (x1+x2+xn)/n. Conforme aumentamos o tamanho da amostra (ex. obter o limite com n→∞), nós vamos obter a média (também chamada de **expectância ou esperança**) da distribuição. Nós vamos denotá-la por **E**(x). + +> Pode ser demonstrado que para qualquer distribuição discreta com valores {x1, x2, ..., xN} e probabilidades correspondentes p1, p2, ..., pN, a expectativa seria igual a E(X)=x1p1+x2p2+...+xNpN. + +Para demonstrar o quanto os valores estão espalhados, nós podemos computar a variância σsup>2 = ∑(xi - μ)2/n, onde μ é a média da sequência. O valor de σ é chamado de **desvio padrão**, e σ2 é chamado de **variância**. + +## Moda, Média e Quartis + +Algumas vezes, a média não representa adequadamente o valor "típico" para dados. Por exemplo, quando existem poucos valores extremos que estão completamente fora da faixa, eles podem afetar a média. Outra boa indicação é a **mediana**, um valor sendo que metade dos pontos de dados estão abaixo dele, e a outra metade - acima. + +Para nos ajudar a entender a distribuição dos dados, é útil falar de **quartis**: + +* O primeiro quartil, ou Q1, é um valor sendo que 25% dos dados estarão abaixo dele +* O terceiro quartil,ou Q3, é um valor sendo que 75% dos dados estarão abaixo dele + +Graficamente nós podemos representar a relação entre mediana e quartis em um diagrama chamado de **box plot**: + + + +Nós também podemos computar o **intervalo interquartil** IQR=Q3-Q1, e os tão chamados **outliers** - valores que se localizam fora dos limites [Q1-1.5*IQR,Q3+1.5*IQR]. + +Para distribuições finitas que contenham um pequeno número de valores positivos, um bom valor "típico" é aquele que aparece mais frequentemente, que é chamado de **moda**. Geralmente é aplicado para dados categóricos, como cores. Considere uma situação onde nós temos dois grupos de pessoas - alguns preferem fortemente vermelho, enquanto outros preferem azul. Se atribuirmos números a cores, o valor médio para uma cor favorita estaria em algum lugar entre o espectro laranja-verde, o que não indica, de fato, a preferência de nenhum grupo. No entanto, a moda seria ou uma das cores, ou ambas as cores, se os números de pessoas que votaram para elas fossem iguais (nesse caso nós chamamos a amostra de **multimodal**). +## Dados do Mundo Real + +Quando analisamos dados da vida real, eles normalmente não são variáveis aleatórias como tal, no sentido de que não realizamos experimentos com resultado desconhecido. Por exemplo, considere um time de jogadores de baseball, e os seus dados corporais, como altura, peso e idade. Esses númerps não são exatamente aleatórios, mas nós podemos aplicar os mesmos conceitos matemáticos. Por exemplo, a sequência da altura das pessoas pode ser considerada uma sequência de valores sortidos de alguma variável aleatória. Abaixo está a sequência de pesos de jogadores reais da [Major League Baseball](http://mlb.mlb.com/index.jsp), retirados [desse dataset](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (para a sua conveniência, apenas os primeiros 20 valores são mostrados): + +``` +[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] +``` + +> **Nota**: Para ver o exemplo de trabalhar com esse dataset, olhe o [notebook](notebook.ipynb). Existe também um número de desafios nessa aula, e você pode completá-los adicionando alguns códigos nesse notebook. Se você não tem certeza de como operar os dados, não se preocupe - nós vamos voltar a trabalhar com dados usando Python em um outro momento. Se você não sabe como rodar código no Jupyter Notebook, dê uma olhada [neste artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +Aqui está o box plot mostrando a média, mediana e quartis para os nossos dados: + +![Box Plot dos Pesos](../images/weight-boxplot.png) + +Já que os nossos dados possuem informação de **posições** diferentes dos jogadores, nós podemos fazer o box plot baseado nas posições - permitirá a gente ter uma ideia de como os valores dos parâmetros mudam conforme diferentes posições. Agora vamos considerar a altura: + +![Box plot por posição](../images/boxplot_byrole.png) + +Esse diagrama sugere que, em média, a altura do jogador na primeira base é maior do que a altura dos jogadores na segunda base. Mais tarde nessa aula nós vamos aprender como podemos testar essa hipótese mais formalmente, e como demonstrar que o nosso dado é estatisticamente significante para mostrar isso. + +> Quando trabalhando com dados do mundo real, nós assumimos que todos os pontos de dados são amostras sortidas de alguma distribuição de probabilidade. Essa suposição permite que a gente aplica técnicas de aprendizado de máquina e contrua modelos preditivos que funcionam. + +Para ver qual a distribuição dos nossos dados é, nós podemos "plotar" um gráfico chamado de **histograma**. O eixo x seria um número de diferentes intervalos de valores para peso (chamados de **grupos** (bins)), e o eixo vertical mostrari o número de vezes que a amostra da nossa variável aleatória estava dentro do intervalo dado. + +![Histogram de dados do mundo real](../images/weight-histogram.png) + +A partir desse histograma você pode ver que todos os valores estão centrados ao redor de uma certa média de peso, e quanto mais longe nós formos - menos pesos desse valor são encotnrados. Ex. é muito improvável que o peso de um jogador de baseball seja muito diferente da média de pesos. Variância dos pesos mostram até que pontos os pesos tendem a diferir da média. + +> Se nós pegarmos os pesos de outras pessoas, não da liga de baseball, a distribuição provavelmente será diferente. No entante, a forma da distribuição será a mesma, mas a média e a variância iria mudar. Então, se treinarmos o modelo nos jogadores de baseball, provavelmente teremos resultados errados quando aplicado em estudantes de uma universidade, pois a distribuição subjacente é diferente. +## Distribuição Normal + +A distribuição de pesos que vimos acima é bem típica, e muitas medidas do mundo real seguem o mesmo tipo de distribuição, mas com médias e variâncias diferentes. Essa distribuição é chamada de **distribuição normal**, e possui um papel importante na estatística. + +Usar distribuição normal é uma forma correta de gerar pesos aleatórios para potenciais jogadores de baseball. Uma vez que sabemos a média de pesso `mean` e desvio padrão `std`, nós podemos gerar 1000 amostras de peso da seguinte forma: +```python +samples = np.random.normal(mean,std,1000) +``` + +Se "plotarmos" o histograma das amostras geradas nós vamos ver a figura bem similar com a mostrada acima. Se aumentarmos o número de amostrar e o número de grupos (bins), nós podemos gerar a figura de uma distribuição normal que é mais perto do ideal: + +![Distribuição Normal com mean=0 (média) e std.dev=1 (desvio padrão)](../images/normal-histogram.png) + +*Distribuição Normal com mean=0 e std.dev=1* + +## Intervalos de Confiânça + +Quando falamos sobre os pesos de jogadores de baseball, nós assumimos que existem certas **variáveis aleatórias W** que correspondem a distribuição de probabilidade ideal dos pesos de todos os jogadores de baseball (chamados de **população (population)**). Nossa sequência de pesos correspondem a um subset de todos os jogadores que chamamos de **amostra**. Uma questão interessante é, nós podemos saber os parâmetros da distribuição W, ex. média e variância de uma população? + +A resposta mais fácil seria calcular média e variância da nossa amostra. No entante, pode acontecer que nossa amostra aleatória não representa precisamente a população completa. Portanto faz sentido falar sobre **intervalos de confiança**. + +> **Intervalo de confiança** é a estimação da média verdadeira de uma população dada a nossa amostra, que é precisa é uma certa probabilidade (ou **nível de confiança**). + +Suponha que temos uma amostra X1, ..., Xn da nossa distribuição. Cada vez que sorteamos uma amostra da nossa distribuição, nós acabaríamos com diferentes valores de média μ. Portanto μ pode ser considerado uma variável aleatória. Um **intervalo de confiança** com confiança p é um par de valores (Lp,Rp), de forma que **P**(Lp≤μ≤Rp) = p, ex. a probabilidade da média medida estar dentro do intervalo igual a p. + +Vai além da nossa pequena introdução discutir detalhadamente como esses intervalos de confiança são calculados. Mais detalhes podem ser encontrados [na Wikipedia](https://en.wikipedia.org/wiki/Confidence_interval). Resumidamente, nós definimos a distribuição da média da amostra computada em relação a média verdadeira da população, que é chamada de **distribuiçao student (student distribution)**. + +> **Fato interessante**: distribuição Student é nomeada em homenagem ao matemático William Sealy Gosset, que publicou seu artigo com o pseudônimo "Student". Ele trabalhou na cervejaria Guinness, e, de acordo com uma das versões, seu empregador não queria que o público geral soubesse que eles estavam usando testes estatísticos para determinar a qualidade de materiais brutos. + +Se nós quiséssemos estimar a média μ da nossa população com confiança p, nós precisamos pegar *percentil número (1-p)/2 ((1-p)/2-th percentile)* de uma distribuição Student A, que pode ser coletada de tabelas, ou computadores usando alguma função imbutida de uma software de estatística (ex. Python, R, etc.). Então o intervalo μ seria dados por X±A*D/√n, onde X é a média obtida da amostra, D é o desvio padrão. + +> **Nota**: Nós também omitimos a discussão de um conceito importante de [degrees of freedom (graus de liberdade)](https://en.wikipedia.org/wiki/Degrees_of_freedom_(statistics)), que é importante em relação a distribuição Student. Você pode dar uma olhada em livros mais completos sobre estatísticas para entender esse conceito mais profundadamente. + +Um exemplo para calcular o intervalo de confiança para pesos e alturas é dado no [notebook](notebook.ipynb). + +| p | Weight mean | +|-----|-----------| +| 0.85 | 201.73±0.94 | +| 0.90 | 201.73±1.08 | +| 0.95 | 201.73±1.28 | + +Perceba que quanto maior é a probabilidade da confiança, mais amplo é o intervalo de confiança. + +## Testando Hipóteses +No nosso dataset de jogadores de baseball, existem diferentes posições, as quais podem ser sumarizadas abaixo (olhe o [notebook](notebook.ipynb) para ver como essa tabela pode ser calculada): + +| Role | Height | Weight | Count | +|------|--------|--------|-------| +| Catcher | 72.723684 | 204.328947 | 76 | +| Designated_Hitter | 74.222222 | 220.888889 | 18 | +| First_Baseman | 74.000000 | 213.109091 | 55 | +| Outfielder | 73.010309 | 199.113402 | 194 | +| Relief_Pitcher | 74.374603 | 203.517460 | 315 | +| Second_Baseman | 71.362069 | 184.344828 | 58 | +| Shortstop | 71.903846 | 182.923077 | 52 | +| Starting_Pitcher | 74.719457 | 205.163636 | 221 | +| Third_Baseman | 73.044444 | 200.955556 | 45 | + +Nós podemos ver que a média das alturas dos jogadores na primeira base é maior que a dos jogadores na segunda base. Portanto, nós podemos ser tentados a concluir que **jogadores da primeira base é maior que os da segunda base**. + +> Essa afirmação é chamada de **uma hipótese**, pois nós não sabemos se é verdade ou não. + +No entanto, nem sempre é óbvio fazer essa conclusão. A partir da discussão acima nós sabemos que cada média tem um intervalo de confiança associado, e portante esse diferença pode ser apenas um erro estatístico. Nós precisamos de formas mais formais de testar nossa hipótes. + +Vamos computar o intervalo de confiança separadamente para as alturas dos jogadores na primeira base e dos jogadores da segunda base: + +| Confidence | First Basemen | Second Basemen | +|------------|---------------|----------------| +| 0.85 | 73.62..74.38 | 71.04..71.69 | +| 0.90 | 73.56..74.44 | 70.99..71.73 | +| 0.95 | 73.47..74.53 | 70.92..71.81 | + +Nós podemos ver que sobre nenhuma confiança os intervalos se sobrepõem. Isso prova a nossa hipótese de que os jogador na primeira base são mais altos que os jogadores da segunda base. + +Mais formalmente, o problema que estamos resolvendo é ver se **duas distribuições de probabilidades são as mesmas**, ou se pelo menos possuem os mesmos parâmetros. Dependendo da distribuição, nós precisamos usar diferentes testes para isso. Se nós soubermos que a nossa distribuição é normal, nós podemos aplicar **[Teste t de Student (Student t-test)](https://en.wikipedia.org/wiki/Student%27s_t-test)**. + +No teste t de Student, nós computamos o **valor t**, que indica a diferença entre a média, levando em conta a variância. É demonstrado que o valor t segue a **distribuição student**, o que nos permite ter o valor limite para um determinado nível de confiança **p** (isso pode ser computado, ou procurado nas tabelas numéricas). Nós então comparamos o valor t para esse limite para aprovar ou rejeitar a hipótese + +Em Python, nós podemos usar o pacote **SciPy**, o qual inclui a função `ttest_ind` (e mais funções estatísticas!). Ela computa o valor t para a gente, e também faz a pesquisa inversa do valor de confiança p, para que podemos apenas olhar para a confiança para chegarmos a uma conclusão. + +Por exemplo, nossa comparação entre alturas dos jogadores da primeira base e da segunda base nos dá o seguinte resultado: +```python +from scipy.stats import ttest_ind + +tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Designated_Hitter',['Height']],equal_var=False) +print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}") +``` +``` +T-value = 7.65 +P-value: 9.137321189738925e-12 +``` +No nosso caso, o valor p é bem baixo, o que significa que existem fortes evidências que confirmam que os jogadores da primeira base são maiores. + +Existe também outros tipos diferentes de hipótes que podemos querer testar, por exemplo: +* Provar que uma dada amostra segue alguma distribuição. No nosso caso nós assumimos que alturas são normalmente distribuídas, mas isso precisa de verificação estatística formal. +* Provar que uma valor média de uma amostra corresponde a algum valor predefinido +* Comparar as médias de um número de amostras (ex. qual é a diferença em níveis de felicidade entre diferentes faixas etárias) + +## Lei dos Números Grandes e Teorema do Limite Central + +Uma das razões pelo qual a distribuição normal é tão importante é a tão chamada **teorema do limite central**. Vamos supor que temos uma grande amostra de N valores independentes X1, ..., XN, amostrado de qualquer distribuição com média μ e variância σ2. Então, para N suficientemente grande (em outras palavras, quando N→∞), a média ΣiXi seria normalmente distribuída, com média μ e variância σ2/N. + +> Outra forma de interpretar o teorema do limite central é dizer que independentemente da distribuição, quando você computa a média da soma de quaisquer valores de variável aleatória você acabará com uma distribuição normal. + +A partir do teorema do limite central também segue que, quando when N→∞, a probabilidade da média da amostra ser igual a μ se torna 1. Isso é conhecido como a **lei dos números grandes**. + +## Covariância e Correlação + +Uma das coisas que Ciência dos Dados faz é encontrar relações entre dados. Nós dizemos que duas sequências **correlacionam** quando elas exibem um comportamento similar ao mesmo tempo, ex. eles sobem/caem simultâneamente, ou uma sequência sobe enquanto a outra desce e vice-versa. Em outras palavras, aparenta ter algum tipo de relaçõa entre as duas sequências. + +> Correlação não necessariamente indica uma relação causal entre duas sequências; algumas vezes ambas as variáveis podem depender de alguma causa externa, or pode ser puramente uma coincidência que duas sequências se relacionem. No entanto, uma forte correlaçõe matemática é um bom indício + + Matematicamente, o conceito principal que mostra uma relações entre duas variávies aleatórias é **covariância**, que é computada da seguinte forma: Cov(X,Y) = **E**\[(X-**E**(X))(Y-**E**(Y))\]. Nós computamos o desvio de ambas as variáveis em relação a média, e então o produto desses desvios. Se ambas as variáveis desviam juntas, o produto seria sempre um valor positivo, que resulta em uma covariância positiva. Se ambas as variáveis desviam de forma não sincronizadas (ex. uma está abaixo da média enquanto outra está acima), nós sempre vamos ter números negativos, que resulta em uma covariância negativa. Se os desvios não são dependentes, eles sempre vão resultar em quase zero. + +O valor absoluto da covariância não nos informa o quão grande a correlação é, pois depende da magnitude dos valores reais. Para normalizar isso, nós podemos dividir a covariância pelo desvio padrão de ambas as variáveis, para conseguirmos a **correlação**. O bom é que a correlação sempre vai estar na faixa de [-1, 1], onde 1 indica uma forte correlaçao positiva entre os valores, -1 - forte correlação negativa, e 0 - nenhuma correlação (variáveis são independentes). + +**Exemplo**: Nós podemos computar a correlação entre pesos e alturas de jogadores de baseball do dataset mencionado acima: +```python +print(np.corrcoef(weights,heights)) +``` +Como resultado, temos uma **matriz de correlação** como essa: +``` +array([[1. , 0.52959196], + [0.52959196, 1. ]]) +``` + +> Matriz de correlação C pode ser computada para qualquer número de sequências de input S1, ..., Sn. O valor de C ij é a correlação entre Si e Sj, e elementos diagonais são sempre 1 (o que também é uma auto-correlação de Si). + +No nosso caso, o valor 0.53 indica que existe alguma correlação entre peso e altura de uma pessoa. Nós podemos fazer um gráfico de pontos de um valor contra o outro para ver a relação visualmente: + +![Relação entre peso e altura](../images/weight-height-relationship.png) + +> Mais exemplos de correlação e covariância podem ser encontrados no [notebook](notebook.ipynb). + +## Conclusão + +Nessa seção nós aprendemos: +* propriedades estatísticas básicas dos dados, como média, variância, moda e quartis +* diferentes distribuições para variáveis aleatórias, incluindo distribuição normal +* como encontrar a correlação entre propriedades diferentes +* como usar aparelhos de som de matemática e estatística para provar algumas hipóteses, +* como computar intervalos de confiância para variáveis aleatórias dado uma amostra de dados + +Enquanto essa definitivamente não é uma lista exaustiva de tópicos que existem dentro de probabilidade e estatística, deve ser o suficiente para você começar bem esse curso. + +## 🚀 Desafio + +Use o código de exemplo no notebook para testar outras hipóteses que: +1. Jogadores na primeira base e mais velhos que jogadores na segunda base +2. Jogadores na primeira base e mais altos que jogadores na terceira base +3. Interbases (Shortstops) são maiores que jogadores na segunda base + +## [Quis Pós Aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/7) + +## Revisão e Autoestudo + +Probabilidade e estatística é um tópico muito amplo que merece um curso próprio. Se você está interessado em aprofundar a teoria, talvez você queira continuar lendo alguns dos seguintes livros: + +1. [Carlos Fernanderz-Granda](https://cims.nyu.edu/~cfgranda/) da Universidade de Nova Iorque (New York University) tem boas notas de aula [Probability and Statistics for Data Science](https://cims.nyu.edu/~cfgranda/pages/stuff/probability_stats_for_DS.pdf) (disponíveis online) +1. [Peter and Andrew Bruce. Estatística prática para Cientistas de Dados (Practical Statistics for Data Scientists).](https://www.oreilly.com/library/view/practical-statistics-for/9781491952955/) [[sample code in R](https://github.com/andrewgbruce/statistics-for-data-scientists)]. +1. [James D. Miller. Estatística para Ciência de Dados (Statistics for Data Science)](https://www.packtpub.com/product/statistics-for-data-science/9781788290678) [[sample code in R](https://github.com/PacktPublishing/Statistics-for-Data-Science)] + +## Tarefa + +[Small Diabetes Study (Pequeno Estudo de Diabetes)](assignment.md) + +## Créditos + +Essa aula foi autorada com ♥️ por [Dmitry Soshnikov](http://soshnikov.com) From 8b676e321fb5dfd629f716e43bacf954f3e6221a Mon Sep 17 00:00:00 2001 From: Izael Date: Wed, 13 Oct 2021 16:32:46 -0300 Subject: [PATCH 089/254] Fixed a translation of a word on Ethics --- 1-Introduction/02-ethics/translations/RAEDME.pt-br.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-Introduction/02-ethics/translations/RAEDME.pt-br.md b/1-Introduction/02-ethics/translations/RAEDME.pt-br.md index ec921d8f..08bf7e54 100644 --- a/1-Introduction/02-ethics/translations/RAEDME.pt-br.md +++ b/1-Introduction/02-ethics/translations/RAEDME.pt-br.md @@ -12,7 +12,7 @@ Tendências do mercado nos mostram que até 2022, 1 em 3 grandes organizações Tendências também indicam que nós vamos criar e consumir mais de [180 zettabytes](https://www.statista.com/statistics/871513/worldwide-data-created/) de dados em 2025. Como **Cientistas de Dados**, isso nos dará níveis de acesso sem precedentes à dados pessoais. Isso significa que poderemos construir perfis comportamentais dos usuário e influenciar tomadas de decisão de uma forma que crie a [ilusão da livre escolha](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) enquanto potencialmente direcionando os usuários na direção do resultado que nós preferimos. Isso também levanta questões mais amplas sobre privacidade dos dados e proteção dos usuários. -Ética dos dados é agora um _guarda-corpos necessário_ para ciẽncia de dados e engenharia, nos ajudando a minimizar potenciais danos e consequências não intencionas das nossas ações realizadas com base em dados. O [Gartner Hype Cycle for AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) identifica tendências relevantes ná ética digital, IAs responsáveis, e governanças de IA como principais impulsionadores para grandes mega tendências sobre _democratização_ e _industrialização_ da IA. +Ética dos dados é agora uma _proteção necessário_ para ciẽncia de dados e engenharia, nos ajudando a minimizar potenciais danos e consequências não intencionas das nossas ações realizadas com base em dados. O [Gartner Hype Cycle for AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) identifica tendências relevantes ná ética digital, IAs responsáveis, e governanças de IA como principais impulsionadores para grandes mega tendências sobre _democratização_ e _industrialização_ da IA. ![Gartner's Hype Cycle for AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) @@ -124,7 +124,7 @@ Questões a se explorar aqui são: #### 2.6 Viéses dos Datasets -Dataset ou [Viéses da Coleção](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) é sobre selecionar um subset de dados _não representativos_ para o desenvolvimento de um algoritmo, criando potenciais injustiças nos resultados para grupos diversos. Os tipos de viéses incluem seleção ou viés da amostra, viés voluntário, e viés do instrumento. +[Viéses da Coleção ou do Dataset](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) é sobre selecionar um subset de dados _não representativos_ para o desenvolvimento de um algoritmo, criando potenciais injustiças nos resultados para grupos diversos. Os tipos de viéses incluem seleção ou viés da amostra, viés voluntário, e viés do instrumento. Questões a se explorar aqui são: * Recrutamos um conjunto representativo de titulares de dados? From 6064af005da4b5fab3a878b63633627b4dffe561 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 14 Oct 2021 23:03:40 -0300 Subject: [PATCH 090/254] Fix typos in PT-BR files --- .../translations/README.pt-br.md | 6 +++--- .../03-defining-data/translations/README.pt-br.md | 6 +++--- .../translations/README.pt-br.md | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/1-Introduction/01-defining-data-science/translations/README.pt-br.md b/1-Introduction/01-defining-data-science/translations/README.pt-br.md index b0c065a9..5707f025 100644 --- a/1-Introduction/01-defining-data-science/translations/README.pt-br.md +++ b/1-Introduction/01-defining-data-science/translations/README.pt-br.md @@ -1,6 +1,6 @@ # Definindo Ciências de Dados -|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/01-Definitions.png)| +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/01-Definitions.png)| |:---:| |Definindo Ciências de Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | @@ -20,7 +20,7 @@ Com o surgimento da Internet, o papel dos computadores como dispositivos de mani ## O que é Ciência de Dados? -Na [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Ciência de Dados** é definido como *um campo científico que utiliza métodos científicos para extrair conhecimento e insights de dados estruturados e não estruturados, e aplicar esse conhecimento e insights acionáveis de dados em uma ampla gama de domínios de aplicativos*. +Na [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Ciência de Dados** é definido como *um campo científico que utiliza métodos científicos para extrair conhecimento e insights de dados estruturados e não estruturados, e aplicar esse conhecimento e insights úteis obtidos a partir de dados em uma ampla gama de domínios de aplicativos*. Essa definição destaca os seguintes aspectos importantes da ciência de dados: @@ -147,7 +147,7 @@ Nesse desafio, nós vamos tentar encontrar conceitos relevantes para a área de ![Nuvem de Palavras para Ciência de Dados](../images/ds_wordcloud.png) -Visite [`notebook.ipynb`](notebook.ipynb) para ler o código. Você também pode rodar esse código, e ver como ele performa toda a transformação de dados em tempo real. +Visite [`notebook.ipynb`](../notebook.ipynb) para ler o código. Você também pode rodar esse código, e ver como ele performa toda a transformação de dados em tempo real. > Se você não sabe como rodar códigos no Jupyter Notebook, dê uma olhada [nesse artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). diff --git a/1-Introduction/03-defining-data/translations/README.pt-br.md b/1-Introduction/03-defining-data/translations/README.pt-br.md index f76deed3..2dcb205d 100644 --- a/1-Introduction/03-defining-data/translations/README.pt-br.md +++ b/1-Introduction/03-defining-data/translations/README.pt-br.md @@ -4,13 +4,13 @@ |:---:| |Definindo Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | -Dados são fatos, informações, observações e medidas que são usadas para fazer descobertas e apoiar decisões informadas. Um ponto de dado é uma unidade única dentro de um dataset, que é uma coleção de pontos de dados. Datasets podem vir em diferentes formatos e estruturas, e normalmente será baseado em sua fonte, ou de onde os dados vieram. Por exemplo, os ganhos mensais de uma empresa podem estar em uma planilha mas a frequência cardíaca (por hora) de um smartwatch pode estar em formato [JSON](https://stackoverflow.com/a/383699). É comum para cientistas de dados terem que trabalhar com diferentes tupos de dados em um dataset. +Dados são fatos, informações, observações e medidas que são usadas para fazer descobertas e apoiar decisões informadas. Um ponto de dado é uma unidade única dentro de um dataset, que é uma coleção de pontos de dados. Datasets podem vir em diferentes formatos e estruturas, e normalmente será baseado em sua fonte, ou de onde os dados vieram. Por exemplo, os ganhos mensais de uma empresa podem estar em uma planilha mas a frequência cardíaca (por hora) de um smartwatch pode estar em formato [JSON](https://stackoverflow.com/a/383699). É comum para cientistas de dados terem que trabalhar com diferentes tipos de dados em um dataset. Essa aula irá focar em identificar e classificar dados baseados em sua características e fontes. ## [Quiz Pré Aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/4) ## Como Dados são Descritos -**Dados Brutos (Raw data)** são dados que vieram em seu estado inicial de sua fonte e não foram analisados ou organizados. Para entender o que está acontecendo com um conjunto de dados, é necessário organizar os dados em uma formato que possa ser entendido pelos humanos e também pela tecnologia que pode ser usada para analisar os mesmos. A estrutura do dataset descreve como estão organizados e pode ser classificada em estruturada, não estruturada e semi estruturada. Esses tipos de estruturas irão variar, dependendo da fonte mas irão ultimamente se encaixar nessas categorias. +**Dados Brutos (Raw data)** são dados que vieram em seu estado inicial de sua fonte e não foram analisados ou organizados. Para entender o que está acontecendo com um conjunto de dados, é necessário organizar os dados em um formato que possa ser entendido pelos humanos e também pela tecnologia que pode ser usada para analisar os mesmos. A estrutura do dataset descreve como estão organizados e pode ser classificada em estruturada, não estruturada e semi estruturada. Esses tipos de estruturas irão variar, dependendo da fonte mas irão ultimamente se encaixar nessas categorias. ### Dados Qualitativos Dados qualitativos, também conhecidos como dados categóricos são dados que não podem ser medidos objetivamente como observações de dados quantitativos. São geralmente vários formatos de dados subjetivos que coletam a qualidade de algo, como um produto ou processo. Algumas vezes, dados qualitativos são numéricos e tipicamente não seriam usados matematicamente, como números de telefones e marcas de tempo. Alguns exemplos de dados qualitativos são: comentários de vídeos, a marca e modelo de um carro e a cor favorita do seu melhor amigo. Dados qualitativos podem ser usados para entender quais produtos os consumidores mais gostam ou identificar palavras-chaves populares em cúrriculos para aplicação em uma vaga de trabalho. @@ -36,7 +36,7 @@ Exemplos de dados não estruturados: HTML, arquivos CSV, JavaScript Object Notat Uma fonte de dados é o local inicial onde os dados foram gerados, ou onde "vivem" e irá variar com base em como e quando foram coletados. Dados gerados por seus usuários são conhecidos como dados primários enquanto dados secundários vem de uma fonte que coletou os dados para uso geral. Por exemplo, um grupo de cientistas fazendo observações em uma floresta tropical seriam considerados dados primários e se eles decidirem compartilhar com outros cientistas seriam considerados dados secundários para aqueles que usarem. -Banco de dados são fontes comuns e dependem de um sistema de gerenciamente de banco de dados para hospedar e manter os dados onde usuários usam comandos chamados de "queries" para explorar os dados. Arquivos como fonte de dados podem ser aúdio, imagens, e arquivos de vídeo assim como planilhas como o Excel. Fontes da internet são lugares comuns para hospedar dados, onde banco de dados e arquivos podem ser encontrados. Application programming interfaces, ou APIs, permitem programadores a criarem formas de compartilhar dados com usuários externos através da interet, enquanto processos de "web scraping" extrai dados de uma página da web. As [tarefas em Trabalhando com Dados](/2-Working-With) focam em como usar várias fontes de dados. +Banco de dados são fontes comuns e dependem de um sistema de gerenciamente de banco de dados para hospedar e manter os dados onde usuários usam comandos chamados de "queries" para explorar os dados. Arquivos como fonte de dados podem ser aúdio, imagens, e arquivos de vídeo assim como planilhas como o Excel. Fontes da internet são lugares comuns para hospedar dados, onde banco de dados e arquivos podem ser encontrados. Application programming interfaces, ou APIs, permitem programadores a criarem formas de compartilhar dados com usuários externos através da interet, enquanto processos de "web scraping" extrai dados de uma página da web. As [tarefas em Trabalhando com Dados](../../../2-Working-With-Data) focam em como usar várias fontes de dados. ## Conclusão diff --git a/1-Introduction/04-stats-and-probability/translations/README.pt-br.md b/1-Introduction/04-stats-and-probability/translations/README.pt-br.md index 10fb6565..348fb09c 100644 --- a/1-Introduction/04-stats-and-probability/translations/README.pt-br.md +++ b/1-Introduction/04-stats-and-probability/translations/README.pt-br.md @@ -69,7 +69,7 @@ Quando analisamos dados da vida real, eles normalmente não são variáveis alea [180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] ``` -> **Nota**: Para ver o exemplo de trabalhar com esse dataset, olhe o [notebook](notebook.ipynb). Existe também um número de desafios nessa aula, e você pode completá-los adicionando alguns códigos nesse notebook. Se você não tem certeza de como operar os dados, não se preocupe - nós vamos voltar a trabalhar com dados usando Python em um outro momento. Se você não sabe como rodar código no Jupyter Notebook, dê uma olhada [neste artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +> **Nota**: Para ver o exemplo de trabalhar com esse dataset, olhe o [notebook](../notebook.ipynb). Existe também um número de desafios nessa aula, e você pode completá-los adicionando alguns códigos nesse notebook. Se você não tem certeza de como operar os dados, não se preocupe - nós vamos voltar a trabalhar com dados usando Python em um outro momento. Se você não sabe como rodar código no Jupyter Notebook, dê uma olhada [neste artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). Aqui está o box plot mostrando a média, mediana e quartis para os nossos dados: @@ -123,7 +123,7 @@ Se nós quiséssemos estimar a média μ da nossa população com confiança p > **Nota**: Nós também omitimos a discussão de um conceito importante de [degrees of freedom (graus de liberdade)](https://en.wikipedia.org/wiki/Degrees_of_freedom_(statistics)), que é importante em relação a distribuição Student. Você pode dar uma olhada em livros mais completos sobre estatísticas para entender esse conceito mais profundadamente. -Um exemplo para calcular o intervalo de confiança para pesos e alturas é dado no [notebook](notebook.ipynb). +Um exemplo para calcular o intervalo de confiança para pesos e alturas é dado no [notebook](../notebook.ipynb). | p | Weight mean | |-----|-----------| @@ -134,7 +134,7 @@ Um exemplo para calcular o intervalo de confiança para pesos e alturas é dado Perceba que quanto maior é a probabilidade da confiança, mais amplo é o intervalo de confiança. ## Testando Hipóteses -No nosso dataset de jogadores de baseball, existem diferentes posições, as quais podem ser sumarizadas abaixo (olhe o [notebook](notebook.ipynb) para ver como essa tabela pode ser calculada): +No nosso dataset de jogadores de baseball, existem diferentes posições, as quais podem ser sumarizadas abaixo (olhe o [notebook](../notebook.ipynb) para ver como essa tabela pode ser calculada): | Role | Height | Weight | Count | |------|--------|--------|-------| @@ -222,7 +222,7 @@ No nosso caso, o valor 0.53 indica que existe alguma correlação entre peso e a ![Relação entre peso e altura](../images/weight-height-relationship.png) -> Mais exemplos de correlação e covariância podem ser encontrados no [notebook](notebook.ipynb). +> Mais exemplos de correlação e covariância podem ser encontrados no [notebook](../notebook.ipynb). ## Conclusão @@ -254,7 +254,7 @@ Probabilidade e estatística é um tópico muito amplo que merece um curso próp ## Tarefa -[Small Diabetes Study (Pequeno Estudo de Diabetes)](assignment.md) +[Small Diabetes Study (Pequeno Estudo de Diabetes)](../assignment.md) ## Créditos From d95c3ce3872f07a35677cd1bbc22ca7c3e234634 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 14 Oct 2021 23:07:45 -0300 Subject: [PATCH 091/254] Improved a definition on Defining Data Science --- .../01-defining-data-science/translations/README.pt-br.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-Introduction/01-defining-data-science/translations/README.pt-br.md b/1-Introduction/01-defining-data-science/translations/README.pt-br.md index 5707f025..c9dfff2b 100644 --- a/1-Introduction/01-defining-data-science/translations/README.pt-br.md +++ b/1-Introduction/01-defining-data-science/translations/README.pt-br.md @@ -20,13 +20,13 @@ Com o surgimento da Internet, o papel dos computadores como dispositivos de mani ## O que é Ciência de Dados? -Na [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Ciência de Dados** é definido como *um campo científico que utiliza métodos científicos para extrair conhecimento e insights de dados estruturados e não estruturados, e aplicar esse conhecimento e insights úteis obtidos a partir de dados em uma ampla gama de domínios de aplicativos*. +Na [Wikipedia (PT-BR)](https://pt.wikipedia.org/wiki/Ci%C3%AAncia_de_dados), **Ciência de Dados** é definido como *é uma área interdisciplinar voltada para o estudo e a análise de dados econômicos, financeiros e sociais, estruturados e não-estruturados, que visa a extração de conhecimento, detecção de padrões e/ou obtenção de insights para possíveis tomadas de decisão*. Essa definição destaca os seguintes aspectos importantes da ciência de dados: * O principal objetivo da ciência de dados é **extrair conhecimento** dos dados, em outras palavras - **entender** os dados, encontrar alguma relação escondida e construir um **modelo**. * Ciência de dados utiliza **métodos científicos**, como probabilidade e estatística. Na verdade, quando o termo *ciência de dados* foi introduzido pela primeira vez, algumas pessoas argumentaram que ciência de dados é apenas um nome chique para estatística. Hoje em dia ficou mais evidente que esse campo é muito mais amplo. -* Conhecimento adquirido deve ser aplicado para produzir algum **insights acionável**. +* Conhecimento adquirido deve ser aplicado para produzir algum **insight para possível tomada de decisão**. * Nós devemos ser capazes de operar tanto nos dados **estruturados** quanto nos **não estruturados**. Nós voltaremos a discutir diferentes tipos de dados mais para a frente no curso. * **Domínio de aplicação** é um conceito importante, e cientistas de dados frequentemente precisam de pelo menos algum grau de perícia no domínio do problema. From 1ea48ae384bd2baee8b5e20ad4ac9992aa35f4b1 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 14 Oct 2021 23:08:17 -0300 Subject: [PATCH 092/254] Fix typo --- .../01-defining-data-science/translations/README.pt-br.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/01-defining-data-science/translations/README.pt-br.md b/1-Introduction/01-defining-data-science/translations/README.pt-br.md index c9dfff2b..3597fe3a 100644 --- a/1-Introduction/01-defining-data-science/translations/README.pt-br.md +++ b/1-Introduction/01-defining-data-science/translations/README.pt-br.md @@ -20,7 +20,7 @@ Com o surgimento da Internet, o papel dos computadores como dispositivos de mani ## O que é Ciência de Dados? -Na [Wikipedia (PT-BR)](https://pt.wikipedia.org/wiki/Ci%C3%AAncia_de_dados), **Ciência de Dados** é definido como *é uma área interdisciplinar voltada para o estudo e a análise de dados econômicos, financeiros e sociais, estruturados e não-estruturados, que visa a extração de conhecimento, detecção de padrões e/ou obtenção de insights para possíveis tomadas de decisão*. +Na [Wikipedia (PT-BR)](https://pt.wikipedia.org/wiki/Ci%C3%AAncia_de_dados), **Ciência de Dados** é definida como *uma área interdisciplinar voltada para o estudo e a análise de dados econômicos, financeiros e sociais, estruturados e não-estruturados, que visa a extração de conhecimento, detecção de padrões e/ou obtenção de insights para possíveis tomadas de decisão*. Essa definição destaca os seguintes aspectos importantes da ciência de dados: From ae47bb431a4c5c48c4758fb0ed8025e07013e5c5 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Fri, 15 Oct 2021 00:13:45 -0500 Subject: [PATCH 093/254] feat: Add file to translate --- .../translations/README.es.md | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md index e69de29b..098a389d 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md @@ -0,0 +1,142 @@ +# Data Science in the Real World + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +| :--------------------------------------------------------------------------------------------------------------: | +| Data Science In The Real World - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +We're almost at the end of this learning journey! + +We started with definitions of data science and ethics, explored various tools & techniques for data analysis and visualization, reviewed the data science lifecycle, and looked at scaling and automating data science workflows with cloud computing services. So, you're probably wondering: _"How exactly do I map all these learnings to real-world contexts?"_ + +In this lesson, we'll explore real-world applications of data science across industry and dive into specific examples in the research, digital humanities, and sustainability, contexts. We'll look at student project opportunities and conclude with useful resources to help you continue your learning journey! +## Pre-Lecture Quiz + +[Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/38) +## Data Science + Industry + +Thanks to the democratization of AI, developers are now finding it easier to design and integrate AI-driven decision-making and data-driven insights into user experiences and development workflows. Here are a few examples of how data science is "applied" to real-world applications across the industry: + + * [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) used data science to correlate search terms with flu trends. While the approach had flaws, it raised awareness of the possibilities (and challenges) of data-driven healthcare predictions. + + * [UPS Routing Predictions](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - explains how UPS uses data science and machine learning to predict optimal routes for delivery, taking into account weather conditions, traffic patterns, delivery deadlines and more. + + * [NYC Taxicab Route Visualization](http://chriswhong.github.io/nyctaxi/) - data gathered using [Freedom Of Information Laws](https://chriswhong.com/open-data/foil_nyc_taxi/) helped visualize a day in the life of NYC cabs, helping us understand how they navigate the busy city, the money they make, and the duration of trips over each 24-hour period. + + * [Uber Data Science Workbench](https://eng.uber.com/dsw/) - uses data (on pickup & dropoff locations, trip duration, preferred routes etc.) gathered from millions of uber trips *daily* to build a data analytics tool to help with pricing, safety, fraud detection and navigation decisions. + + * [Sports Analytics](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - focuses on _predictive analytics_ (team and player analysis - think [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - and fan management) and _data visualization_ (team & fan dashboards, games etc.) with applications like talent scouting, sports gambling and inventory/venue management. + + * [Data Science in Banking](https://data-flair.training/blogs/data-science-in-banking/) - highlights the value of data science in the finance industry with applications ranging from risk modeling and fraud detction, to customer segmentation, real-time prediction and recommender systems. Predictive analytics also drive critical measures like [credit scores](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit). + + * [Data Science in Healthcare](https://data-flair.training/blogs/data-science-in-healthcare/) - highlights applications like medical imaging (e.g., MRI, X-Ray, CT-Scan), genomics (DNA sequencing), drug development (risk assessment, success prediction), predictive analytics (patient care & supply logistics), disease tracking & prevention etc. + +![Data Science Applications in The Real World](./images/data-science-applications.png) Image Credit: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) + +The figure shows other domains and examples for applying data science techniques. Want to explore other applications? Check out the [Review & Self Study](?id=review-amp-self-study) section below. + +## Data Science + Research + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Data Science & Research - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +While real-world applications often focus on industry use cases at scale, _research_ applications and projects can be useful from two perspectives: + +* _innovation opportunities_ - explore rapid prototyping of advanced concepts and testing of user experiences for next-generation applications. +* _deployment challenges_ - investigate potential harms or unintended consequences of data science technologies in real-world contexts. + +For students, these research projects can provide both learning and collaboration opportunities that can improve your understanding of the topic, and broaden your awareness and engagement with relevant people or teams working in areas of interest. So what do research projects look like and how can they make an impact? + +Let's look at one example - the [MIT Gender Shades Study](http://gendershades.org/overview.html) from Joy Buolamwini (MIT Media Labs) with a [signature research paper](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) co-authored with Timnit Gebru (then at Microsoft Research) that focused on + + * **What:** The objective of the research project was to _evaluate bias present in automated facial analysis algorithms and datasets_ based on gender and skin type. + * **Why:** Facial analysis is used in areas like law enforcement, airport security, hiring systems and more - contexts where inaccurate classifications (e.g., due to bias) can cause potential economic and social harms to affected individuals or groups. Understanding (and eliminating or mitigating) biases is key to fairness in usage. + * **How:** Researchers recongized that existing benchmarks used predominantly lighter-skinned subjects, and curated a new data set (1000+ images) that was _more balanced_ by gender and skin type. The data set was used to evaluate the accuracy of three gender classification products (from Microsoft, IBM & Face++). + +Results showed that though overall classification accuracy was good, there was a noticeable difference in error rates between various subgroups - with **misgendering** being higher for females or persons with darker skin types, indicative of bias. + +**Key Outcomes:** Raised awareness that data science needs more _representative datasets_ (balanced subgroups) and more _inclusive teams_ (diverse backgrounds) to recognize and eliminate or mitigate such biases earlier in AI solutions. Research efforts like this are also instrumental in many organizations defining principles and practices for _responsible AI_ to improve fairness across their AI products and processes. + + +**Want to learn about relevant research efforts in Microsoft?** + +* Check out [Microsoft Research Projects](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) on Artificial Intelligence. +* Explore student projects from [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). +* Check out the [Fairlearn](https://fairlearn.org/) project and [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) initiatives. + + + +## Data Science + Humanities + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Data Science & Digital Humanities - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + + +Digital Humanities [has been defined](https://digitalhumanities.stanford.edu/about-dh-stanford) as "a collection of practices and approaches combining computational methods with humanistic inquiry". [Stanford projects](https://digitalhumanities.stanford.edu/projects) like _"rebooting history"_ and _"poetic thinking"_ illustrate the linkage between [Digital Humanities and Data Science](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - emphasizing techniques like network analysis, information visualization, spatial and text analysis that can help us revisit historical and literary data sets to derive new insights and perspective. + +*Want to explore and extend a project in this space?* + +Check out ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - a great example from [Jen Looper](https://twitter.com/jenlooper) that asks how we can use data science to revisit familiar poetry and re-evaluate its meaning and the contributions of its author in new contexts. For instance, _can we predict the season in which a poem was authored by analyzing its tone or sentiment_ - and what does this tell us about the author's state of mind over the relevant period? + +To answer that question, we follow the steps of our data science lifecycle: + * [`Data Acquisition`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - to collect a relevant dataset for analysis. Options including using an API ( e.g., [Poetry DB API](https://poetrydb.org/index.html)) or scraping web pages (e.g., [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) using tools like [Scrapy](https://scrapy.org/). + * [`Data Cleaning`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explains how text can be formatted, sanitized and simplified using basic tools like Visual Studio Code and Microsoft Excel. + * [`Data Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explains how we can now import the dataset into "Notebooks" for analysis using Python packages (like pandas, numpy and matplotlib) to organize and visualize the data. + * [`Sentiment Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explains how we can integrate cloud services like Text Analytics, using low-code tools like [Power Automate](https://flow.microsoft.com/en-us/) for automated data processing workflows. + +Using this workflow, we can explore the seasonal impacts on the sentiment of the poems, and help us fashion our own perspectives on the author. Try it out yourself - then extend the notebook to ask other questions or visualize the data in new ways! + +> You can use some of the tools in the [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) to pursue these avenues of inquiry + + +## Data Science + Sustainability + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Data Science & Sustainability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +The [2030 Agenda For Sustainable Development](https://sdgs.un.org/2030agenda) - adopted by all United Nations members in 2015 - identifies 17 goals including ones that focus on **Protecting the Planet** from degradation and the impact of climate change. The [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) initiative supports these goals by exploring ways in which technology solutions can support and build more sustainable futures with a [focus on 4 goals](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - being carbon negative, water positive, zero waste, and bio-diverse by 2030. + +Tackling these challenges in a scalable and timely manner requires cloud-scale thinking - and large scale data. The [Planetary Computer](https://planetarycomputer.microsoft.com/) initiative provides 4 components to help data scientists and developers in this effort: + + * [Data Catalog](https://planetarycomputer.microsoft.com/catalog) - with petabytes of Earth Systems data (free & Azure-hosted). + * [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - to help users search for relevant data across space and time. + * [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - managed environment for scientists to process massive geospatial datasets. + * [Applications](https://planetarycomputer.microsoft.com/applications) - showcase use cases & tools for sustainability insights. + +**The Planetary Computer Project is currently in preview (as of Sep 2021)** - here's how you can get started contributing to sustainability solutions using data science. + +* [Request access](https://planetarycomputer.microsoft.com/account/request) to start exploration and connect with peers. +* [Explore documentation](https://planetarycomputer.microsoft.com/docs/overview/about) to understand supported datasets and APIs. +* Explore applications like [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) for inspiration on application ideas. + +Think about how you can use data visualization to expose or amplify relevant insights into areas like climate change and deforestation. Or think about how insights can be used to create new user experiences that motivate behavioral changes for more sustainable living. + +## Data Science + Students + +We've talked about real-world applications in industry and research, and explored data science application examples in digital humanities and sustainability. So how can you build your skills and share your expertise as data science beginners? + +Here are some examples of data science student projects to inspire you. + + * [MSR Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) with GitHub [projects](https://github.com/msr-ds3) exploring topics like: + - [Racial Bias in Police Use of Force](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [Reliability of NYC Subway System](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) + * [Digitizing Material Culture: Exploring socio-economic distributions in Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc)- from [Ornella Altunyan](https://twitter.com/ornelladotcom) and team at Claremont, using using [ArcGIS StoryMaps](https://storymaps.arcgis.com/). + +## 🚀 Challenge + +Search for articles that recommend data science projects that are beginner friendly - like [these 50 topic areas](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) or [these 21 project ideas](https://www.intellspot.com/data-science-project-ideas) or [these 16 projects with source code](https://data-flair.training/blogs/data-science-project-ideas/) that you can deconstruct and remix. And don't forget to blog about your learning journeys and share your insights with all of us. +## Post-Lecture Quiz + +[Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/39) +## Review & Self Study + +Want to explore more use cases? Here are a few relevant articles: + * [17 Data Science Applications and Examples](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021 + * [11 Breathtaking Data Science Applications in Real World](https://myblindbird.com/data-science-applications-real-world/) - May 2021 + * [Data Science In The Real World](https://towardsdatascience.com/data-science-in-the-real-world/home) - Article Collection + * Data Science In: [Education](https://data-flair.training/blogs/data-science-in-education/), [Agriculture](https://data-flair.training/blogs/data-science-in-agriculture/), [Finance](https://data-flair.training/blogs/data-science-in-finance/), [Movies](https://data-flair.training/blogs/data-science-at-movies/) & more. +## Assignment + +[Explore A Planetary Computer Dataset](assignment.md) From 0445e3f1459febede489258fc13085a8a39a8de4 Mon Sep 17 00:00:00 2001 From: Flex Zhong Date: Sat, 16 Oct 2021 09:59:09 +0800 Subject: [PATCH 094/254] Update README.zh-cn.md --- translations/README.zh-cn.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README.zh-cn.md b/translations/README.zh-cn.md index 1cc9bad7..1ba7c667 100644 --- a/translations/README.zh-cn.md +++ b/translations/README.zh-cn.md @@ -17,9 +17,9 @@ > **同学们**,如果你想自己学习这门课程,你可以在整个 repo 中自己完成练习,从课前测验开始,然后阅读讲座,完成其他活动。尝试通过理解课程内容来创建项目,而不是仅仅把答案代码抄下来;然而,在每个项目课程中,这些代码可以在里面的 /solutions 文件夹中找到。另一个方法是与朋友组成一个学习小组,一起学习内容。为了进一步的研究,我们推荐 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa)。 - +> 🎥 点击上面的图片,观看关于这个项目以及作者的视频! ## 教学方法 @@ -27,7 +27,7 @@ 此外,课前的低风险测验使学生对学习某个主题有了意向,而课后的第二次测验则确保了学生记住了内容。本课程的设计是灵活而有趣的,可以参加整个或部分课程。这些项目开始时很小,在 10 周的学习过程内会变得越来越复杂。 -> 找到我们的 [行为守则](../CODE_OF_CONDUCT.md)、[贡献](../CONTRIBUTING.md) 以及 [翻译](../TRANSLATIONS.md) 指南。我们欢迎你的建设性反馈! +> 看看我们的 [行为守则](../CODE_OF_CONDUCT.md)、[贡献](../CONTRIBUTING.md) 以及 [翻译](../TRANSLATIONS.md) 指南。我们欢迎你的建设性反馈! ## 每节课包括: @@ -94,4 +94,4 @@ - [针对初学者的机器学习课程](https://aka.ms/ml-beginners) - [针对初学者的 IoT 课程](https://aka.ms/iot-beginners) -- [针对初学者的 Web 开发课程](https://aka.ms/webdev-beginners) \ No newline at end of file +- [针对初学者的 Web 开发课程](https://aka.ms/webdev-beginners) From e3a9312591ae90a9fd607d591552a2ac62883be1 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sat, 16 Oct 2021 01:19:49 -0500 Subject: [PATCH 095/254] feat: (translation): Translate module 6 - 20 real world examples * translate to spanish 20 real world examples README file --- .../translations/README.es.md | 170 +++++++++--------- 1 file changed, 86 insertions(+), 84 deletions(-) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md index 098a389d..231495d1 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md @@ -1,142 +1,144 @@ -# Data Science in the Real World +# Ciencia de Datos en el mundo real -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-RealWorld.png) | | :--------------------------------------------------------------------------------------------------------------: | -| Data Science In The Real World - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Ciencia de Datos en el mundo real - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | -We're almost at the end of this learning journey! +¡Estamos casi al final de esta aventura de aprendizaje! -We started with definitions of data science and ethics, explored various tools & techniques for data analysis and visualization, reviewed the data science lifecycle, and looked at scaling and automating data science workflows with cloud computing services. So, you're probably wondering: _"How exactly do I map all these learnings to real-world contexts?"_ +Empezamos con las definiciones de ciencia de datos y ética, se exploraron diveras herramientas y técnicas para el análisis y visualización de datos, se revisó el ciclo de vida de los datos, y se buscó escalar y automatizar flujos de trabajo de ciencia de datos con servicios de cómputo en la nube. Por lo que te preguntarás: _"¿Cómo relaciono todo este aprendizaje con el mundo real?"_ -In this lesson, we'll explore real-world applications of data science across industry and dive into specific examples in the research, digital humanities, and sustainability, contexts. We'll look at student project opportunities and conclude with useful resources to help you continue your learning journey! -## Pre-Lecture Quiz +En esta lección, exploraremos la aplicación de la ciencia de datos en el mundo real en la industria y profundizaremos en ejemplos específicos en la investigación, humanidades digitales y sustentabilidad. Analizaremos oportunidades de proyectos para estudiantes y concluiremos con recursos útiles que te ayuden en tu aventura de aprendizaje. +## Examen previo a la lección -[Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/38) -## Data Science + Industry +[Examen previo a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/38) +## Ciencia de Datos + Industria -Thanks to the democratization of AI, developers are now finding it easier to design and integrate AI-driven decision-making and data-driven insights into user experiences and development workflows. Here are a few examples of how data science is "applied" to real-world applications across the industry: +Gracias a la democratización de la AI, los desarrolladores encuentran más fácil el diseñar e integrar tanto la toma de decisiones dirigidas por AI como el conocimiento práctico dirigido por datos en experiencias de usuario y desarrollar flujos de trabajo. Aquí algunos ejemplos de cómo la ciencia de datos es "aplicada" en aplicaciones del mundo real a través de la industria: - * [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) used data science to correlate search terms with flu trends. While the approach had flaws, it raised awareness of the possibilities (and challenges) of data-driven healthcare predictions. + * [Tendencias de la gripe de Google](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) se usó ciencia de datos para correlacionar términos de búsqueda con tendencias de la gripe. Mientras el enfoque tuvo fallos, este resaltó las posibilidades (y retos) de las predicciones de cuidados de la salud dirigidos por datos. - * [UPS Routing Predictions](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - explains how UPS uses data science and machine learning to predict optimal routes for delivery, taking into account weather conditions, traffic patterns, delivery deadlines and more. + * [Predicciones de enrutamiento de UPS](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - explica cómo UPS usa ciencia de datos y aprendizaje automático para predecir rutas óptimas para la entrega, tomando en cuenta condiciones climáticas, patrones de tráfico, fechas límite de entrega y más. - * [NYC Taxicab Route Visualization](http://chriswhong.github.io/nyctaxi/) - data gathered using [Freedom Of Information Laws](https://chriswhong.com/open-data/foil_nyc_taxi/) helped visualize a day in the life of NYC cabs, helping us understand how they navigate the busy city, the money they make, and the duration of trips over each 24-hour period. + * [Visualización de rutas de taxis en la ciudad de Nueva York](http://chriswhong.github.io/nyctaxi/) - se reunieron los datos usando [leyes de libertad de la información](https://chriswhong.com/open-data/foil_nyc_taxi/) lo cual ayudó a visualizar un día en la vida de los taxis de Nueva York, ayudando a entender como recorren la ajetreada ciudad, cuánto dinero ganan, y la duración de los viajes durante un período de 24 horas. - * [Uber Data Science Workbench](https://eng.uber.com/dsw/) - uses data (on pickup & dropoff locations, trip duration, preferred routes etc.) gathered from millions of uber trips *daily* to build a data analytics tool to help with pricing, safety, fraud detection and navigation decisions. + * [Banco de trabajo de Ciencia de Datos de Uber](https://eng.uber.com/dsw/) - usa los datos (de ubicaciones de inicio y fin de ruta, duración del viaje, rutas preferidas, etc.) reunidos de millones de viajes *diarios* en uber para construir una herramienta de analítica de datos para ayudar con los precios, seguridad, detección de fraude y decisiones de navegación. - * [Sports Analytics](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - focuses on _predictive analytics_ (team and player analysis - think [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - and fan management) and _data visualization_ (team & fan dashboards, games etc.) with applications like talent scouting, sports gambling and inventory/venue management. + * [Analítica de deportes](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - se enfoca en _analítica predictiva_ (análisis de equipo y jugador) - piensa [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - y gestión de admiradores) y _visualización de datos_ (tableros de equipo y admiradores, juegos, etc.) con aplicaciones como búsqueda de talento, apuestas deportivas y gestión de sedes/inventario. - * [Data Science in Banking](https://data-flair.training/blogs/data-science-in-banking/) - highlights the value of data science in the finance industry with applications ranging from risk modeling and fraud detction, to customer segmentation, real-time prediction and recommender systems. Predictive analytics also drive critical measures like [credit scores](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit). +* [Ciencia de Datos en el sector bancario](https://data-flair.training/blogs/data-science-in-banking/) - resalta el valor de la ciencia de datos en la industria financiera con aplicaciones que varían desde el modelado de riesgo y detección de fraudes, a segmentación de clientes, sistemas de predicción y recomendación en tiempo real. La analítica predictiva también dirige medidas críticas como [puntaje de crédito](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit). - * [Data Science in Healthcare](https://data-flair.training/blogs/data-science-in-healthcare/) - highlights applications like medical imaging (e.g., MRI, X-Ray, CT-Scan), genomics (DNA sequencing), drug development (risk assessment, success prediction), predictive analytics (patient care & supply logistics), disease tracking & prevention etc. + * [Ciencia de Datos en el cuidado de la salud](https://data-flair.training/blogs/data-science-in-healthcare/) - resalta aplicaciones como imágenes médicas (por ejemplo, resonancias magnéticas, rayos X, tomografías computarizadas), genómicas (secuencia de ADN), desarrollo de fármacos (evaluación de riesgos, predicción de éxito), análisis predictivos (cuidado del paciente y logística de suministro), seguimiento y prevención de enfermedades, etcétera. -![Data Science Applications in The Real World](./images/data-science-applications.png) Image Credit: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) +![Aplicaciones de la Ciencia de Datos en el mundo real](../images/data-science-applications.png) Image Credit: [Estilos de datos: 6 sorprendentes aplicaciones de la Ciencia de Datos](https://data-flair.training/blogs/data-science-applications/) -The figure shows other domains and examples for applying data science techniques. Want to explore other applications? Check out the [Review & Self Study](?id=review-amp-self-study) section below. +La imagen muestra otros dominios y ejemplos para aplicar técnicas de ciencia de datos. ¿Quieres explorar otras aplicaciones? Revisa la sección [revisión y auto-estudio](?id=review-amp-self-study) abajo. -## Data Science + Research +## Ciencia de datos + Investigación -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Research.png) | | :---------------------------------------------------------------------------------------------------------------: | -| Data Science & Research - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Ciencia de Datos e Investigación - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | -While real-world applications often focus on industry use cases at scale, _research_ applications and projects can be useful from two perspectives: +Mientras las aplicaciones del mundo real suelen enfocarse en los casos de uso a escala en la industri, las aplicaciones y proyectos de _investigación_ son útiles desde dos prespectivas: -* _innovation opportunities_ - explore rapid prototyping of advanced concepts and testing of user experiences for next-generation applications. -* _deployment challenges_ - investigate potential harms or unintended consequences of data science technologies in real-world contexts. +* _oportunidades de inovación_ - explora el prototipado rápido de conceptos avanzados y pruebas de experiencias de usuario para aplicaciones de próxima generación. +* _desafíos de despliegue_ - investiga daños potenciales o consecuencias involuntarias de las tecnologías de ciencia de datos el mundo real. -For students, these research projects can provide both learning and collaboration opportunities that can improve your understanding of the topic, and broaden your awareness and engagement with relevant people or teams working in areas of interest. So what do research projects look like and how can they make an impact? +Para los estudiantes, estos proyectos de investigación pueden proveer tanto aprendizaje como oportunidades de colaboración que podrían mejorar tu entendimiento del tema, y ampliar tu conciencia y compromiso con gente o equipos relevantes en el área de interés. ¿Entonces, qué te parecen los proyectos de investigación y cómo pueden tener impacto? -Let's look at one example - the [MIT Gender Shades Study](http://gendershades.org/overview.html) from Joy Buolamwini (MIT Media Labs) with a [signature research paper](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) co-authored with Timnit Gebru (then at Microsoft Research) that focused on +Veamos un ejemplo - el [estudio de sombras de género del MIT](http://gendershades.org/overview.html) de Joy Buolamwini (MIT Media Labs) con el[documento de investigación de firma](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) en co-autoría con Timnit Gebru (luego en Microsoft Research) se enfocó en: - * **What:** The objective of the research project was to _evaluate bias present in automated facial analysis algorithms and datasets_ based on gender and skin type. - * **Why:** Facial analysis is used in areas like law enforcement, airport security, hiring systems and more - contexts where inaccurate classifications (e.g., due to bias) can cause potential economic and social harms to affected individuals or groups. Understanding (and eliminating or mitigating) biases is key to fairness in usage. - * **How:** Researchers recongized that existing benchmarks used predominantly lighter-skinned subjects, and curated a new data set (1000+ images) that was _more balanced_ by gender and skin type. The data set was used to evaluate the accuracy of three gender classification products (from Microsoft, IBM & Face++). + * **Qué:** El objetivo del proyecto de investigación fue el _evaluar sesgos presentes en los algoritmos de análisis facial automatizado y conjuntos de datos_ basados en el género y tipo de piel. -Results showed that though overall classification accuracy was good, there was a noticeable difference in error rates between various subgroups - with **misgendering** being higher for females or persons with darker skin types, indicative of bias. + * **Porqué:** El análisis facial es usado en área como cumplimiento de la ley, seguridad aeroportuaria, sistemas de contratación y más - contextos donde las clasificaciones imprecisas (por ejemplo, debido a sesgos) pueden causar daños potenciales económicos y sociales a los individuos o grupos afectados. Entender (y eliminar o mitigar) sesgos es la clave para ser justos en práctica. -**Key Outcomes:** Raised awareness that data science needs more _representative datasets_ (balanced subgroups) and more _inclusive teams_ (diverse backgrounds) to recognize and eliminate or mitigate such biases earlier in AI solutions. Research efforts like this are also instrumental in many organizations defining principles and practices for _responsible AI_ to improve fairness across their AI products and processes. + * **Cómo:** Lso investigadores reconocieron que los puntos de referencia existentes usaron predominantemente sujetos de piel más clara, y curaron un nuevo conjunto de datos (más de 1000 imágenes) que estaban _más equilibradas_ por género y tipo de piel. El conjunto de datos se usó para evaluar la precisión de tres productos de clasificación de género (de Microsoft, IBM y Face++). +Los resultados mostraton que aunque la precisión de clasificación general era buena, había una notable diferencia en las tasas de error entre distintos subgrupos - con la **mala clasificación de género** siendo más alta para mujeres o personas con tipos de piel más oscuros, indicativo de un sesgo. -**Want to learn about relevant research efforts in Microsoft?** +**Resultados clave:** Hicieron evidente que la ciencia de datos necesita más _conjuntos de datos representativos_ (subgrupos equilibrados) y más _equipos incluyentes_ (distintos antecedentes) para reconocer y eliminar o mitigar esos sesgos antes en soluciones de AI. los esfuerzos de investigación como este también son instrumentales en muchas organizaciones definiendo principios y práticas para una _AI responsable_ para mejorar la justicia a través de los productos y procesos de AI. -* Check out [Microsoft Research Projects](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) on Artificial Intelligence. -* Explore student projects from [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). -* Check out the [Fairlearn](https://fairlearn.org/) project and [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) initiatives. +**¿quieres aprender acerca de esfuerzos relevantes de investigación en Microsoft?** +* Revisa los [proyectos de investigación de Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) en Inteligencia Artificial. +* Explorar proyectos de estudiantes de la [escuela de verano de investigación en Ciencia de Datos de Microsoft](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). +* Revisa el proyecto [Fairlearn](https://fairlearn.org/) e iniciativas de [AI responsable](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6). -## Data Science + Humanities -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | +## Ciencia de Datos + Humanidades + +| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Humanities.png) | | :---------------------------------------------------------------------------------------------------------------: | -| Data Science & Digital Humanities - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Ciencia de Datos & Humanidades Digitales - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | -Digital Humanities [has been defined](https://digitalhumanities.stanford.edu/about-dh-stanford) as "a collection of practices and approaches combining computational methods with humanistic inquiry". [Stanford projects](https://digitalhumanities.stanford.edu/projects) like _"rebooting history"_ and _"poetic thinking"_ illustrate the linkage between [Digital Humanities and Data Science](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - emphasizing techniques like network analysis, information visualization, spatial and text analysis that can help us revisit historical and literary data sets to derive new insights and perspective. +Las Humanidades Digitales [han sido definidas](https://digitalhumanities.stanford.edu/about-dh-stanford) como "una coleción de prácticas y enfoques que combinan métodos computacionales con investigación humanística". Los [proyectos de Stanford](https://digitalhumanities.stanford.edu/projects) como _"reiniciando la historia"_ y _"pensamiento poético"_ ilustran el vículo entre [las Humanidades Digitales y Ciencia de Datos](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - enfatizando técnicas como el análisis de red, visualización de la información, análisis espacial y de texto que nos ayudan a revisitar datos históricos y literarios para derivar en nuevos conocimientos y perspectivas. -*Want to explore and extend a project in this space?* +*¿Quieres explorar y extender un proyecto en este espacio?* -Check out ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - a great example from [Jen Looper](https://twitter.com/jenlooper) that asks how we can use data science to revisit familiar poetry and re-evaluate its meaning and the contributions of its author in new contexts. For instance, _can we predict the season in which a poem was authored by analyzing its tone or sentiment_ - and what does this tell us about the author's state of mind over the relevant period? +Revisa ["Emily Dickinson y el medidor de estado de ánimo"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - un gran ejemplo de [Jen Looper](https://twitter.com/jenlooper) que planteacomo podemos usar la ciencia de datos para revisitar poesía familiar y re-evaluar su significado y las contribuciones de su autor en nuevos contextos. Por ejemplo, _¿podemos predecir la estación en la cual fue creado un poema realizando un análisis en su tono o sentimiento_? y ¿qué nos dices esto acerca del estado mental del autor en ese período en particular? -To answer that question, we follow the steps of our data science lifecycle: - * [`Data Acquisition`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - to collect a relevant dataset for analysis. Options including using an API ( e.g., [Poetry DB API](https://poetrydb.org/index.html)) or scraping web pages (e.g., [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) using tools like [Scrapy](https://scrapy.org/). - * [`Data Cleaning`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explains how text can be formatted, sanitized and simplified using basic tools like Visual Studio Code and Microsoft Excel. - * [`Data Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explains how we can now import the dataset into "Notebooks" for analysis using Python packages (like pandas, numpy and matplotlib) to organize and visualize the data. - * [`Sentiment Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explains how we can integrate cloud services like Text Analytics, using low-code tools like [Power Automate](https://flow.microsoft.com/en-us/) for automated data processing workflows. +Para responder a esa pregunta, seguiremos los pasos de nuestro ciclo de vida de ciencia de datos: + * [`Adquisición de datos`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - para recolectar un conjunto de datos relevante para el análisis. Las opciones incluyen el uso de un API (por ejemplo, [Poetry DB API](https://poetrydb.org/index.html)) o realizar raspado de páginas web (por ejemplo, [Proyecto Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) usando herramientas como [Scrapy](https://scrapy.org/). + * [`Limpieza de datos`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explica como se puede dar formato al texto, la sanitización y simplificación usando herramientas básicas como Visual Studio Code y Microsoft Excel. + * [`Análisis de datos`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explica como podemos importar los conjuntos de trabajo en "Notebooks" para análisis usando paquetes de Python (como pandas, numpy y matplotlib) para organizar y visualizar los datos. + * [`Análisis de sentimiento`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explica como podemos integrar servicios en la nube como Text Analytics, usando herramientas de low-code tools como [Power Automate](https://flow.microsoft.com/en-us/) para flujos de trabajo de procesamiento de datos automatizados. -Using this workflow, we can explore the seasonal impacts on the sentiment of the poems, and help us fashion our own perspectives on the author. Try it out yourself - then extend the notebook to ask other questions or visualize the data in new ways! +Usando este flujo de trabajo, podemos explorar los impactos estacionales en el sentimiento de los poemas, y nos ayuda a formar nuestras propias perspectivas del autor. ¡Prueba esto tú mismo - luego extiende el notebook para preguntar otras cuestiones o visualizar los datos de nuevas formas! -> You can use some of the tools in the [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) to pursue these avenues of inquiry +> Puedes usar algunas de las herramientas en la [caja de herramientas de Humanidades Digitales](https://github.com/Digital-Humanities-Toolkit) para seguir estas vías de investigación. -## Data Science + Sustainability +## Ciencia de Datos + Sustentabilidad -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | +| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Sustainability.png) | | :---------------------------------------------------------------------------------------------------------------: | -| Data Science & Sustainability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Ciencia de Datos y Sustentabilidad - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | + +La [agenda de 2030 para el desarrollo sostenible](https://sdgs.un.org/2030agenda) - adoptada por todos los miembros de las Naciones Unidas en 2015 - identifica 17 metas incluyendo algunas que se enfocan en la **protección del planeta** de la degradación y el impacto del cambio climático. La iniciativa de [sustentabilidad de Microsoft](https://www.microsoft.com/en-us/sustainability) soporta estas metas explorando formas en las cuales las soluciones tecnológicas pueden soportar y construir futuros más sostenibles con un [enfoque en 4 metas](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - siendo negativas al carbono, positivas al agua, cero desperdicio y biodiversas para el 2030. + +Abordar estos desafíos de forma escalable y oportuna requiere pensamiento a escala de la nuber y datos en gran escala. La iniciativa de [Computadora Planetaria](https://planetarycomputer.microsoft.com/) provee 4 componentes que ayudan a los científicos de datos y desarrolladores en este esfuerzo: + + * [Catálogo de datos](https://planetarycomputer.microsoft.com/catalog) - con petabytes de datos de los sistemas de la tierra (gratuitos y hospedados en Azure). + * [API Planetaria](https://planetarycomputer.microsoft.com/docs/reference/stac/) - para ayudar a los usuarios a buscar datos relevantes a través del espacio y tiempo. + * [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - entorno gestionado por científicos par el proceso de conjuntos de datos geoespaciales masivos. + * [Aplicaciones](https://planetarycomputer.microsoft.com/applications) - exhibe casos de uso y herramientas para conocimientos prácticos sostenibles. -The [2030 Agenda For Sustainable Development](https://sdgs.un.org/2030agenda) - adopted by all United Nations members in 2015 - identifies 17 goals including ones that focus on **Protecting the Planet** from degradation and the impact of climate change. The [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) initiative supports these goals by exploring ways in which technology solutions can support and build more sustainable futures with a [focus on 4 goals](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - being carbon negative, water positive, zero waste, and bio-diverse by 2030. +**El proyecto de Computadora Planetaria está actualmente en progreso (a Septiembre de 2021)** - así es como puedes iniciarte en la contribución a soluciones sostenibles usando ciencia de datos. -Tackling these challenges in a scalable and timely manner requires cloud-scale thinking - and large scale data. The [Planetary Computer](https://planetarycomputer.microsoft.com/) initiative provides 4 components to help data scientists and developers in this effort: - - * [Data Catalog](https://planetarycomputer.microsoft.com/catalog) - with petabytes of Earth Systems data (free & Azure-hosted). - * [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - to help users search for relevant data across space and time. - * [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - managed environment for scientists to process massive geospatial datasets. - * [Applications](https://planetarycomputer.microsoft.com/applications) - showcase use cases & tools for sustainability insights. +* [Solicita acceso](https://planetarycomputer.microsoft.com/account/request) para iniciar la exploración y conecta con compañeros. +* [Explora la documentación](https://planetarycomputer.microsoft.com/docs/overview/about) para entender los conjuntos de datos y APIs soportados. +* Explora aplicaciones como [Monitoreo del ecosistema](https://analytics-lab.org/ecosystemmonitoring/) en búsqueda de inspiración en ideas de aplicación. -**The Planetary Computer Project is currently in preview (as of Sep 2021)** - here's how you can get started contributing to sustainability solutions using data science. +Piensa en cómo puedes usar la visualización de datos para exponer o amplificar los conocimientos en áreas como el cambio climático y deforestación. O piensa en como pueden ser usados los conocimientos para crear nuevas experiencias de usuario para motivar cambios en comportamiento para una vida más sostenible. -* [Request access](https://planetarycomputer.microsoft.com/account/request) to start exploration and connect with peers. -* [Explore documentation](https://planetarycomputer.microsoft.com/docs/overview/about) to understand supported datasets and APIs. -* Explore applications like [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) for inspiration on application ideas. - -Think about how you can use data visualization to expose or amplify relevant insights into areas like climate change and deforestation. Or think about how insights can be used to create new user experiences that motivate behavioral changes for more sustainable living. +## Ciencia de Datos + Estudiantes -## Data Science + Students +Hemos hablado acerca de aplicaciones en el mundo real en la industria y la investigación y explorado ejemplos de aplicación de la ciencia de datos en las humanidades digitales y sostenibilidad. Entonces, ¿cómo puedes construir tus habilidades y compartir tu experienca como principiantes en la ciencia de datos? -We've talked about real-world applications in industry and research, and explored data science application examples in digital humanities and sustainability. So how can you build your skills and share your expertise as data science beginners? +Aquí tienes algunos ejemplos de proyectos de estudiantes de ciencia de datos para inspirarte. -Here are some examples of data science student projects to inspire you. +* [Escuela de verano de ciencia de datos MSR](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) en [proyectos](https://github.com/msr-ds3) de Github explora temas como: + - [Sesgo racial en el uso de la fuerza policial](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [Fiabilidad del sistema de transporte Metro de la Ciudad de Nueva York](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) + * [Digitalización de la Cultura Material: explora las distribuciones socio-económicas en Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc)- por [Ornella Altunyan](https://twitter.com/ornelladotcom) y el equipo en Claremont, usando [ArcGIS StoryMaps](https://storymaps.arcgis.com/). - * [MSR Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) with GitHub [projects](https://github.com/msr-ds3) exploring topics like: - - [Racial Bias in Police Use of Force](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) - - [Reliability of NYC Subway System](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) - * [Digitizing Material Culture: Exploring socio-economic distributions in Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc)- from [Ornella Altunyan](https://twitter.com/ornelladotcom) and team at Claremont, using using [ArcGIS StoryMaps](https://storymaps.arcgis.com/). +## 🚀 Desafío -## 🚀 Challenge +Busca artículos que recomienden proyectos de ciencia de datos que son amigables para principiantes - como [éstas 50 temas de área](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) o [estas 21 ideas de proyecto](https://www.intellspot.com/data-science-project-ideas) o [estos 16 proyectos con código fuente](https://data-flair.training/blogs/data-science-project-ideas/) que puedes deconstruir y remezclar. Y no olvides crear un blog acerca de tu viaje de aprendizaje y comparte tus conocimientos con todos nosotros. -Search for articles that recommend data science projects that are beginner friendly - like [these 50 topic areas](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) or [these 21 project ideas](https://www.intellspot.com/data-science-project-ideas) or [these 16 projects with source code](https://data-flair.training/blogs/data-science-project-ideas/) that you can deconstruct and remix. And don't forget to blog about your learning journeys and share your insights with all of us. -## Post-Lecture Quiz +## Examen posterior a la lección -[Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/39) -## Review & Self Study +[Examen posterior a la lección](https://red-water-0103e7a0f.azurestaticapps.net/quiz/39) +## Revisión y auto-estudio -Want to explore more use cases? Here are a few relevant articles: - * [17 Data Science Applications and Examples](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021 - * [11 Breathtaking Data Science Applications in Real World](https://myblindbird.com/data-science-applications-real-world/) - May 2021 - * [Data Science In The Real World](https://towardsdatascience.com/data-science-in-the-real-world/home) - Article Collection - * Data Science In: [Education](https://data-flair.training/blogs/data-science-in-education/), [Agriculture](https://data-flair.training/blogs/data-science-in-agriculture/), [Finance](https://data-flair.training/blogs/data-science-in-finance/), [Movies](https://data-flair.training/blogs/data-science-at-movies/) & more. -## Assignment +¿Quieres explorar más casos de uso? Aquí hay algunos artículos relevantes: + * [17 aplicaciones de Ciencia de Datos y ejemplos](https://builtin.com/data-science/data-science-applications-examples) - Julio de 2021 + * [11 proyectos de Ciencia de Datos sorprendentes en el mundo real](https://myblindbird.com/data-science-applications-real-world/) - Mayo de 2021 + * [Ciencia de Datos en el mundo real](https://towardsdatascience.com/data-science-in-the-real-world/home) - colección de artículos + * Ciencia de Datos en la [Educación](https://data-flair.training/blogs/data-science-in-education/), [Agricultura](https://data-flair.training/blogs/data-science-in-agriculture/), [Finanzas](https://data-flair.training/blogs/data-science-in-finance/), [Películas](https://data-flair.training/blogs/data-science-at-movies/) y más. +## Asignación -[Explore A Planetary Computer Dataset](assignment.md) +[Explora un conjunto de datos de la Computadora Planetaria](../assignment.md) From 1c4e3a836aaadeb44d7ecdd999c059a8108cdebb Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sat, 16 Oct 2021 01:32:18 -0500 Subject: [PATCH 096/254] fix: Solve issue with broken link inner reference --- .../20-Real-World-Examples/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md index 231495d1..f708850a 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md @@ -32,7 +32,7 @@ Gracias a la democratización de la AI, los desarrolladores encuentran más fác ![Aplicaciones de la Ciencia de Datos en el mundo real](../images/data-science-applications.png) Image Credit: [Estilos de datos: 6 sorprendentes aplicaciones de la Ciencia de Datos](https://data-flair.training/blogs/data-science-applications/) -La imagen muestra otros dominios y ejemplos para aplicar técnicas de ciencia de datos. ¿Quieres explorar otras aplicaciones? Revisa la sección [revisión y auto-estudio](?id=review-amp-self-study) abajo. +La imagen muestra otros dominios y ejemplos para aplicar técnicas de ciencia de datos. ¿Quieres explorar otras aplicaciones? Revisa la sección [revisión y auto-estudio](#revisi%C3%B3n-y-auto-estudio) abajo. ## Ciencia de datos + Investigación From 9aeb8a5d594cf01e90cd352eb4b7ca0c46017a60 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sat, 16 Oct 2021 01:39:23 -0500 Subject: [PATCH 097/254] feat: Add assignment file to translate --- .../translations/assignment.es.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md new file mode 100644 index 00000000..6538f8df --- /dev/null +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md @@ -0,0 +1,38 @@ +# Explore a Planetary Computer Dataset + +## Instructions + +In this lesson, we talked about various data science application domains - with deep dives into examples related to research, sustainability and digital humanities. In this assignment, you'll explore one of these examples in more detail, and apply some of your learnings around data visualizations and analysis to derive insights about sustainability data. + +The [Planetary Computer](https://planetarycomputer.microsoft.com/) project has datasets and APIs that can be accessed with an account - request one for access if you want to try the bonus step of the assignment. The site also provides an [Explorer](https://planetarycomputer.microsoft.com/explore) feature that you can use without creating an account. + + +`Steps:` +The Explorer interface (shown in the screenshot below) lets you select a dataset (from provided options), a preset query (to filter data) and a rendering option (to create a relevant visualization). In this assignment, your task is to: + + 1. Read the [Explorer documentation](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - understand options. + 2. Explore the dataset [Catalog](https://planetarycomputer.microsoft.com/catalog) - learn the purpose of each. + 3. Use the Explorer - pick a dataset of interest, select a relevant query & rendering option. + + +![The Planetary Computer Explorer](images/Planetary-Computer-Explorer.png) + +`Your Task:` +Now study the visualization that is rendered in the browser and answer the following: + * What _features_ does the dataset have? + * What _insights_ or results does the visualization provide? + * What are the _implications_ of those insights to the sustainability goals of the project? + * What are the _limitations_ of the visualization (i.e., what insight did you not get?) + * If you could get the raw data, what _alternative visualizations_ would you create, and why? + +`Bonus Points:` +Apply for an account - and login when accepted. + * Use the _Launch Hub_ option to open the raw data in a Notebook. + * Explore the data interactively, and implement the alternative visualizations you thought of. + * Now analyze your custom visualizations - were you able to derive the insights you missed before? + +## Rubric + +Exemplary | Adequate | Needs Improvement +--- | --- | -- | +All five core questions were answered. The student clearly identified how current and alternative visualizations could provide insights into sustainability objectives or outcomes.| The student answered at least the top 3 questions in great detail, showing that had practical experience with the Explorer. | The student failed to answer multiple questions, or provided insufficient detail - indicating that no meaningful attempt was made for the project | \ No newline at end of file From 33f9d36054ffb20063560dbecade23747b4cf166 Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sat, 16 Oct 2021 02:05:45 -0500 Subject: [PATCH 098/254] feat:(translation) 20 real world examples spanish translation * translate file `6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md` to spanish --- .../translations/assignment.es.md | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md index 6538f8df..5482bcd0 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.es.md @@ -1,38 +1,37 @@ -# Explore a Planetary Computer Dataset +# Explora un conjunto de datos de la Computadora Planetaria -## Instructions +## Instrucciones -In this lesson, we talked about various data science application domains - with deep dives into examples related to research, sustainability and digital humanities. In this assignment, you'll explore one of these examples in more detail, and apply some of your learnings around data visualizations and analysis to derive insights about sustainability data. +En esta lección, hablamos acerca de distintos dominios de aplicación de la ciencia de datos - profundizando en ejemplos relacionados a la investigación, sustentabilidad y humanidades digitales. En esta asignación, explorarás uno de estos ejemplos a mayor detalle, y aplicarás algunos de tus aprendizajes en visualización de datos y análisis para derivar en conocimientos acerca de datos de sustentabilidad. -The [Planetary Computer](https://planetarycomputer.microsoft.com/) project has datasets and APIs that can be accessed with an account - request one for access if you want to try the bonus step of the assignment. The site also provides an [Explorer](https://planetarycomputer.microsoft.com/explore) feature that you can use without creating an account. +El proyecto de [Computadora Planetaria](https://planetarycomputer.microsoft.com/) tiene conjuntos de datos y APIs que pueden ser accesadas con una cuenta - solicita acceso si quieres probar el paso adicional de esta asignación. El sitio también provee una característica de [Explorador](https://planetarycomputer.microsoft.com/explore) que puedes usar sin crear una cuenta. -`Steps:` -The Explorer interface (shown in the screenshot below) lets you select a dataset (from provided options), a preset query (to filter data) and a rendering option (to create a relevant visualization). In this assignment, your task is to: +`Pasos:` +La interfaz de exploración (mostrada en captura de pantalla abajo) te permite seleccionar un conjunto de datos (de las opciones proporcionadas), una consulta preestablecida (para filtrar los datos) y una opción de representación (para crear una visualización relevante). En esta asignación, tu tarea es: - 1. Read the [Explorer documentation](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - understand options. - 2. Explore the dataset [Catalog](https://planetarycomputer.microsoft.com/catalog) - learn the purpose of each. - 3. Use the Explorer - pick a dataset of interest, select a relevant query & rendering option. + 1. Lee la [documentación del explorador](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - entiende las opciones. + 2. Explora el conjunto de datos del [catálogo](https://planetarycomputer.microsoft.com/catalog) - entiende el propósito de cada uno. + 3. Usa el explorador - elige un conjunto de datos de interés, selecciona una consulta relevante y una opción de representación. +![El explorador de la Computadora Planetaria](../images/planetary-computer-explorer.png) -![The Planetary Computer Explorer](images/Planetary-Computer-Explorer.png) +`Tu tarea:` +Ahora estudia la visualización que es representada en el navegador y responde a lo siguiente: + * ¿Qué _características_ tiene el conjunto de datos? + * ¿Qué _conocimientos_ o resultados provee la visualización? + * ¿Cuáles son las _implicaciones_ de esos conocimientos para las metas de sustentabilidad del proyecto? + * ¿Cuáles son las _limitantes_ de la visualización (esto es, ¿qué conocimiento no obtienes?)? + * Si pudieras obtener los datos en crudo, ¿qué _alternativas de visualización_ crearías y porqué? -`Your Task:` -Now study the visualization that is rendered in the browser and answer the following: - * What _features_ does the dataset have? - * What _insights_ or results does the visualization provide? - * What are the _implications_ of those insights to the sustainability goals of the project? - * What are the _limitations_ of the visualization (i.e., what insight did you not get?) - * If you could get the raw data, what _alternative visualizations_ would you create, and why? +`Puntos adicionales:` +Aplica para una cuenta - e inicia sesión cuando seas aceptado. + * Usa la opción _Launch Hub_ para abrir el conjunto de datos en crudo en un Notebook. +* Explorar los datos de forma interactiva, e implementa las alternativas de visualización que tengas en mente. +* Ahora analiza tus visualizaciones personalizadas - ¿fuiste capaz de derivar los conocimientos que antes te faltaron? -`Bonus Points:` -Apply for an account - and login when accepted. - * Use the _Launch Hub_ option to open the raw data in a Notebook. - * Explore the data interactively, and implement the alternative visualizations you thought of. - * Now analyze your custom visualizations - were you able to derive the insights you missed before? +## Rúbrica -## Rubric - -Exemplary | Adequate | Needs Improvement +Ejemplar | Adecuado | Necesita mejorar --- | --- | -- | -All five core questions were answered. The student clearly identified how current and alternative visualizations could provide insights into sustainability objectives or outcomes.| The student answered at least the top 3 questions in great detail, showing that had practical experience with the Explorer. | The student failed to answer multiple questions, or provided insufficient detail - indicating that no meaningful attempt was made for the project | \ No newline at end of file +Todas las cinco preguntas se respondieron. El estudiante identificó claramente como las visualizaciones actuales y alternativas podrían proveer conocimiento en objetivos de sustentabilidad o resultados. | El estudiante respondió al menos las 3 preguntas principales a gran detalle, mostrando que tuvo experiencia práctica con el Explorador. | El estudiante falló al responder múltiples preguntas, o dió detalles insuficientes - indicando que hizo un intento significativo para el proyecto. | \ No newline at end of file From ccfd961ba822a639f1a50b12d282b63981287cfd Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sat, 16 Oct 2021 02:11:21 -0500 Subject: [PATCH 099/254] feat: Add file to translate --- 6-Data-Science-In-Wild/translations/README.es.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 6-Data-Science-In-Wild/translations/README.es.md diff --git a/6-Data-Science-In-Wild/translations/README.es.md b/6-Data-Science-In-Wild/translations/README.es.md new file mode 100644 index 00000000..edd7a3f2 --- /dev/null +++ b/6-Data-Science-In-Wild/translations/README.es.md @@ -0,0 +1,11 @@ +# Data Science in the Wild + +Real-world applications of data science across industries. + +### Topics + +1. [Data Science in the Real World](20-Real-World-Examples/README.md) + +### Credits + +Written with ❤️ by [Nitya Narasimhan](https://twitter.com/nitya) From 3d659a4fca5bfa2b330b4fd30cdcccc7d33731ca Mon Sep 17 00:00:00 2001 From: Angel Mendez Date: Sat, 16 Oct 2021 02:17:07 -0500 Subject: [PATCH 100/254] feat:(translation) translate main README on module 6 * translate file to spanish --- 6-Data-Science-In-Wild/translations/README.es.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/6-Data-Science-In-Wild/translations/README.es.md b/6-Data-Science-In-Wild/translations/README.es.md index edd7a3f2..3cdc7458 100644 --- a/6-Data-Science-In-Wild/translations/README.es.md +++ b/6-Data-Science-In-Wild/translations/README.es.md @@ -1,11 +1,11 @@ -# Data Science in the Wild +# Ciencia de Datos en la naturaleza -Real-world applications of data science across industries. +Aplicaciones del mundo real de la ciencia de datos en las industrias. -### Topics +### Temas -1. [Data Science in the Real World](20-Real-World-Examples/README.md) +1. [Ciencia de datos en el mundo real](../20-Real-World-Examples/translations/README.es.md) -### Credits +### Créditos -Written with ❤️ by [Nitya Narasimhan](https://twitter.com/nitya) +Escrito con ❤️ por [Nitya Narasimhan](https://twitter.com/nitya) From 05410c649c36bba03c3e272231ac981f437e6f67 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 15:30:01 -0300 Subject: [PATCH 101/254] Create assignment.pt-br.md --- .../translations/assignment.pt-br.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md diff --git a/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md b/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md new file mode 100644 index 00000000..ec63b0d7 --- /dev/null +++ b/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md @@ -0,0 +1,11 @@ +# Aplique suas habilidades + +## Instruções + +Até agora, você trabalhou com o dataset de pássaros de Minnesota para descobrir informação sobre quantidades de pássaros e densidade populacional. Pratique essas técnicas usando um outro dataset, talvez do [Kaggle](https://www.kaggle.com/). Faça um notebook que conta uma história sobre esse dataset, e lembre-se de usar histogramas para isso. + +## Rubrica + +Exemplar | Adequado | Precisa melhorar +--- | --- | -- | +O notebook tem anotações sobre o dataset, incluindo sua origem, e usa pelo menos 5 histogramas para descobrir fatos sobre os dados. | O notebook tem anotações incompletas ou bugs | O notebook não possui nenhuma anotação e contṕem bugs. From 544c06ef80bb351ace57accc60ec8432bac61583 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 16:13:03 -0300 Subject: [PATCH 102/254] Fix typos and change the links Revised and fixed typos, rephrased some sentences. Also changed the links to the translated lessons. --- .../translations/README.pt-br.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/3-Data-Visualization/translations/README.pt-br.md b/3-Data-Visualization/translations/README.pt-br.md index 1437ecf3..816f3743 100644 --- a/3-Data-Visualization/translations/README.pt-br.md +++ b/3-Data-Visualization/translations/README.pt-br.md @@ -1,31 +1,31 @@ # Visualizações -![a bee on a lavender flower](./../images/bee.jpg) +![Uma abelha em uma flor de lavanda](./../images/bee.jpg) > Foto por Jenna Lee em Unsplash - -Visualizar dados é uma das tarefas mais importantes de um cientista de dados. Imagens valem mais que 1000 palavras, e uma visualização pode te ajudar a identificar todo tipo de partes interessantes dos seus dados, como picos, outliers, agrupamentos, tendências, e mais, que podem te ajudar a entender a história que seus dados estão tentando contar. + +Visualizar dados é uma das tarefas mais importantes para um cientista de dados. Uma imagem vale mais que 1000 palavras, e uma visualização pode te ajudar a identificar todo tipo de coisa interessante nos seus dados, como picos, outliers, agrupamentos, tendências, e mais, que podem te ajudar a entender a história que seus dados estão tentando contar. Nessas cinco aulas, você irá explorar dados vindos da natureza e criar visualizações bonitas e interessantes usando várias técnicas. ### Tópicos -1. [Visualizando quantidades](09-visualization-quantities/README.md) -1. [Visualizando distribuições](10-visualization-distributions/README.md) -1. [Visualizando proporções](11-visualization-proportions/README.md) -1. [Visualizando relações](12-visualization-relationships/README.md) -1. [Criando visualizações relevantes](13-meaningful-visualizations/README.md) +1. [Visualizando quantidades](../09-visualization-quantities/translations/README.pt-br.md) +1. [Visualizando distribuições](../10-visualization-distributions/translations/README.pt-br.md) +1. [Visualizando proporções](11-visualization-proportions/README.md) (ainda não traduzido) +1. [Visualizando relações](12-visualization-relationships/README.md) (ainda não traduzido) +1. [Criando visualizações relevantes](13-meaningful-visualizations/README.md) (ainda não traduzido) ### Créditos Essas aulas foram escritas com 🌸 por [Jen Looper](https://twitter.com/jenlooper) -🍯 Dados de produção de mel nos EUA são provenientes do projeto de Jessica Li no [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). Os [dados](https://usda.library.cornell.edu/concern/publications/rn301137d) são provenientes do [Departamento de Agricultura dos Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php). +🍯 Os dados de produção de mel nos EUA são provenientes do projeto de Jessica Li no [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). Eles são derivados dos [dados](https://usda.library.cornell.edu/concern/publications/rn301137d) disponibilizados pelo [Departamento de Agricultura dos Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php). -🍄 Dados dos cogumelos também são provenientes do [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) revisados por Hatteras Dunton. Esse dataset inclui descrições de amostras hipotéticas que correspondem a 23 espécies de cogumelos lamelados das famílias Agaricus e Lepiota. Mushroom drawn from The Audubon Society Field Guide to North American Mushrooms (1981). Esse dataset foi doado para UCI ML 27 em 1987. +🍄 Os dados dos cogumelos também são provenientes do [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset), e foram revisados por Hatteras Dunton. Esse dataset inclui descrições de amostras hipotéticas que correspondem a 23 espécies de cogumelos lamelados das famílias Agaricus e Lepiota. Os cogumelos foram retirados do livro The Audubon Society Field Guide to North American Mushrooms (1981). Esse dataset foi doado para a UCI ML 27 em 1987. -🦆 Dados de pássaros de Minnesota também são provenientes do [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) raspados (web scraping) da [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) por Hannah Collins. +🦆 Os dados de aves de Minnesota também são provenientes do [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds), e foram raspados (scraped) da [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) por Hannah Collins. -Todos esses datasets estão licensiados sob [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). +Todos esses datasets estão licenciados sob [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). From cb0984d0ab522e41990c2aaa02f72df96363e987 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 20:01:44 -0300 Subject: [PATCH 103/254] Fix links --- 3-Data-Visualization/translations/README.pt-br.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/3-Data-Visualization/translations/README.pt-br.md b/3-Data-Visualization/translations/README.pt-br.md index 816f3743..80430b78 100644 --- a/3-Data-Visualization/translations/README.pt-br.md +++ b/3-Data-Visualization/translations/README.pt-br.md @@ -11,9 +11,9 @@ Nessas cinco aulas, você irá explorar dados vindos da natureza e criar visuali 1. [Visualizando quantidades](../09-visualization-quantities/translations/README.pt-br.md) 1. [Visualizando distribuições](../10-visualization-distributions/translations/README.pt-br.md) -1. [Visualizando proporções](11-visualization-proportions/README.md) (ainda não traduzido) -1. [Visualizando relações](12-visualization-relationships/README.md) (ainda não traduzido) -1. [Criando visualizações relevantes](13-meaningful-visualizations/README.md) (ainda não traduzido) +1. [Visualizando proporções](../11-visualization-proportions/README.md) (ainda não traduzido) +1. [Visualizando relações](../12-visualization-relationships/README.md) (ainda não traduzido) +1. [Criando visualizações relevantes](../13-meaningful-visualizations/README.md) (ainda não traduzido) ### Créditos From bd363541cc2905f9121affe44715aad977f32918 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 21:24:25 -0300 Subject: [PATCH 104/254] Fix typos and change the links Revised and fixed typos, rephrased some sentences. Also changed the links to the translated lessons. --- .../translations/README.pt-br.md | 91 ++++++++++--------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md index 90838098..f0bf7bf8 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.pt-br.md @@ -4,29 +4,28 @@ |:---:| | Visualizando quantidades - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | -Nessa aula você irá explorar como usar uma das muitas bibliotecas disponíveis de Python para aprender a criar visualizações interessantes relacionadas ao conceito de quantidade. Usando um dataset já limpo sobre pássaros de Minnesota, você pode aprender muitos fatos interessantes sobre a fauna selvagem local. +Nesta aula você irá explorar como usar uma das muitas bibliotecas disponíveis no Python para aprender a criar visualizações interessantes relacionadas ao conceito de quantidade. Usando um dataset já limpo sobre aves de Minnesota, você pode aprender muitos fatos interessantes sobre a fauna selvagem local. ## [Quiz pré-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/16) -## Observar envergadura de asa com Matplotlib +## Observando envergadura da asa com Matplotlib -Uma biblioteca excelente para criar gráficos simples e sofisticados de diversos tipos é o [Matplotlib](https://matplotlib.org/stable/index.html). Em geral, o processo de plotar dados com essas bibliotecas inclui identificar as partes do seu dataframe que você quer focar, utilizando quaisquer transformações necessárias nestes dados, atribuindo seus valores dos eixos x e y, decidindo qual tipo de gráfico mostrar, e então mostrando o gráfico. O Matplotlib oferece uma grande variedade de visualizações, mas, nesta aula, iremos focar nos mais apropriados para visualizar quantidade: gráfico de linha, gráfico de dispersão e gráfico de barra. +Uma biblioteca excelente para criar tanto gráficos simples como sofisticados e de diversos tipos é o [Matplotlib](https://matplotlib.org/stable/index.html). Em geral, o processo de plotar dados com esta biblioteca inclui identificar as partes do seu dataframe que você quer focar, utilizando quaisquer transformações necessárias nestes dados, atribuindo parâmetros dos eixos x e y, decidindo qual tipo de gráfico usar, e então mostrando o gráfico. O Matplotlib oferece uma grande variedade de visualizações, mas, nesta aula, iremos focar nos mais apropriados para visualizar quantidade: gráfico de linha, gráfico de dispersão e gráfico de barra. > ✅ Use o melhor gráfico para se adaptar a estrutura dos dados e a história que você quer contar. -> - Para analisar tendências ao longo do tempo: linha +> - Para analisar tendências temporais: linha > - Para comparar valores: barra, coluna, pizza, dispersão > - Para mostrar como as partes se relacionam com o todo: pizza -> - Para mostrar a distrivuição dos dados: dispersão, barra +> - Para mostrar a distribuição dos dados: dispersão, barra > - Para mostrar tendências: linha, coluna > - Para mostrar relações entre valores: linha, dispersão, bolha -Se você tem um dataset e precisa descobrir quanto de um dado item está presente, uma das primeiras coisas que você precisará fazer é examinar seus valores. +Se você tem um dataset e precisa descobrir quanto de um dado elemento está presente, uma das primeiras coisas que você precisará fazer é examinar seus valores. +✅ Existem dicas ('cheat sheets') ótimas disponíveis para o Matplotlib [aqui](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) e [aqui](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). -✅ Existem dicas ('cheat sheets') muito boas disponíveis para o Matplotlib [aqui](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) e [aqui](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). +## Construindo um gráfico de linhas sobre os valores de envergadura de aves -## Construir um gráfico de linhas sobre os valores de envergadura de pássaros - -Abra o arquivo `notebook.ipynb` na raiz da pasta dessa aula e adicione uma célula. +Abra o arquivo `notebook.ipynb` na raiz da pasta desta aula e adicione uma célula. > Nota: os dados estão armazenados na raiz deste repositório na pasta `/data`. @@ -36,7 +35,8 @@ import matplotlib.pyplot as plt birds = pd.read_csv('../../data/birds.csv') birds.head() ``` -Esses dados são uma mistura de texto e números: + +Estes dados são uma mistura de texto e números: | | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan | @@ -47,7 +47,7 @@ Esses dados são uma mistura de texto e números: | 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | | 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | -Vamos começar plotando alguns dados numéricos com um simples gráfico de linhas. Suponha que você quer uma visualização da envergadura máxima desses pássaros interessantes. +Vamos começar plotando alguns dados numéricos com um simples gráfico de linhas. Suponha que você quer uma visualização da envergadura máxima (MaxWingspan) dessas aves interessantes. ```python wingspan = birds['MaxWingspan'] @@ -55,11 +55,11 @@ wingspan.plot() ``` ![Envergadura máxima](../images/max-wingspan.png) -O que é possível perceber imediatamente? Aparentemente existe pelo menos um outlier - e que envergadura! Uma envergadura de 2300 centímetros equivale a 23 metros - têm pterodáctilos voando em Minnesota? Vamos investigar. +O que é possível perceber imediatamente? Aparentemente existe pelo menos um outlier - e que envergadura! Uma envergadura de 2300 centímetros equivale a 23 metros - existem pterodáctilos voando em Minnesota? Vamos investigar. -Você poderia fazer uma ordenação rápida no Excel para encontrar esses outliers, que provavelmente são erros de digitação. No entanto, vamos continuar o processo de visualização trabalhando no gráfico. +Você poderia fazer uma ordenação rápida no Excel para encontrar estes outliers, que provavelmente são erros de digitação. No entanto, vamos continuar o processo de visualização trabalhando no gráfico. -Adicione labels (identificadores) no eixo x para mostrar quais tipos de pássaros estão sendo analisados: +Adicione identificadores (labels) no eixo x para mostrar os nomes das aves que estão sendo analisadas: ``` plt.title('Max Wingspan in Centimeters') @@ -75,7 +75,7 @@ plt.show() ``` ![Envergadura com labels (identificadores)](../images/max-wingspan-labels.png) -Mesmo com a rotação das labels em 45 graus, existem muitos para ler. Vamos tentar outra estratégia: identificar somente os outliers e colocar as labels dentro do gráfico. Você pode usarj um gráfico de dispersão para abrir mais espaço para identificação: +Mesmo com a rotação das labels em 45 graus, existem muitas para ler. Vamos tentar outra estratégia: identificar os outliers e somente colocar as labels deles dentro do gráfico. Você pode usar um gráfico de dispersão para abrir mais espaço para labels (identificadores): ```python plt.title('Max Wingspan in Centimeters') @@ -92,15 +92,15 @@ for i in range(len(birds)): plt.show() ``` -O que aconteceu aqui? Você usou `tick_params` para esconder as labels debaixo e entrão criou um loop sobre o dataset dos paśsaros. Depois, plotou o gráfico com pequenos círculos azuis usando `bo` e procurou por pássaros com envergadura maior que 500 e, se sim, exibiu a label ao lado do círculo. Você ajustou as labels no eixo y (`y * (1 - 0.05)`) e usou o nome do pássaro como label. +O que aconteceu aqui? Você usou `tick_params` para esconder as labels do eixo x e então criou um loop sobre o dataset das aves. Depois, plotou o gráfico com pequenos círculos azuis usando `bo` e procurou por aves com envergadura maior que 500 e, em caso positivo, exibiu a label ao lado do círculo. Você ajustou as labels no eixo y (`y * (1 - 0.05)`) e usou o nome da ave como label. O que você descobriu? ![outliers](../images/labeled-wingspan.png) -## Filtrar seus dados +## Filtrando seus dados -Apesar de grandes, tanto a Bald Eagle e o Prairie Falcon parecem ter valores errados, com um `0` a mais na envergadura máxima. É imporvável que você encontra uma Bald Eagle com envergadura de 25 metros, mas, se encontrar, por favor nos diga! Agora, vamos criar um novo dataframe sem esses dois outliers: +Apesar de grandes, tanto a Bald Eagle (águia-de-cabeça-branca) como o Prairie Falcon (Falcão-da-pradaria) parecem ter valores errados, com um `0` a mais na envergadura máxima (MaxWingspan). É improvável que você encontre uma águia-de-cabeça-branca com envergadura de 25 metros, mas, se encontrar, por favor nos diga! Agora, vamos criar um dataframe sem estes dois outliers: ```python plt.title('Max Wingspan in Centimeters') @@ -115,27 +115,27 @@ for i in range(len(birds)): plt.show() ``` -Ao remover esses outliers, seus dados ficaram mais coesos e compreensíveis. +Agora que estes outliers foram removidos, seus dados estão mais coesos e compreensíveis. ![Dispersão das envergaduras](../images/scatterplot-wingspan.png) -Agora que temos um dataset mais limpo ao menos em termos de envergadura, vamos aprender mais sobre esses pássaros +Agora que temos um dataset mais limpo ao menos em termos de envergadura, vamos aprender mais sobre estas aves. -Enquanto gráficos de linha e dispersão conseguem mostrar informações sobre valores e suas distribuições, nós queremos pensar sobre os valores intrínsecos a esse dataset. Você poderia criar visualizações para responder as seguintes perguntas sobre quantidade: +Enquanto gráficos de linha e dispersão conseguem mostrar informações sobre valores e suas distribuições, nós queremos pensar sobre os valores inerentes a este dataset. Você poderia criar visualizações para responder as seguintes perguntas sobre quantidade: -> Quantas categorias de pássaros existem, e quais são seus números? -> Quantos pássaros estão extintos, em risco de extinção, raros ou comuns? +> Quantas categorias de aves existem, e quais são seus valores? +> Quantas aves estão extintas, em risco de extinção, raras ou comuns? > Quantos gêneros e ordens da taxonomia de Lineu (nome científico) existem no dataset? -## Explorar gráfico de barras +## Explorando gráfico de barras -Gráfico de barras são práticos quando se precisa mostrar agrupamentos de dados. Vamos explorar as categorias de pássaros que existem nesse dataset para obrservar qual é o mais comum em quantidade. +Gráfico de barras são úteis quando precisamos mostrar agrupamentos de dados. Vamos explorar as categorias de aves que existem neste dataset para observar qual é o mais comum em quantidade. -No arquivo notebook, crie um gráfico de barras simples +No arquivo notebook, crie um gráfico de barras simples. -✅ Note que, você pode remover os dois pássaros outliers que foram identificados anteriormente, editar o erro de digitação na envergadura ou deixá-los nesses exercícios que não dependem dos valores da envergadura. +✅ Note que você pode remover as duas aves outliers que foram identificados anteriormente, editar o erro de digitação na envergadura ou deixá-los nestes exercícios que não dependem dos valores da envergadura. -Se você quer criar um gráfico de barras, você pode selecionar os dados que quer focar. Gráfico de barras pode ser criado a partir de dados brutos: +Ao criar um gráfico de barras, você pode selecionar os dados que quer focar. Gráficos de barras podem ser criados a partir de dados brutos: ```python birds.plot(x='Category', @@ -144,30 +144,31 @@ birds.plot(x='Category', title='Birds of Minnesota') ``` -![full data as a bar chart](../images/full-data-bar.png) -No entanto, esse gráfico de barras é ilegível porque existem muitos dados não agrupados. Você precisa selecionar somente os dados que quer plotar, então vamos olhar o comprimento de pássaros com base na sua categoria. +![todos os dados em um gráfico de barras](../images/full-data-bar.png) + +No entanto, este gráfico de barras é ilegível, porque existem muitos dados não agrupados. Você precisa selecionar somente os dados que quer plotar, então vamos olhar o comprimento das aves usando sua categoria como referência. -Filtre os dados para incluir somente a categoria do pássaro. +Filtre os dados para incluir somente a categoria da ave. ✅ Note que você usa o Pandas para lidar com os dados, e deixa a criação de gráficos para o Matplotlib. -Já que existem muitas categorias, você pode mostrar esse gráfico verticalmente e ajustar sua altura para acomodar todos os dados: +Já que existem muitas categorias, você pode mostrar este gráfico verticalmente e ajustar sua altura para acomodar todos os dados: ```python category_count = birds.value_counts(birds['Category'].values, sort=True) plt.rcParams['figure.figsize'] = [6, 12] category_count.plot.barh() ``` -![category and length](../images/category-counts.png) +![categoria e comprimento](../images/category-counts.png) -Esse gráfico de barras mostra uma boa visão do número de pássaros em cada categoria. Em um piscar de olhos, você vê que a maior quantidade de pássaros nessa região pertence à categoria de Ducks/Geese/Waterfowl (patos/gansos/cisnes). Minnesota é 'a terra de 10.000 lagos', então isso não é surpreendente! +Este gráfico de barras mostra uma boa visão do número de aves em cada categoria. Em um piscar de olhos, você vê que a maior quantidade de aves nesta região pertence à categoria de Ducks/Geese/Waterfowl (patos/gansos/cisnes). Minnesota é 'a terra de 10.000 lagos', então isto não é surpreendente! -✅ Tente contar outras quantidades nesse dataset. Algo te surpreende? +✅ Tente contabilizar outras quantidades deste dataset. Algo te surpreende? ## Comparando dados -Você pode tentar diferentes comparações de dados agrupados criando novos eixos. Tente comparar o comprimento máximo de um pássaro, baseado na sua categoria: +Você pode tentar diferentes comparações de dados agrupados criando novos eixos. Tente comparar o comprimento máximo de uma ave, com base na sua categoria: ```python maxlength = birds['MaxLength'] @@ -175,11 +176,11 @@ plt.barh(y=birds['Category'], width=maxlength) plt.rcParams['figure.figsize'] = [6, 12] plt.show() ``` -![comparing data](../images/category-length.png) +![comparando dados](../images/category-length.png) -Nada é surpreendente aqui: hummingbirds (beija-flores) tem o menor comprimento comparados com pelicans (pelicanos) ou geese (gansos). É muito bom quando os dados fazem sentido! +Nada é surpreendente aqui: hummingbirds (beija-flores) têm o menor comprimento enquanto pelicans (pelicanos) e geese (gansos) têm os maiores valores. É muito bom quando os dados fazem sentido! -Você pode criar visualizações mais interessantes de gráficos de barras ao sobrepor dados. Vamos sobrepor o comprimento mínimo e máximo de uma dada categoria de pássaros: +Você pode criar visualizações mais interessantes de gráficos de barras ao sobrepor dados. Vamos sobrepor o comprimento mínimo e máximo de uma dada categoria de ave: ```python minLength = birds['MinLength'] @@ -192,20 +193,20 @@ plt.barh(category, minLength) plt.show() ``` -Nesse gráfico, você pode ver o intervalo de comprimento mínimo e máximo por categoria de pássaro. Você pode seguramente dizer, a partir desses dados, que quanto maior o pássaro, maior seu intervalo de comprimento. Fascinante! +Neste gráfico, você pode ver o intervalo de comprimento mínimo e máximo por categoria de ave. Você pode seguramente dizer, a partir destes dados, que quanto maior a ave, maior o seu intervalo de comprimento. Fascinante! -![superimposed values](../images/superimposed.png) +![valores sobrepostos](../images/superimposed.png) ## 🚀 Desafio -Esse dataset de pássaros oferece uma riqueza de informações sobre os diferentes tipos de pássaros de um ecossistema particular. Tente achar na internet outros datasets com dados sobre pássaros. Pratique construir gráficos sobre esses pássaros e tente descobrir fatos que você ainda não havia percebido. +Este dataset de aves oferece uma riqueza de informações sobre os diferentes tipos de aves de um ecossistema particular. Tente achar na internet outros datasets com dados sobre aves. Pratique construir gráficos com eles e tente descobrir fatos que você ainda não havia percebido. ## [Quiz pós-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/17) ## Revisão e autoestudo -Essa primeira aula lhe deu informações sobre como usar o Matplotlib para visualizar quantidades. Procure por outras formas de trabalhar com dataset para visualização. [Plotly](https://github.com/plotly/plotly.py) é uma que não será abordada nas aulas, então dê uma olhada no que ela pode oferecer. +Esta primeira aula lhe deu informações sobre como usar o Matplotlib para visualizar quantidades. Procure por outras formas de trabalhar com dataset para visualização. [Plotly](https://github.com/plotly/plotly.py) é uma biblioteca que não será abordada nas aulas, então dê uma olhada no que ela pode oferecer. ## Tarefa -[Lines, Scatters, and Bars](assignment.md) +[Linhas, dispersão e barras](assignment.pt-br.md) From f8f55b1d923f7ceea146f7f52453d71f243c1fb7 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 21:27:55 -0300 Subject: [PATCH 105/254] Fix typo --- .../translations/assignment.pt-br.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md index fb5b62a3..ecff84e5 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md @@ -2,7 +2,7 @@ ## Instruções -Nessa aula, você trabalhou com gráfico de linhas, dispersão e barras para mostrar fatos interessantes sobre esse dataset. Nessa tarefa, explore mais a fundo o dataset para descobrir algo sobre um dado tipo de pássaro. Por exemplo, crie um notebook que mostre visualizações de todos os fatos interessantes que encontrar sobre os Snow Geese (gansos-das-neves). Use os três tipos de gráficos mencionados anteriormente para contar uma história em seu notebook. +Nesta aula, você trabalhou com gráfico de linhas, dispersão e barras para mostrar fatos interessantes sobre esse dataset. Nessa tarefa, explore mais a fundo o dataset para descobrir algo sobre um dado tipo de pássaro. Por exemplo, crie um notebook que mostre visualizações de todos os fatos interessantes que encontrar sobre os Snow Geese (gansos-das-neves). Use os três tipos de gráficos mencionados anteriormente para contar uma história em seu notebook. ## Rubrica From 5a73ca0eea28292a3485d320ad57577dd7f32e04 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 21:30:05 -0300 Subject: [PATCH 106/254] Rephrase sentences --- .../translations/assignment.pt-br.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md index ecff84e5..7a180dc3 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/assignment.pt-br.md @@ -2,7 +2,7 @@ ## Instruções -Nesta aula, você trabalhou com gráfico de linhas, dispersão e barras para mostrar fatos interessantes sobre esse dataset. Nessa tarefa, explore mais a fundo o dataset para descobrir algo sobre um dado tipo de pássaro. Por exemplo, crie um notebook que mostre visualizações de todos os fatos interessantes que encontrar sobre os Snow Geese (gansos-das-neves). Use os três tipos de gráficos mencionados anteriormente para contar uma história em seu notebook. +Nesta aula, você trabalhou com gráficos de linhas, dispersão e barras para mostrar fatos interessantes sobre este dataset. Nesta tarefa, explore o mesmo dataset mais a fundo para descobrir algo sobre um dado tipo de ave. Por exemplo, crie um notebook que mostre visualizações de todos os fatos interessantes que encontrar sobre os Snow Geese (gansos-das-neves). Use os três tipos de gráficos mencionados anteriormente para contar uma história em seu notebook. ## Rubrica From 3662f820d87b37033bc68b86a513f39797029713 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 22:47:34 -0300 Subject: [PATCH 107/254] Fix typos and change the links Revised and fixed typos, rephrased some sentences. Changed the path to the images. --- .../translations/README.pt-br.md | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md b/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md index 1ce0f827..d4e0c8f0 100644 --- a/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md +++ b/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md @@ -1,17 +1,17 @@ # Visualizando distribuições -|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)| +|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/10-Visualizing-Distributions.png)| |:---:| | Visualizando distribuições - _Sketchnote por [@nitya](https://twitter.com/nitya)_ | -Na aula anterior, você aprendeu fatos interessantes sobre um dataset de pássaros de Minnesota. Você encontrou dados incorretos ao visualizar outliers e olhou as diferenças entre categorias de pássaros com base no seu comprimento máximo. +Na aula anterior, você aprendeu fatos interessantes sobre um dataset de aves de Minnesota. Você encontrou dados incorretos ao visualizar outliers e olhou as diferenças entre categorias de aves com base no seu comprimento máximo. ## [Quiz pré-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) -## Explore o dataset de pássaros +## Explorando o dataset de aves -Outra forma de explorar os dados é olhar para sua distribuição, ou como os dados estão organizados ao longo do eixo. Por exemplo, talvez você gostaria de aprender sobre a distribuição geral, nesse dataset, do máximo de envergadura (wingspan) ou máximo de massa corporal (body mass) dos pássaros de Minnesota. +Outra forma de explorar os dados é olhar para sua distribuição, ou como os dados estão organizados ao longo do eixo. Por exemplo, talvez você gostaria de aprender sobre a distribuição geral, nesse dataset, do máximo de envergadura (wingspan) ou máximo de massa corporal (body mass) das aves de Minnesota. -Vamos descobrir alguns fatos sobre as distribuições de dados nesse dataset. No arquivo _notebook.ipynb_ na raiz do diretório dessa aula, importe Pandas, Matplotlib, e seus dados: +Vamos descobrir alguns fatos sobre as distribuições de dados neste dataset. No arquivo _notebook.ipynb_, na raiz do diretório dessa aula, importe Pandas, Matplotlib, e os dados: ```python import pandas as pd @@ -32,42 +32,42 @@ plt.xlabel('Max Length') plt.show() ``` -Isso nos dá uma visão geral da distribuição de comprimento de corpo por Ordem do pássaro, mas não é a forma ótima de mostrar a distribuição real. Essa tarefa geralmente é realizada usando um histograma. +Isso nos dá uma visão geral da distribuição de comprimento do corpo por Ordem da ave, mas não é a melhor forma de mostrar a distribuição real. Essa tarefa geralmente é realizada usando um histograma. ## Trabalhando com histogramas -O Matplotlib oferece formas muito boas de visualizar distribuição dos dados usando histogramas. Esse tipo de gráfico é parecido com um gráfico de barras onde a distribuiçao pode ser vista por meio da subida e descida das barras. Para construir um histograma, você precisa de dados numéricos. Para construir um histograma, você pode plotar um gráfico definindo o tipo (kind) como 'hist' para histograma. Esse gráfico mostra a distribuição de massa corporal máxima (MaxBodyMass) para todo o intervalo numérico dos dados. Ao dividir um certo vetor de dados em intervalos (bins) menores, vemos a distribuição dos valores: +O Matplotlib oferece formas muito boas de visualizar distribuição dos dados usando histogramas. Este tipo de gráfico é parecido com um gráfico de barras onde a distribuição pode ser vista por meio da subida e descida das barras. Para construir um histograma, você precisa de dados numéricos e você pode plotar um gráfico definindo o tipo (kind) como 'hist' para histograma. Este gráfico mostra a distribuição de massa corporal máxima (MaxBodyMass) para todo o intervalo numérico dos dados. Ao dividir um certo vetor de dados em intervalos (bins) menores, vemos a distribuição dos valores: ```python birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) plt.show() ``` -![Distribuição de todo o dataset](images/dist1.png) +![Distribuição de todo o dataset](../images/dist1.png) -Como você pode ver, a maior parte dos mais de 400 pássaros cai no intervalo de menos de 2000 para a massa corporal máxima. Obtenha mais conhecimento dos dados mudando o parâmetro de intervalo (`bins`) para um número maior, como 30: +Como você pode ver, a maior parte das mais de 400 aves cai no intervalo de menos de 2000 para a massa corporal máxima. Obtenha mais conhecimento dos dados mudando o parâmetro de intervalo (`bins`) para um número maior, como 30: ```python birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) plt.show() ``` -![Distribuição de todo o dataset com valores maiores de intervalo](images/dist2.png) +![Distribuição de todo o dataset com valores maiores de intervalo](../images/dist2.png) -Esse gráfico mostra a distribuição de forma mais detalhada. Um gráfico menos concentrado na esquerda pode ser criado garantindo que você só seleciona os dados dentro de um certo intervalo: +Este gráfico mostra a distribuição de forma mais detalhada. Um gráfico menos concentrado na esquerda pode ser criado garantindo que você só selecione os dados dentro de um certo intervalo: -Filtre seus dados para obter somente os pássaros que possuem menos de 60 de massa corporal, e mostre 40 intervalos (`bins`): +Filtre seus dados para obter somente as aves que possuem menos de 60 de massa corporal, e mostre 40 intervalos (`bins`): ```python filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) plt.show() ``` -![Histograma filtrado](images/dist3.png) +![Histograma filtrado](../images/dist3.png) -✅ Tente outros filtros e pontos de dados (data points). Para ver a distribuição completa dos dados, remova o filtro `['MaxBodyMass']` para mostrar as distribuições com identificação. +✅ Tente outros filtros e pontos de dados (data points). Para ver a distribuição completa dos dados, remova o filtro `['MaxBodyMass']` para mostrar as distribuições com labels (identificadores). -O histrograma também oferece algumas cores legais e identificadores (labels) melhorados: +O histograma também oferece algumas cores legais e labels (identificares) melhorados: Crie um histograma 2D para comparar a relação entre duas distribuições. Vamos comparar massa corporal máxima vs. comprimento máximo (`MaxBodyMass` vs. `MaxLength`). O Matplotlib possui uma forma integrada de mostrar convergência usando cores mais vivas: @@ -81,13 +81,13 @@ hist = ax.hist2d(x, y) Aparentemente, existe uma suposta correlação entre esses dois elementos ao longo de um eixo esperado, com um forte ponto de convergência: -![Histrograma 2D](images/2D.png) +![Histograma 2D](../images/2D.png) -Por definição, os histogramas funcionam para dados numéricos. E se você precisar ver distribuições de dados textuais? +Por definição, os histogramas funcionam para dados numéricos. Mas, e se você precisar ver distribuições de dados textuais? ## Explore o dataset e busque por distribuições usando dados textuais -Esse dataset também inclui informações relevantes sobre a categoria de pássaro e seu gênero, espécie e família, assim como seu status de conservação. Vamos explorar mais a fundo essa informação sobre conservação. Qual é a distribuição dos pássaros de acordo com seu status de conservação? +Este dataset também inclui informações relevantes sobre a categoria de ave e seu gênero, espécie e família, assim como seu status de conservação. Vamos explorar mais a fundo essa informação sobre conservação. Qual é a distribuição das aves de acordo com seu status de conservação? > ✅ No dataset, são utilizados vários acrônimos para descrever o status de conservação. Esses acrônimos vêm da [IUCN Red List Categories](https://www.iucnredlist.org/), uma organização que cataloga os status das espécies. > @@ -98,7 +98,7 @@ Esse dataset também inclui informações relevantes sobre a categoria de pássa > - NT: Near Threatened (Quase ameaçada) > - VU: Vulnerable (Vulnerável) -Esses são valores textuais, então será preciso transformá-los para criar um histograma. Usando o dataframe filteredBirds, mostre seu status de conservação juntamente com sua envergadura mínima (MinWingspan). O que você vê? +Estes são valores textuais, então será preciso transformá-los para criar um histograma. Usando o dataframe filteredBirds, mostre seu status de conservação com sua envergadura mínima (MinWingspan). O que você vê? ```python x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] @@ -121,7 +121,7 @@ plt.gca().set(title='Conservation Status', ylabel='Max Body Mass') plt.legend(); ``` -![Compilação envergadura e conservação](images/histogram-conservation.png) +![Compilação envergadura e conservação](../images/histogram-conservation.png) Aparentemente não existe uma correlação forte entre a envergadura mínima e o status de conservação. Teste outros elementos do dataset usando esse método. Você também pode tentar outros filtros. Você encontrou alguma correlação? @@ -129,9 +129,9 @@ Aparentemente não existe uma correlação forte entre a envergadura mínima e o Você pode ter percebido que até agora os histogramas são quebrados em degraus e não fluem de forma suave em uma curva. Para mostrar um gráfico de densidade mais 'fluido', você pode tentar usar a estimativa de densidade kernel (kde). -Para trabalhar com gráficos de densidade, acostume-se com uma nova biblioteca de gráficos, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). +Para trabalhar com gráficos de densidade, acostume-se com uma nova biblioteca de gráficos, o [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). -Depois de carregar o Seaborn, tente um gráfico de densidade básico: +Após carregar o Seaborn, tente um gráfico de densidade básico: ```python import seaborn as sns @@ -139,10 +139,9 @@ import matplotlib.pyplot as plt sns.kdeplot(filteredBirds['MinWingspan']) plt.show() ``` -![Gráfico de densidade](images/density1.png) +![Gráfico de densidade](../images/density1.png) -Você consegue ver como o gráfico reflete o anterior (de envergadura mínima); só é mais fluido/suave. De acordo com a documentação do Seaborn, "" -"Em comparação com o histograma, KDE pode produzir um gráfico que é menos confuso e mais legível, especialmente quando plotamos múltiplas distribuições. Mas pode potencialmente introduzir distorções se a distribuição usada é limitada ou não suave. Como um histograma, a qualidade da representação também depende na escolha de bons parâmetros suavizadores (smoothing parameters)." [créditos](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Em outras palavras, dados discrepantes (outliers) vão fazer seus gráficos se comportarem mal, como sempre. +Você consegue ver como o gráfico reflete o anterior (de envergadura mínima); só é mais fluido/suave. De acordo com a documentação do Seaborn, "Em comparação com o histograma, o KDE pode produzir um gráfico que é menos confuso e mais legível, especialmente quando plotamos múltiplas distribuições. Mas pode potencialmente introduzir distorções se a distribuição usada é limitada ou não suave. Como um histograma, a qualidade da representação também depende na escolha de bons parâmetros suavizadores (smoothing parameters)." [créditos](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Em outras palavras, dados discrepantes (outliers) vão fazer seus gráficos se comportarem mal, como sempre. Se você quer revisitar a linha irregular/dentada MaxBodyMass (massa corporal máxima) no segundo gráfico construído, você pode suavizá-la muito bem recriando o seguinte método: @@ -150,7 +149,7 @@ Se você quer revisitar a linha irregular/dentada MaxBodyMass (massa corporal m sns.kdeplot(filteredBirds['MaxBodyMass']) plt.show() ``` -![Linha suave massa corporal](images/density2.png) +![Linha suave massa corporal](../images/density2.png) Se você quer uma linha suave, mas não tão suave, mude o parâmetro `bw_adjust`: @@ -158,11 +157,11 @@ Se você quer uma linha suave, mas não tão suave, mude o parâmetro `bw_adjust sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) plt.show() ``` -![Linha menos suave massa corporal](images/density3.png) +![Linha menos suave massa corporal](../images/density3.png) ✅ Leia sobre os parâmetros disponíveis para esse tipo de gráfico e experimente! -Esse tipo de gráfico oferece visualizações bonitas e esclarecedoras. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por pássaro por Ordem: +Esse tipo de gráfico oferece visualizações bonitas e esclarecedoras. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por ave por Ordem: ```python sns.kdeplot( @@ -172,17 +171,17 @@ sns.kdeplot( ) ``` -![Massa corporal por Ordem](images/density4.png) +![Massa corporal por Ordem](../images/density4.png) -Você também pode mapear a densidade de várias variáveis em um só gráfico. Teste usar o comprimento máximo (MaxLength) e mínimo (MinLength) de um pássaro comparado com seu status de conservação: +Você também pode mapear a densidade de várias variáveis em um só gráfico. Teste usar o comprimento máximo (MaxLength) e mínimo (MinLength) de uma ave comparado com seu status de conservação: ```python sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") ``` -![Múltiplas densidades sobrepostas](images/multi.png) +![Múltiplas densidades sobrepostas](../images/multi.png) -Talvez valha a pena pesquisar mais a fundo se o cluster de pássaros vulneráveis ('Vulnerable') de acordo com seus comprimentos tem significado ou não. +Talvez valha a pena pesquisar mais a fundo se o cluster de aves vulneráveis ('Vulnerable') de acordo com seus comprimentos têm significado ou não. ## 🚀 Desafio @@ -192,8 +191,8 @@ Histogramas são um tipo mais sofisticado de gráfico em relação a simples gr ## Revisão e autoestudo -Nessa aula, você usou o Matplotlib e começou a trabalhar com o Seaborn para mostrar gráficos mais avançados. Pesquise sobre o `kdeplot` no Seaborn, uma "curva de densidade de probabilidade contínua em uma ou mais dimensões". Leia a [documentação](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) para entender como funciona. +Nesta aula, você usou o Matplotlib e começou a trabalhar com o Seaborn para mostrar gráficos mais avançados. Pesquise sobre o `kdeplot` no Seaborn, uma "curva de densidade de probabilidade contínua em uma ou mais dimensões". Leia a [documentação](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) para entender como funciona. ## Tarefa -[Use suas habilidades](assignment.md) +[Aplique seus conhecimentos](assignment.pt-br.md) From 807896ff97288acce91c23450ff60af88182d0b9 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 22:49:55 -0300 Subject: [PATCH 108/254] Fix typos --- .../translations/assignment.pt-br.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md b/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md index ec63b0d7..07bbf7bb 100644 --- a/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md +++ b/3-Data-Visualization/10-visualization-distributions/translations/assignment.pt-br.md @@ -1,8 +1,8 @@ -# Aplique suas habilidades +# Aplique seus conhecimentos ## Instruções -Até agora, você trabalhou com o dataset de pássaros de Minnesota para descobrir informação sobre quantidades de pássaros e densidade populacional. Pratique essas técnicas usando um outro dataset, talvez do [Kaggle](https://www.kaggle.com/). Faça um notebook que conta uma história sobre esse dataset, e lembre-se de usar histogramas para isso. +Até agora, você trabalhou com o dataset de aves de Minnesota para descobrir informação sobre quantidades de aves e densidade populacional. Pratique essas técnicas usando outro dataset, talvez do [Kaggle](https://www.kaggle.com/). Faça um notebook que conta uma história sobre esse dataset, e lembre-se de usar histogramas para isso. ## Rubrica From 0eaa36f0faae13ae9ec4e8b81982ba67db9a3214 Mon Sep 17 00:00:00 2001 From: Fernanda Kawasaki <50497814+fernandakawasaki@users.noreply.github.com> Date: Sat, 16 Oct 2021 22:51:25 -0300 Subject: [PATCH 109/254] Fix typos --- .../translations/README.pt-br.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md b/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md index d4e0c8f0..6886cefe 100644 --- a/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md +++ b/3-Data-Visualization/10-visualization-distributions/translations/README.pt-br.md @@ -9,9 +9,9 @@ Na aula anterior, você aprendeu fatos interessantes sobre um dataset de aves de ## [Quiz pré-aula](https://red-water-0103e7a0f.azurestaticapps.net/quiz/18) ## Explorando o dataset de aves -Outra forma de explorar os dados é olhar para sua distribuição, ou como os dados estão organizados ao longo do eixo. Por exemplo, talvez você gostaria de aprender sobre a distribuição geral, nesse dataset, do máximo de envergadura (wingspan) ou máximo de massa corporal (body mass) das aves de Minnesota. +Outra forma de explorar os dados é olhar para sua distribuição, ou como os dados estão organizados ao longo do eixo. Por exemplo, talvez você gostaria de aprender sobre a distribuição geral, neste dataset, do máximo de envergadura (wingspan) ou máximo de massa corporal (body mass) das aves de Minnesota. -Vamos descobrir alguns fatos sobre as distribuições de dados neste dataset. No arquivo _notebook.ipynb_, na raiz do diretório dessa aula, importe Pandas, Matplotlib, e os dados: +Vamos descobrir alguns fatos sobre as distribuições de dados neste dataset. No arquivo _notebook.ipynb_, na raiz do diretório desta aula, importe Pandas, Matplotlib, e os dados: ```python import pandas as pd @@ -32,7 +32,7 @@ plt.xlabel('Max Length') plt.show() ``` -Isso nos dá uma visão geral da distribuição de comprimento do corpo por Ordem da ave, mas não é a melhor forma de mostrar a distribuição real. Essa tarefa geralmente é realizada usando um histograma. +Isso nos dá uma visão geral da distribuição de comprimento do corpo por Ordem da ave, mas não é a melhor forma de mostrar a distribuição real. Esta tarefa geralmente é realizada usando um histograma. ## Trabalhando com histogramas @@ -79,7 +79,7 @@ fig, ax = plt.subplots(tight_layout=True) hist = ax.hist2d(x, y) ``` -Aparentemente, existe uma suposta correlação entre esses dois elementos ao longo de um eixo esperado, com um forte ponto de convergência: +Aparentemente, existe uma suposta correlação entre estes dois elementos ao longo de um eixo esperado, com um forte ponto de convergência: ![Histograma 2D](../images/2D.png) @@ -87,9 +87,9 @@ Por definição, os histogramas funcionam para dados numéricos. Mas, e se você ## Explore o dataset e busque por distribuições usando dados textuais -Este dataset também inclui informações relevantes sobre a categoria de ave e seu gênero, espécie e família, assim como seu status de conservação. Vamos explorar mais a fundo essa informação sobre conservação. Qual é a distribuição das aves de acordo com seu status de conservação? +Este dataset também inclui informações relevantes sobre a categoria de ave e seu gênero, espécie e família, assim como seu status de conservação. Vamos explorar mais a fundo esta informação sobre conservação. Qual é a distribuição das aves de acordo com seu status de conservação? -> ✅ No dataset, são utilizados vários acrônimos para descrever o status de conservação. Esses acrônimos vêm da [IUCN Red List Categories](https://www.iucnredlist.org/), uma organização que cataloga os status das espécies. +> ✅ No dataset, são utilizados vários acrônimos para descrever o status de conservação. Estes acrônimos vêm da [IUCN Red List Categories](https://www.iucnredlist.org/), uma organização que cataloga os status das espécies. > > - CR: Critically Endangered (Criticamente em perigo) > - EN: Endangered (Em perigo) @@ -123,7 +123,7 @@ plt.legend(); ![Compilação envergadura e conservação](../images/histogram-conservation.png) -Aparentemente não existe uma correlação forte entre a envergadura mínima e o status de conservação. Teste outros elementos do dataset usando esse método. Você também pode tentar outros filtros. Você encontrou alguma correlação? +Aparentemente não existe uma correlação forte entre a envergadura mínima e o status de conservação. Teste outros elementos do dataset usando este método. Você também pode tentar outros filtros. Você encontrou alguma correlação? ## Gráfico de densidade (Estimativa de densidade kernel) @@ -159,9 +159,9 @@ plt.show() ``` ![Linha menos suave massa corporal](../images/density3.png) -✅ Leia sobre os parâmetros disponíveis para esse tipo de gráfico e experimente! +✅ Leia sobre os parâmetros disponíveis para este tipo de gráfico e experimente! -Esse tipo de gráfico oferece visualizações bonitas e esclarecedoras. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por ave por Ordem: +Este tipo de gráfico oferece visualizações bonitas e esclarecedoras. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por ave por Ordem: ```python sns.kdeplot( From 50e15364df70555b082abb91a7ecf5ad9f463042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9D=B4=EB=93=A0?= Date: Sun, 17 Oct 2021 22:18:38 +0900 Subject: [PATCH 110/254] start translate Englisth to Korean --- 6-Data-Science-In-Wild/translations/README.ko.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 6-Data-Science-In-Wild/translations/README.ko.md diff --git a/6-Data-Science-In-Wild/translations/README.ko.md b/6-Data-Science-In-Wild/translations/README.ko.md new file mode 100644 index 00000000..e69de29b From 469d826295450dbdc435cbfdfc725967b5906ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9D=B4=EB=93=A0?= Date: Sun, 17 Oct 2021 22:20:11 +0900 Subject: [PATCH 111/254] start translate Englisth to Korean --- .../translations/README.ko.md | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md new file mode 100644 index 00000000..b1f63a44 --- /dev/null +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md @@ -0,0 +1,146 @@ +# Data Science in the Real World + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +|:----------------------------------------------------------------------------------------------------------------:| +| Data Science In The Real World - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +We're almost at the end of this learning journey! 우리는 + +우리는 데이터 사이언스와 윤리의 정의로 시작해서, 데이터 분석과 시각화를 위한 여러가지 툴 & 테크닉을 살펴보았고, 데이터 사이언스의 라이프 사이클을 검토하였고, 클라우드 컴퓨팅 서비스를 통한 데이터 사이언스 워크플로우 확장 및 자동화에 대해 알아보았습니다. 그래서 이제 당신은 아마도 _"내가 배운 것들을 현실에서는 어떻게 엮어서 사용하지?"_ 라는 의문점이 생길 것입니다. + +이 레슨에서, 우리는 산업 전반에 걸친 데이터 과학의 실제 적용 사례를 살펴보고 연구, 디지털 인문학, 지속 가능성, 맥락에 대한 구체적인 예를 살펴보겠습니다. 학생 프로젝트 기회를 살펴보고 유용한 리소스로 마무리하여 학습 여정을 계속 이어나갈 수 있도록 도와드리겠습니다! + +## Pre-Lecture Quiz + +[Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/38) + +## Data Science + Industry + +AI의 민주화 덕분에, 개발자들은 이제 사용자 경험과 개발 워크플로우에 대한 AI 중심의 의사 결정 및 데이터 기반 통찰력을 설계하고 통합하는 것이 더 쉬워지고 있습니다. 이것은 현실의 산업에서 데이터 사이언스가 어떻게 "적용" 되는지에 대한 몇 가지의 예입니다: + +* [구글 독감 트렌드 (Google Flu Trends)](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) 데이터 사이언스를 사용하여 검색어와 독감 트렌드를 연관시켰습니다. used data science to correlate search terms with flu trends. 이 접근 방식에는 결함이 있지만 데이터 기반 의료 예측의 가능성(및 과제)에 대한 인식을 높였습니다. + + [UPS 라우팅 예측 (UPS Routing Predictions)](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - UPS가 데이터 사이언스와 머신러닝을 이용하여 배송을 위한 최적의 루트를 날씨 조건, 교통 패턴, 배달 마감일 등을 고려하여 어떻게 예측하는지에 대해 설명합니다. + +* [NYC 택시 루트 시각화 (NYC Taxicab Route Visualization)](http://chriswhong.github.io/nyctaxi/) - [정보 자유법 (Freedom Of Information Laws)](https://chriswhong.com/open-data/foil_nyc_taxi/) 을 사용하여 수집된 데이터는 뉴욕 택시 생활의 하루를 시각화하는 데 도움이 되었고, 뉴욕 택시들이 바쁜 도시를 어떻게 돌아다니는지, 그들이 버는 돈, 그리고 매 24시간 동안의 여행 기간을 이해하는 데 도움이 되었습니다. + +* [우버 데이터 사이언스 워크벤치 (Uber Data Science Workbench)](https://eng.uber.com/dsw/) - 요금, 안전, 사기 탐지 및 탐색 결정에 도움이 되는 데이터 분석 도구를 구축하기 위해 *매일* 수백만 개의 uber 여행에서 수집된 데이터(픽업 & 하차 위치, 이동 시간, 선호 경로 등)를 사용합니다. + +* [스포츠 분석 (Sports Analytics)](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - 인재 스카우트, 스포츠 도박, 재고/장소 관리를 적용한 *예측 분석* (팀 및 선수 분석 - Moneyball 을 생각해보세요 - 그리고 팬 관리) 및 *데이터 시각화* (팀 & 팬 대시보드, 게임 등) 에 중점을 둡니다. + +* [금융 산업에서의 데이터 사이언스 (Data Science in Banking)](https://data-flair.training/blogs/data-science-in-banking/) - 리스크 모델링 및 부정 행위 방지, 고객 세분화, 실시간 예측 및 추천 시스템에 이르기까지 다양한 적용을 통해 금융 산업에서 데이터 과학의 가치를 강조합니다. 예측 분석은 또한 [신용 점수 (credit scores)](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit) 와 같은 중요한 척도를 도출합니다. + +* [헬스케어에서의 데이터 사이언스 (Data Science in Healthcare)](https://data-flair.training/blogs/data-science-in-healthcare/) - 의료 영상(예: MRI, X-Ray, CT-Scan), 유전체학(DNA 시퀀싱), 약물 개발(위험 평가, 성공 예측), 예측 분석(환자 치료 & 공급 물류), 질병 추적 & 예방 등의 적용을 강조합니다. + + + +![Data Science Applications in The Real World](../images/data-science-applications.png) 이미지 출처: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) + +위 그림은 데이터 사이언스 기술을 적용하기 위한 다른 도메인과 예를 보여줍니다. 더 많은 적용 사례를 보고싶나요? 아래의 [Review & Self Study](?id=review-amp-self-study)를 살펴보세요. + +## Data Science + Research + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +|:---------------------------------------------------------------------------------------------------------------:| +| Data Science & Research - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +현실 속에서 종종 규모에 맞는 산업 활용 사례에 초점을 맞추지만, _연구_ 에 적용된 것과 프로젝트는 다음 두 가지 관점에서 유용할 수 있습니다: + +* _혁신 기회_ - 차세대 애플리케이션을 위한 선진 개념의 신속한 프로토타이핑 및 사용자 경험의 테스트를 살펴봅니다. +* _배포 과제_ - 현실 세계에서 데이터 사이언스 기술의 잠재적인 피해 또는 의도하지 않은 결과를 조사합니다. + +학생들에게 이러한 연구 프로젝트는 주제에 대한 이해를 향상시킬 수 있는 학습 기회와 협업 기회를 제공할 수 있으며, 관심 분야에서 일하는 관련 직원 또는 팀과의 인식과 참여를 넓힐 수 있습니다. 그렇다면 연구 프로젝트는 어떻게 생겼고 어떻게 영향을 미칠 수 있을까요? + +이 예제를 한 번 봅시다 - Joy Buolamwini (MIT Media Labs)의 [MIT 젠더 쉐이즈 연구 (MIT Gender Shades Study)](http://gendershades.org/overview.html)의 [연구 (signature research paper)](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) co-authored with Timnit Gebru (then at Microsoft Research) that focused on + +* **무엇:** The objective of the research project was to _evaluate bias present in automated facial analysis algorithms and datasets_ based on gender and skin type. +* **Why:** Facial analysis is used in areas like law enforcement, airport security, hiring systems and more - contexts where inaccurate classifications (e.g., due to bias) can cause potential economic and social harms to affected individuals or groups. Understanding (and eliminating or mitigating) biases is key to fairness in usage. +* **How:** Researchers recongized that existing benchmarks used predominantly lighter-skinned subjects, and curated a new data set (1000+ images) that was _more balanced_ by gender and skin type. The data set was used to evaluate the accuracy of three gender classification products (from Microsoft, IBM & Face++). + +Results showed that though overall classification accuracy was good, there was a noticeable difference in error rates between various subgroups - with **misgendering** being higher for females or persons with darker skin types, indicative of bias. + +**Key Outcomes:** Raised awareness that data science needs more _representative datasets_ (balanced subgroups) and more _inclusive teams_ (diverse backgrounds) to recognize and eliminate or mitigate such biases earlier in AI solutions. Research efforts like this are also instrumental in many organizations defining principles and practices for _responsible AI_ to improve fairness across their AI products and processes. + +**Want to learn about relevant research efforts in Microsoft?** + +* Check out [Microsoft Research Projects](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) on Artificial Intelligence. +* Explore student projects from [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). +* Check out the [Fairlearn](https://fairlearn.org/) project and [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) initiatives. + +## Data Science + Humanities + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | +|:-----------------------------------------------------------------------------------------------------------------:| +| Data Science & Digital Humanities - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +Digital Humanities [has been defined](https://digitalhumanities.stanford.edu/about-dh-stanford) as "a collection of practices and approaches combining computational methods with humanistic inquiry". [Stanford projects](https://digitalhumanities.stanford.edu/projects) like _"rebooting history"_ and _"poetic thinking"_ illustrate the linkage between [Digital Humanities and Data Science](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - emphasizing techniques like network analysis, information visualization, spatial and text analysis that can help us revisit historical and literary data sets to derive new insights and perspective. + +*Want to explore and extend a project in this space?* + +Check out ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - a great example from [Jen Looper](https://twitter.com/jenlooper) that asks how we can use data science to revisit familiar poetry and re-evaluate its meaning and the contributions of its author in new contexts. For instance, _can we predict the season in which a poem was authored by analyzing its tone or sentiment_ - and what does this tell us about the author's state of mind over the relevant period? + +To answer that question, we follow the steps of our data science lifecycle: + +* [`Data Acquisition`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - to collect a relevant dataset for analysis. Options including using an API ( e.g., [Poetry DB API](https://poetrydb.org/index.html)) or scraping web pages (e.g., [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) using tools like [Scrapy](https://scrapy.org/). +* [`Data Cleaning`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explains how text can be formatted, sanitized and simplified using basic tools like Visual Studio Code and Microsoft Excel. +* [`Data Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explains how we can now import the dataset into "Notebooks" for analysis using Python packages (like pandas, numpy and matplotlib) to organize and visualize the data. +* [`Sentiment Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explains how we can integrate cloud services like Text Analytics, using low-code tools like [Power Automate](https://flow.microsoft.com/en-us/) for automated data processing workflows. + +Using this workflow, we can explore the seasonal impacts on the sentiment of the poems, and help us fashion our own perspectives on the author. Try it out yourself - then extend the notebook to ask other questions or visualize the data in new ways! + +> You can use some of the tools in the [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) to pursue these avenues of inquiry + +## Data Science + Sustainability + +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | +|:---------------------------------------------------------------------------------------------------------------------:| +| Data Science & Sustainability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +The [2030 Agenda For Sustainable Development](https://sdgs.un.org/2030agenda) - adopted by all United Nations members in 2015 - identifies 17 goals including ones that focus on **Protecting the Planet** from degradation and the impact of climate change. The [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) initiative supports these goals by exploring ways in which technology solutions can support and build more sustainable futures with a [focus on 4 goals](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - being carbon negative, water positive, zero waste, and bio-diverse by 2030. + +Tackling these challenges in a scalable and timely manner requires cloud-scale thinking - and large scale data. The [Planetary Computer](https://planetarycomputer.microsoft.com/) initiative provides 4 components to help data scientists and developers in this effort: + +* [Data Catalog](https://planetarycomputer.microsoft.com/catalog) - with petabytes of Earth Systems data (free & Azure-hosted). +* [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - to help users search for relevant data across space and time. +* [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - managed environment for scientists to process massive geospatial datasets. +* [Applications](https://planetarycomputer.microsoft.com/applications) - showcase use cases & tools for sustainability insights. + +**The Planetary Computer Project is currently in preview (as of Sep 2021)** - here's how you can get started contributing to sustainability solutions using data science. + +* [Request access](https://planetarycomputer.microsoft.com/account/request) to start exploration and connect with peers. +* [Explore documentation](https://planetarycomputer.microsoft.com/docs/overview/about) to understand supported datasets and APIs. +* Explore applications like [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) for inspiration on application ideas. + +Think about how you can use data visualization to expose or amplify relevant insights into areas like climate change and deforestation. Or think about how insights can be used to create new user experiences that motivate behavioral changes for more sustainable living. + +## Data Science + Students + +We've talked about real-world applications in industry and research, and explored data science application examples in digital humanities and sustainability. So how can you build your skills and share your expertise as data science beginners? + +Here are some examples of data science student projects to inspire you. + +* [MSR Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) with GitHub [projects](https://github.com/msr-ds3) exploring topics like: + - [Racial Bias in Police Use of Force](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [Reliability of NYC Subway System](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) +* [Digitizing Material Culture: Exploring socio-economic distributions in Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc)- from [Ornella Altunyan](https://twitter.com/ornelladotcom) and team at Claremont, using using [ArcGIS StoryMaps](https://storymaps.arcgis.com/). + +## 🚀 Challenge + +Search for articles that recommend data science projects that are beginner friendly - like [these 50 topic areas](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) or [these 21 project ideas](https://www.intellspot.com/data-science-project-ideas) or [these 16 projects with source code](https://data-flair.training/blogs/data-science-project-ideas/) that you can deconstruct and remix. And don't forget to blog about your learning journeys and share your insights with all of us. + +## Post-Lecture Quiz + +[Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/39) + +## Review & Self Study + +Want to explore more use cases? Here are a few relevant articles: + +* [17 Data Science Applications and Examples](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021 +* [11 Breathtaking Data Science Applications in Real World](https://myblindbird.com/data-science-applications-real-world/) - May 2021 +* [Data Science In The Real World](https://towardsdatascience.com/data-science-in-the-real-world/home) - Article Collection +* Data Science In: [Education](https://data-flair.training/blogs/data-science-in-education/), [Agriculture](https://data-flair.training/blogs/data-science-in-agriculture/), [Finance](https://data-flair.training/blogs/data-science-in-finance/), [Movies](https://data-flair.training/blogs/data-science-at-movies/) & more. + + ## Assignment + +[Explore A Planetary Computer Dataset](assignment.md) From 6a03de61240c658610ea3e5e0e151a8b28807a5e Mon Sep 17 00:00:00 2001 From: Eden Park Date: Sun, 17 Oct 2021 22:24:59 +0900 Subject: [PATCH 112/254] Update README.ko.md change image path --- .../20-Real-World-Examples/translations/README.ko.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md index b1f63a44..608cb60b 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md @@ -1,6 +1,6 @@ # Data Science in the Real World -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-RealWorld.png) | |:----------------------------------------------------------------------------------------------------------------:| | Data Science In The Real World - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | @@ -40,7 +40,7 @@ AI의 민주화 덕분에, 개발자들은 이제 사용자 경험과 개발 워 ## Data Science + Research -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Research.png) | |:---------------------------------------------------------------------------------------------------------------:| | Data Science & Research - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | From 3d446ddfdb3ac131145a0366f60e65291738cd8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9D=B4=EB=93=A0?= Date: Sun, 17 Oct 2021 23:20:43 +0900 Subject: [PATCH 113/254] modify README and create assignment file --- .../translations/README.ko.md | 28 +++++++++++-------- .../translations/assignment.ko.md | 0 .../translations/README.ko.md | 11 ++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md index b1f63a44..bc2366e6 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md @@ -51,15 +51,19 @@ AI의 민주화 덕분에, 개발자들은 이제 사용자 경험과 개발 워 학생들에게 이러한 연구 프로젝트는 주제에 대한 이해를 향상시킬 수 있는 학습 기회와 협업 기회를 제공할 수 있으며, 관심 분야에서 일하는 관련 직원 또는 팀과의 인식과 참여를 넓힐 수 있습니다. 그렇다면 연구 프로젝트는 어떻게 생겼고 어떻게 영향을 미칠 수 있을까요? -이 예제를 한 번 봅시다 - Joy Buolamwini (MIT Media Labs)의 [MIT 젠더 쉐이즈 연구 (MIT Gender Shades Study)](http://gendershades.org/overview.html)의 [연구 (signature research paper)](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) co-authored with Timnit Gebru (then at Microsoft Research) that focused on +이 예제를 한 번 봅시다 - Joy Buolamwini (MIT Media Labs)의 [MIT 젠더 쉐이즈 연구 (MIT Gender Shades Study)](http://gendershades.org/overview.html)와 Timnit Gebru (당시에 Microsoft Research)가 공동 저술한 [연구 (signature research paper)](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) -* **무엇:** The objective of the research project was to _evaluate bias present in automated facial analysis algorithms and datasets_ based on gender and skin type. -* **Why:** Facial analysis is used in areas like law enforcement, airport security, hiring systems and more - contexts where inaccurate classifications (e.g., due to bias) can cause potential economic and social harms to affected individuals or groups. Understanding (and eliminating or mitigating) biases is key to fairness in usage. -* **How:** Researchers recongized that existing benchmarks used predominantly lighter-skinned subjects, and curated a new data set (1000+ images) that was _more balanced_ by gender and skin type. The data set was used to evaluate the accuracy of three gender classification products (from Microsoft, IBM & Face++). +* **무엇:** 이 연구 프로젝트의 목적은 _성별과 피부 타입에 기초하여 자동화된 얼굴 분석 알고리즘과 데이터 세트에 존재하는 편향을 평가하는 것_ 입니다. +* **왜:** 얼굴 분석은 법 집행, 공항 보안, 고용 시스템 등에서 사용됩니다 - 부정확한 분류(예: 편향으로 인한)로 인해 영향을 받는 개인이나 집단에 잠재적인 경제적, 사회적 피해를 일으킬 수 있는 상황이 생길 수 있습니다. 편향을 이해하는 (그리고 제거 또는 완화하는) 것이 사용 공정성의 핵심입니다. +* **어떻게:** 연구원들은 기존 벤치마크에서 주로 밝은 피부의 피사체를 사용했으며, 성별과 피부 유형에 따라 보다 균형 잡힌 새로운 데이터 셋 (1000개 이상의 이미지)을 큐레이션했다고 밝혔습니다. 데이터 셋은 세 가지 성별 분류 제품 (Microsoft, IBM & Face++)의 정확성을 평가하는 데 사용되었습니다. -Results showed that though overall classification accuracy was good, there was a noticeable difference in error rates between various subgroups - with **misgendering** being higher for females or persons with darker skin types, indicative of bias. +그 결과 전체적인 분류 정확도는 괜찮았지만, 다양한 하위 그룹 간 오류율에서 현저한 차이가 있었습니다. **misgendering**은 여성 또는 피부색이 어두운 사람의 경우에 더 높은 편향을 나타냈습니다. -**Key Outcomes:** Raised awareness that data science needs more _representative datasets_ (balanced subgroups) and more _inclusive teams_ (diverse backgrounds) to recognize and eliminate or mitigate such biases earlier in AI solutions. Research efforts like this are also instrumental in many organizations defining principles and practices for _responsible AI_ to improve fairness across their AI products and processes. +**주요 결과:** 데이터 사이언스가 초기 AI 솔루션에서 이러한 편견을 인식하고 완화하기 위해 더 많은 _대표적인 데이터 셋_ (균형 있는 하위 그룹)과 더 많은 _포괄적인 팀_ (다양한 배경)을 필요로 한다는 인식을 높였습니다. 이러한 연구 노력은 AI 제품 및 프로세스 전반의 공정성을 개선하기 위해 _책임 있는 AI_에 대한 원칙과 관행을 정의하는 많은 조직에서도 중요한 역할을 합니다. + +Raised awareness that data science needs more _representative datasets_ (balanced subgroups) and more _inclusive teams_ (diverse backgrounds) to recognize and eliminate or mitigate such biases earlier in AI solutions. + +Research efforts like this are also instrumental in many organizations defining principles and practices for _responsible AI_ to improve fairness across their AI products and processes. **Want to learn about relevant research efforts in Microsoft?** @@ -69,9 +73,9 @@ Results showed that though overall classification accuracy was good, there was a ## Data Science + Humanities -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | -|:-----------------------------------------------------------------------------------------------------------------:| -| Data Science & Digital Humanities - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Humanities.png) | +|:--------------------------------------------------------------------------------------------------------------------:| +| Data Science & Digital Humanities - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | Digital Humanities [has been defined](https://digitalhumanities.stanford.edu/about-dh-stanford) as "a collection of practices and approaches combining computational methods with humanistic inquiry". [Stanford projects](https://digitalhumanities.stanford.edu/projects) like _"rebooting history"_ and _"poetic thinking"_ illustrate the linkage between [Digital Humanities and Data Science](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - emphasizing techniques like network analysis, information visualization, spatial and text analysis that can help us revisit historical and literary data sets to derive new insights and perspective. @@ -92,9 +96,9 @@ Using this workflow, we can explore the seasonal impacts on the sentiment of the ## Data Science + Sustainability -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | -|:---------------------------------------------------------------------------------------------------------------------:| -| Data Science & Sustainability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Sustainability.png) | +|:------------------------------------------------------------------------------------------------------------------------:| +| Data Science & Sustainability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | The [2030 Agenda For Sustainable Development](https://sdgs.un.org/2030agenda) - adopted by all United Nations members in 2015 - identifies 17 goals including ones that focus on **Protecting the Planet** from degradation and the impact of climate change. The [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) initiative supports these goals by exploring ways in which technology solutions can support and build more sustainable futures with a [focus on 4 goals](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - being carbon negative, water positive, zero waste, and bio-diverse by 2030. diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md new file mode 100644 index 00000000..e69de29b diff --git a/6-Data-Science-In-Wild/translations/README.ko.md b/6-Data-Science-In-Wild/translations/README.ko.md index e69de29b..f66adbc4 100644 --- a/6-Data-Science-In-Wild/translations/README.ko.md +++ b/6-Data-Science-In-Wild/translations/README.ko.md @@ -0,0 +1,11 @@ +# 실제 환경에서의 데이터 사이언스 + +산업 전반에 걸친 데이터 사이언스의 실제 적용. + +### 토픽 + +1. [현실에서의 데이터 사이언스](20-Real-World-Examples/README.md) + +### 출처 + + [Nitya Narasimhan](https://twitter.com/nitya)에 의해 쓰여졌음 ❤️ From d61fc79cf4b4846de7cb9f1895c69cf95a47bff5 Mon Sep 17 00:00:00 2001 From: Eden Park Date: Mon, 18 Oct 2021 12:15:45 +0900 Subject: [PATCH 114/254] Update README.ko.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit change 데이터 사이언스 to 데이터 과학 --- 6-Data-Science-In-Wild/translations/README.ko.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/6-Data-Science-In-Wild/translations/README.ko.md b/6-Data-Science-In-Wild/translations/README.ko.md index f66adbc4..27fb9666 100644 --- a/6-Data-Science-In-Wild/translations/README.ko.md +++ b/6-Data-Science-In-Wild/translations/README.ko.md @@ -1,10 +1,10 @@ -# 실제 환경에서의 데이터 사이언스 +# 실제 환경에서의 데이터 과학 -산업 전반에 걸친 데이터 사이언스의 실제 적용. +산업 전반에 걸친 데이터 과학의 실제 적용. ### 토픽 -1. [현실에서의 데이터 사이언스](20-Real-World-Examples/README.md) +1. [현실에서의 데이터 과학](20-Real-World-Examples/README.md) ### 출처 From a15d895ad565320d399f2a4afe5c2206788ce263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9D=B4=EB=93=A0?= Date: Mon, 18 Oct 2021 12:48:27 +0900 Subject: [PATCH 115/254] Translate README.md --- .../translations/README.ko.md | 140 +++++++++--------- 1 file changed, 69 insertions(+), 71 deletions(-) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md index db6f272b..db8a78be 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ko.md @@ -1,150 +1,148 @@ -# Data Science in the Real World +# 실제 환경에서의 데이터 과학 -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-RealWorld.png) | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | |:----------------------------------------------------------------------------------------------------------------:| | Data Science In The Real World - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | -We're almost at the end of this learning journey! 우리는 +우리는 이 학습 여정의 끝에 거의 다다랐습니다! -우리는 데이터 사이언스와 윤리의 정의로 시작해서, 데이터 분석과 시각화를 위한 여러가지 툴 & 테크닉을 살펴보았고, 데이터 사이언스의 라이프 사이클을 검토하였고, 클라우드 컴퓨팅 서비스를 통한 데이터 사이언스 워크플로우 확장 및 자동화에 대해 알아보았습니다. 그래서 이제 당신은 아마도 _"내가 배운 것들을 현실에서는 어떻게 엮어서 사용하지?"_ 라는 의문점이 생길 것입니다. +우리는 데이터 과학과 윤리의 정의로 시작해서, 데이터 분석과 시각화를 위한 여러가지 툴 & 테크닉을 살펴보았고, 데이터 과학의 라이프 사이클을 검토하였고, 클라우드 컴퓨팅 서비스를 통한 데이터 과학 워크플로우 확장 및 자동화에 대해 알아보았습니다. 그래서 이제 당신은 아마도 _"내가 배운 것들을 현실에서는 어떻게 엮어서 사용하지?"_ 라는 의문점이 생길 것입니다. 이 레슨에서, 우리는 산업 전반에 걸친 데이터 과학의 실제 적용 사례를 살펴보고 연구, 디지털 인문학, 지속 가능성, 맥락에 대한 구체적인 예를 살펴보겠습니다. 학생 프로젝트 기회를 살펴보고 유용한 리소스로 마무리하여 학습 여정을 계속 이어나갈 수 있도록 도와드리겠습니다! -## Pre-Lecture Quiz +## 강의 전 퀴즈 [Pre-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/38) -## Data Science + Industry +## 데이터 과학 + 산업 -AI의 민주화 덕분에, 개발자들은 이제 사용자 경험과 개발 워크플로우에 대한 AI 중심의 의사 결정 및 데이터 기반 통찰력을 설계하고 통합하는 것이 더 쉬워지고 있습니다. 이것은 현실의 산업에서 데이터 사이언스가 어떻게 "적용" 되는지에 대한 몇 가지의 예입니다: +AI의 민주화 덕분에, 개발자들은 이제 사용자 경험과 개발 워크플로우에 대한 AI 중심의 의사 결정 및 데이터 기반 통찰력을 설계하고 통합하는 것이 더 쉬워지고 있습니다. 이것은 현실의 산업에서 데이터 과학이 어떻게 "적용" 되는지에 대한 몇 가지의 예입니다: -* [구글 독감 트렌드 (Google Flu Trends)](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) 데이터 사이언스를 사용하여 검색어와 독감 트렌드를 연관시켰습니다. used data science to correlate search terms with flu trends. 이 접근 방식에는 결함이 있지만 데이터 기반 의료 예측의 가능성(및 과제)에 대한 인식을 높였습니다. +* [구글 독감 트렌드 (Google Flu Trends)](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) 데이터 과학을 사용하여 검색어와 독감 트렌드를 연관시켰습니다. used data science to correlate search terms with flu trends. 이 접근 방식에는 결함이 있지만 데이터 기반 의료 예측의 가능성(및 과제)에 대한 인식을 높였습니다. - [UPS 라우팅 예측 (UPS Routing Predictions)](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - UPS가 데이터 사이언스와 머신러닝을 이용하여 배송을 위한 최적의 루트를 날씨 조건, 교통 패턴, 배달 마감일 등을 고려하여 어떻게 예측하는지에 대해 설명합니다. + [UPS 라우팅 예측 (UPS Routing Predictions)](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - UPS가 데이터 과학과 머신러닝을 이용하여 배송을 위한 최적의 루트를 날씨 조건, 교통 패턴, 배달 마감일 등을 고려하여 어떻게 예측하는지에 대해 설명합니다. * [NYC 택시 루트 시각화 (NYC Taxicab Route Visualization)](http://chriswhong.github.io/nyctaxi/) - [정보 자유법 (Freedom Of Information Laws)](https://chriswhong.com/open-data/foil_nyc_taxi/) 을 사용하여 수집된 데이터는 뉴욕 택시 생활의 하루를 시각화하는 데 도움이 되었고, 뉴욕 택시들이 바쁜 도시를 어떻게 돌아다니는지, 그들이 버는 돈, 그리고 매 24시간 동안의 여행 기간을 이해하는 데 도움이 되었습니다. -* [우버 데이터 사이언스 워크벤치 (Uber Data Science Workbench)](https://eng.uber.com/dsw/) - 요금, 안전, 사기 탐지 및 탐색 결정에 도움이 되는 데이터 분석 도구를 구축하기 위해 *매일* 수백만 개의 uber 여행에서 수집된 데이터(픽업 & 하차 위치, 이동 시간, 선호 경로 등)를 사용합니다. +* [우버 데이터 과학 워크벤치 (Uber Data Science Workbench)](https://eng.uber.com/dsw/) - 요금, 안전, 사기 탐지 및 탐색 결정에 도움이 되는 데이터 분석 도구를 구축하기 위해 *매일* 수백만 개의 uber 여행에서 수집된 데이터(픽업 & 하차 위치, 이동 시간, 선호 경로 등)를 사용합니다. * [스포츠 분석 (Sports Analytics)](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - 인재 스카우트, 스포츠 도박, 재고/장소 관리를 적용한 *예측 분석* (팀 및 선수 분석 - Moneyball 을 생각해보세요 - 그리고 팬 관리) 및 *데이터 시각화* (팀 & 팬 대시보드, 게임 등) 에 중점을 둡니다. -* [금융 산업에서의 데이터 사이언스 (Data Science in Banking)](https://data-flair.training/blogs/data-science-in-banking/) - 리스크 모델링 및 부정 행위 방지, 고객 세분화, 실시간 예측 및 추천 시스템에 이르기까지 다양한 적용을 통해 금융 산업에서 데이터 과학의 가치를 강조합니다. 예측 분석은 또한 [신용 점수 (credit scores)](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit) 와 같은 중요한 척도를 도출합니다. +* [금융 산업에서의 데이터 과학 (Data Science in Banking)](https://data-flair.training/blogs/data-science-in-banking/) - 리스크 모델링 및 부정 행위 방지, 고객 세분화, 실시간 예측 및 추천 시스템에 이르기까지 다양한 적용을 통해 금융 산업에서 데이터 과학의 가치를 강조합니다. 예측 분석은 또한 [신용 점수 (credit scores)](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit) 와 같은 중요한 척도를 도출합니다. -* [헬스케어에서의 데이터 사이언스 (Data Science in Healthcare)](https://data-flair.training/blogs/data-science-in-healthcare/) - 의료 영상(예: MRI, X-Ray, CT-Scan), 유전체학(DNA 시퀀싱), 약물 개발(위험 평가, 성공 예측), 예측 분석(환자 치료 & 공급 물류), 질병 추적 & 예방 등의 적용을 강조합니다. - - +* [헬스케어에서의 데이터 과학 (Data Science in Healthcare)](https://data-flair.training/blogs/data-science-in-healthcare/) - 의료 영상(예: MRI, X-Ray, CT-Scan), 유전체학(DNA 시퀀싱), 약물 개발(위험 평가, 성공 예측), 예측 분석(환자 치료 & 공급 물류), 질병 추적 & 예방 등의 적용을 강조합니다. ![Data Science Applications in The Real World](../images/data-science-applications.png) 이미지 출처: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) -위 그림은 데이터 사이언스 기술을 적용하기 위한 다른 도메인과 예를 보여줍니다. 더 많은 적용 사례를 보고싶나요? 아래의 [Review & Self Study](?id=review-amp-self-study)를 살펴보세요. +위 그림은 데이터 과학 기술을 적용하기 위한 다른 도메인과 예를 보여줍니다. 더 많은 적용 사례를 보고싶나요? 아래의 [Review & Self Study](?id=review-amp-self-study)를 살펴보세요. -## Data Science + Research +## 데이터 과학 + 연구 -| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Research.png) | +| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | |:---------------------------------------------------------------------------------------------------------------:| | Data Science & Research - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | 현실 속에서 종종 규모에 맞는 산업 활용 사례에 초점을 맞추지만, _연구_ 에 적용된 것과 프로젝트는 다음 두 가지 관점에서 유용할 수 있습니다: * _혁신 기회_ - 차세대 애플리케이션을 위한 선진 개념의 신속한 프로토타이핑 및 사용자 경험의 테스트를 살펴봅니다. -* _배포 과제_ - 현실 세계에서 데이터 사이언스 기술의 잠재적인 피해 또는 의도하지 않은 결과를 조사합니다. +* _배포 과제_ - 현실 세계에서 데이터 과학 기술의 잠재적인 피해 또는 의도하지 않은 결과에 대하여 조사합니다. -학생들에게 이러한 연구 프로젝트는 주제에 대한 이해를 향상시킬 수 있는 학습 기회와 협업 기회를 제공할 수 있으며, 관심 분야에서 일하는 관련 직원 또는 팀과의 인식과 참여를 넓힐 수 있습니다. 그렇다면 연구 프로젝트는 어떻게 생겼고 어떻게 영향을 미칠 수 있을까요? +학생들에게 이러한 연구 프로젝트는 주제에 대한 이해를 향상시킬 수 있는 학습 기회와 협업 기회를 제공할 수 있으며, 관심 분야에서 일하는 직원 또는 팀의 인식과 참여를 넓힐 수 있습니다. 그렇다면 연구 프로젝트는 어떻게 생겼고 어떻게 영향을 미칠 수 있을까요? 이 예제를 한 번 봅시다 - Joy Buolamwini (MIT Media Labs)의 [MIT 젠더 쉐이즈 연구 (MIT Gender Shades Study)](http://gendershades.org/overview.html)와 Timnit Gebru (당시에 Microsoft Research)가 공동 저술한 [연구 (signature research paper)](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) -* **무엇:** 이 연구 프로젝트의 목적은 _성별과 피부 타입에 기초하여 자동화된 얼굴 분석 알고리즘과 데이터 세트에 존재하는 편향을 평가하는 것_ 입니다. -* **왜:** 얼굴 분석은 법 집행, 공항 보안, 고용 시스템 등에서 사용됩니다 - 부정확한 분류(예: 편향으로 인한)로 인해 영향을 받는 개인이나 집단에 잠재적인 경제적, 사회적 피해를 일으킬 수 있는 상황이 생길 수 있습니다. 편향을 이해하는 (그리고 제거 또는 완화하는) 것이 사용 공정성의 핵심입니다. +* **무엇:** 이 연구 프로젝트의 목적은 _성별과 피부 타입에 기초하여 자동화된 얼굴 분석 알고리즘과 데이터 셋에 존재하는 편향을 평가하는 것_ 입니다. +* **왜:** 얼굴 분석은 법 집행, 공항 보안, 고용 시스템 등에서 사용됩니다 - 부정확한 분류(예: 편향으로 인한)로 인해 영향을 받는 개인이나 집단에 잠재적인 경제적 피해와 사회적 피해를 일으킬 수 있는 상황이 생길 수 있습니다. 편향을 이해하는 (그리고 제거 또는 완화하는) 것이 사용 공정성의 핵심입니다. * **어떻게:** 연구원들은 기존 벤치마크에서 주로 밝은 피부의 피사체를 사용했으며, 성별과 피부 유형에 따라 보다 균형 잡힌 새로운 데이터 셋 (1000개 이상의 이미지)을 큐레이션했다고 밝혔습니다. 데이터 셋은 세 가지 성별 분류 제품 (Microsoft, IBM & Face++)의 정확성을 평가하는 데 사용되었습니다. 그 결과 전체적인 분류 정확도는 괜찮았지만, 다양한 하위 그룹 간 오류율에서 현저한 차이가 있었습니다. **misgendering**은 여성 또는 피부색이 어두운 사람의 경우에 더 높은 편향을 나타냈습니다. -**주요 결과:** 데이터 사이언스가 초기 AI 솔루션에서 이러한 편견을 인식하고 완화하기 위해 더 많은 _대표적인 데이터 셋_ (균형 있는 하위 그룹)과 더 많은 _포괄적인 팀_ (다양한 배경)을 필요로 한다는 인식을 높였습니다. 이러한 연구 노력은 AI 제품 및 프로세스 전반의 공정성을 개선하기 위해 _책임 있는 AI_에 대한 원칙과 관행을 정의하는 많은 조직에서도 중요한 역할을 합니다. - -Raised awareness that data science needs more _representative datasets_ (balanced subgroups) and more _inclusive teams_ (diverse backgrounds) to recognize and eliminate or mitigate such biases earlier in AI solutions. - -Research efforts like this are also instrumental in many organizations defining principles and practices for _responsible AI_ to improve fairness across their AI products and processes. +**주요 결과:** 데이터 과학의 초기 AI 솔루션에서 이러한 편견을 인식하고 완화하기 위해 더 많은 _대표적인 데이터 셋_ (균형 있는 하위 그룹)과 더 많은 _포괄적인 팀_ (다양한 배경)을 필요로 한다는 인식을 높였습니다. 이러한 연구 노력은 AI 제품 및 프로세스 전반의 공정성을 개선하기 위해 *책임 있는 AI* 에 대한 원칙과 관행을 정의하는 많은 조직에서도 중요한 역할을 합니다. -**Want to learn about relevant research efforts in Microsoft?** +**Microsoft의 관련 연구에 대한 노력을 더 알고싶나요?** -* Check out [Microsoft Research Projects](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) on Artificial Intelligence. -* Explore student projects from [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). -* Check out the [Fairlearn](https://fairlearn.org/) project and [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) initiatives. +* 인공지능에 대한 [Microsoft Research Projects](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) 확인해보세요 +* 학생들의 프로젝트를 [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/) 에서 살펴보세요 +* [Fairlearn](https://fairlearn.org/) 프로젝트와 [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) 를 확인해보세요 -## Data Science + Humanities +## 데이터 과학 + 인문학 | ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Humanities.png) | |:--------------------------------------------------------------------------------------------------------------------:| | Data Science & Digital Humanities - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | -Digital Humanities [has been defined](https://digitalhumanities.stanford.edu/about-dh-stanford) as "a collection of practices and approaches combining computational methods with humanistic inquiry". [Stanford projects](https://digitalhumanities.stanford.edu/projects) like _"rebooting history"_ and _"poetic thinking"_ illustrate the linkage between [Digital Humanities and Data Science](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - emphasizing techniques like network analysis, information visualization, spatial and text analysis that can help us revisit historical and literary data sets to derive new insights and perspective. +디지털 인문학은 "계산 방법과 인문학적 연구를 결합한 관행과 접근법의 집합"으로 [정의](https://digitalhumanities.stanford.edu/about-dh-stanford)되어 왔습니다. _"역사의 재발견"_ 과 _"시적 사고"_ 와 같은 [Stanford projects](https://digitalhumanities.stanford.edu/projects)는 [디지털 인문학과 데이터 과학 (Digital Humanities and Data Science)](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) 사이의 연관성을 보여줍니다. - 새로운 통찰력과 관점을 도출하기 위해 역사 및 문학 데이터 셋을 다시 검토하는 데 도움이 될 수 있는 네트워크 분석, 정보 시각화, 공간 및 텍스트 분석과 같은 기술을 강조 -*Want to explore and extend a project in this space?* +*여기에서 프로젝트를 탐색하고 확장하기를 원하나요?* -Check out ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - a great example from [Jen Looper](https://twitter.com/jenlooper) that asks how we can use data science to revisit familiar poetry and re-evaluate its meaning and the contributions of its author in new contexts. For instance, _can we predict the season in which a poem was authored by analyzing its tone or sentiment_ - and what does this tell us about the author's state of mind over the relevant period? +["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) 를 살펴보세요 - [Jen Looper](https://twitter.com/jenlooper)의 아주 좋은 예제는 우리가 익숙한 시를 다시 읽고, 시의 의미와 새로운 맥락에서 작가의 공헌을 재평가하기 위해 어떻게 데이터 과학을 사용할 수 있는지 묻습니다. 예를 들어, *우리는 시의 어조나 감정을 분석함으로써 시가 쓰여진 계절을 예측할 수 있는지* - 그리고 이것은 우리에게 그 시기 동안의 작가의 심리 상태에 대해 무엇을 말해주는지? -To answer that question, we follow the steps of our data science lifecycle: +이 질문들에 대답하기 위해, 우리는 몇 가지 데이터 과학 라이프 사이클의 스텝을 따라가 볼 것 입니다: -* [`Data Acquisition`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - to collect a relevant dataset for analysis. Options including using an API ( e.g., [Poetry DB API](https://poetrydb.org/index.html)) or scraping web pages (e.g., [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) using tools like [Scrapy](https://scrapy.org/). -* [`Data Cleaning`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explains how text can be formatted, sanitized and simplified using basic tools like Visual Studio Code and Microsoft Excel. -* [`Data Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explains how we can now import the dataset into "Notebooks" for analysis using Python packages (like pandas, numpy and matplotlib) to organize and visualize the data. -* [`Sentiment Analysis`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explains how we can integrate cloud services like Text Analytics, using low-code tools like [Power Automate](https://flow.microsoft.com/en-us/) for automated data processing workflows. +* [`데이터 획득 (Data Acquisition)`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - 분석을 위해 관련 데이터 셋을 수집합니다. API(예: [Poetry DB API](https://poetrydb.org/index.html)) 사용 또는 Scrapy와 같은 도구를 사용하여 웹 페이지(예: [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm))를 스크랩핑하는 옵션이 있습니다. +* [`데이터 정리 (Data Cleaning)`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - Visual Studio Code 및 Microsoft Excel과 같은 기본 도구를 사용하여 텍스트를 포맷팅, 검사 및 단순화하는 방법을 설명합니다. +* [`데이터 분석 (Data Analysis)`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - 데이터를 구성하고 시각화하기 위해 파이썬 패키지(pandas, numpy, matplotlib 등)를 사용하여 분석을 위해 데이터 세트를 "노트북 (Notebooks)"으로 가져올 수 있는 방법을 설명합니다. +* [`감정 분석 (Sentiment Analysis)`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - 자동화된 데이터 처리 워크플로우를 위해 [Power Automate](https://flow.microsoft.com/en-us/)와 같은 로우 코드 툴을 사용하여 Text Analytics와 같은 클라우드 서비스를 통합하는 방법을 설명합니다. +* explains how we can integrate cloud services like Text Analytics, using low-code tools like for automated data processing workflows. -Using this workflow, we can explore the seasonal impacts on the sentiment of the poems, and help us fashion our own perspectives on the author. Try it out yourself - then extend the notebook to ask other questions or visualize the data in new ways! +이 워크 워크플로우를 이용해서, 우리는 계절이 시에 실린 감정이 어덯게 영향을 미치는지 알아볼 수 있고, 저자에 대한 우리의 관점을 형성하도록 도울 수 있습니다. 스스로 한 번 해보세요 - 그런 다음 노트북을 확장하여 다른 질문을 하거나 새로운 방법으로 데이터를 시각화해보세요! -> You can use some of the tools in the [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) to pursue these avenues of inquiry +> [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) 툴킷의 도구를 사용하여 이러한 검색 방법을 시도해 볼 수 있습니다 -## Data Science + Sustainability +## 데이터 과학 + 지속 가능성 | ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/20-DataScience-Sustainability.png) | |:------------------------------------------------------------------------------------------------------------------------:| | Data Science & Sustainability - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | -The [2030 Agenda For Sustainable Development](https://sdgs.un.org/2030agenda) - adopted by all United Nations members in 2015 - identifies 17 goals including ones that focus on **Protecting the Planet** from degradation and the impact of climate change. The [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) initiative supports these goals by exploring ways in which technology solutions can support and build more sustainable futures with a [focus on 4 goals](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - being carbon negative, water positive, zero waste, and bio-diverse by 2030. +[2030 지속 가능한 개발 의제 (2030 Agenda For Sustainable Development)](https://sdgs.un.org/2030agenda) - 2015년 모든 유엔 회원국들이 채택하였음 - 쇠퇴와 기후 변화의 영향으로 부터 **지구를 보호**하는 것에 초점을 맞춘 목표를 포함하여 17개 목표를 명시하고 있습니다. [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) 이니셔티브는 2030년까지 탄소 네거티브, 물 포지티브, 제로 웨이스트, 바이오 다이버스의 [네 가지 목표](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh)에 초점을 맞춰 기술 솔루션이 보다 지속 가능한 미래를 지원하고 구축할 수 있는 방법을 모색함으로써 이러한 목표를 지원합니다. -Tackling these challenges in a scalable and timely manner requires cloud-scale thinking - and large scale data. The [Planetary Computer](https://planetarycomputer.microsoft.com/) initiative provides 4 components to help data scientists and developers in this effort: +이러한 과제를 확장 가능하게하고 시기 적절하게 해결하려면 클라우드 규모의 사고와 대규모 데이터가 필요합니다. [Planetary Computer](https://planetarycomputer.microsoft.com/) 이니셔티브는 데이터 과학자와 개발자가 이러한 노력을 하는 데 도움이 되는 4가지 구성 요소를 제공합니다. -* [Data Catalog](https://planetarycomputer.microsoft.com/catalog) - with petabytes of Earth Systems data (free & Azure-hosted). -* [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - to help users search for relevant data across space and time. -* [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - managed environment for scientists to process massive geospatial datasets. -* [Applications](https://planetarycomputer.microsoft.com/applications) - showcase use cases & tools for sustainability insights. +* [Data Catalog](https://planetarycomputer.microsoft.com/catalog) - 페타바이트 단위의 지구 시스템 데이터(무료 및 Azure 호스팅됨)를 제공합니다. +* [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - 사용자가 시공간에 걸쳐 관련 데이터를 검색할 수 있도록 지원합니다. +* [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - 과학자들이 대규모 지리공간 데이터셋을 처리할 수 있는 관리 환경입니다. +* [Applications](https://planetarycomputer.microsoft.com/applications) - 지속 가능성 통찰력을 위한 활용 사례 및 도구를 제시합니다. -**The Planetary Computer Project is currently in preview (as of Sep 2021)** - here's how you can get started contributing to sustainability solutions using data science. +**PlaPlanetary Computer Project는 현재 프리뷰 중입니다(2021년 9월 기준)** - 데이터 과학을 사용하여 지속 가능성 솔루션에 기여하는 방법을 소개합니다. -* [Request access](https://planetarycomputer.microsoft.com/account/request) to start exploration and connect with peers. -* [Explore documentation](https://planetarycomputer.microsoft.com/docs/overview/about) to understand supported datasets and APIs. -* Explore applications like [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) for inspiration on application ideas. +* [엑세스를 요청](https://planetarycomputer.microsoft.com/account/request) 하여 탐색을 시작하고 피어와 연결합니다. +* 지원되는 데이터 셋과 API를 이해하기 위한 [문서](https://planetarycomputer.microsoft.com/docs/overview/about)를 살펴보세요. +* 적용 방법에 대한 아이디어에 대한 영감을 얻기 위해 [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/)과 같은 애플리케이션을 탐색합니다. -Think about how you can use data visualization to expose or amplify relevant insights into areas like climate change and deforestation. Or think about how insights can be used to create new user experiences that motivate behavioral changes for more sustainable living. +데이터 시각화를 사용하여 기후 변화나 삼림 벌채와 같은 분야에 대한 관련 통찰력을 노출하거나 확대할 수 있는 방법을 생각해보세요. 또는 보다 지속 가능한 생활을 위해, 행동 변화에 동기를 부여하는 새로운 사용자 경험을 만들어 주려면 통찰력을 어떻게 사용할 수 있는지 생각해 보십시오. -## Data Science + Students +## 데이터 과학 + 학생 -We've talked about real-world applications in industry and research, and explored data science application examples in digital humanities and sustainability. So how can you build your skills and share your expertise as data science beginners? +우리는 산업 및 연구 분야의 실제 적용 사례에 대해 이야기했으며 디지털 인문학과 지속 가능성의 데이터 과학 적용 사례를 알아보았습니다. 그렇다면 어떻게 하면 데이터 과학 초보자로서 기술을 개발하고 전문 지식을 공유할 수 있을까요? -Here are some examples of data science student projects to inspire you. +여기에 영감을 불어넣어 줄 만한 데이터 과학에 대한 학생들의 프로젝트 예시가 있습니다. -* [MSR Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) with GitHub [projects](https://github.com/msr-ds3) exploring topics like: - - [Racial Bias in Police Use of Force](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) - - [Reliability of NYC Subway System](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) -* [Digitizing Material Culture: Exploring socio-economic distributions in Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc)- from [Ornella Altunyan](https://twitter.com/ornelladotcom) and team at Claremont, using using [ArcGIS StoryMaps](https://storymaps.arcgis.com/). +* 깃허브에서 [projects](https://github.com/msr-ds3) [MSR Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects)의 다음과 같은 토픽이 포함된 [프로젝트](https://github.com/msr-ds3)가 있습니다 : + - [경찰의 무력에 대한 인종 편향 (Racial Bias in Police Use of Force)](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [뉴욕시 지하철 시스템의 신뢰성 (Reliability of NYC Subway System)](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) +* [자료 문화 디지털화: Sirkap의 사회 경제적 분포 탐색](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc)- [Ornella Altunyan](https://twitter.com/ornelladotcom)과 Claremont의 팀이 [ArcGIS StoryMaps](https://storymaps.arcgis.com/)을 사용하였습니다. -## 🚀 Challenge +## 🚀 도전 과제 -Search for articles that recommend data science projects that are beginner friendly - like [these 50 topic areas](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) or [these 21 project ideas](https://www.intellspot.com/data-science-project-ideas) or [these 16 projects with source code](https://data-flair.training/blogs/data-science-project-ideas/) that you can deconstruct and remix. And don't forget to blog about your learning journeys and share your insights with all of us. +초보자 친화적인 데이터 과학 프로젝트를 추천하는 기사 검색 - [이 50개 토픽 영역](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/)이나 [21개 프로젝트 아이디어](https://www.intellspot.com/data-science-project-ideas) 또는 [16개의 프로젝트와 소스코드](https://data-flair.training/blogs/data-science-project-ideas/)가 있는 프로젝트처럼 해체하고 합칠 수 있습니다. 또한 학습 여정에 대해 블로그에 올리고 여러분의 통찰력을 우리 모두와 공유하는 것을 잊지마세요. -## Post-Lecture Quiz +## 강의 후 퀴즈 [Post-lecture quiz](https://red-water-0103e7a0f.azurestaticapps.net/quiz/39) -## Review & Self Study +## 리뷰 & 혼자 공부해보기 + +더 많은 케이스에 대해 알고싶나요? 여기에 관련된 기사들이 있습니다: + +* [17개의 데이터 과학 적용 사례들 (Data Science Applications and Examples)](https://builtin.com/data-science/data-science-applications-examples) - 2021년 7월 + +* [11개의 놀라운 데이터 과학 애플리케이션 (11 Breathtaking Data Science Applications in Real World)](https://myblindbird.com/data-science-applications-real-world/) - 2021년 5월 -Want to explore more use cases? Here are a few relevant articles: +* [실제 환경에서의 데이터 과학 (Data Science In The Real World)](https://towardsdatascience.com/data-science-in-the-real-world/home) - Article Collection -* [17 Data Science Applications and Examples](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021 -* [11 Breathtaking Data Science Applications in Real World](https://myblindbird.com/data-science-applications-real-world/) - May 2021 -* [Data Science In The Real World](https://towardsdatascience.com/data-science-in-the-real-world/home) - Article Collection -* Data Science In: [Education](https://data-flair.training/blogs/data-science-in-education/), [Agriculture](https://data-flair.training/blogs/data-science-in-agriculture/), [Finance](https://data-flair.training/blogs/data-science-in-finance/), [Movies](https://data-flair.training/blogs/data-science-at-movies/) & more. +* 다음과 같은 분야의 데이터 과학: [Education](https://data-flair.training/blogs/data-science-in-education/), [Agriculture](https://data-flair.training/blogs/data-science-in-agriculture/), [Finance](https://data-flair.training/blogs/data-science-in-finance/), [Movies](https://data-flair.training/blogs/data-science-at-movies/) & 등등. - ## Assignment + ## 과제 -[Explore A Planetary Computer Dataset](assignment.md) +[Planetary Computer 데이터 셋 살펴보기](assignment.md) From 1071cd66fb1c2bb08e100d0de31ffafb6e016b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9D=B4=EB=93=A0?= Date: Mon, 18 Oct 2021 13:15:30 +0900 Subject: [PATCH 116/254] Translate assignment --- .../translations/assignment.ko.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md index e69de29b..f3d8e8b6 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.ko.md @@ -0,0 +1,34 @@ +# Planetary Computer 데이터 셋 살펴보기 + +## 설명 + +이 레슨에서는, 우리는 다양한 도메인에 적용된 데이터 과학에 대해 이야기할 것입니다 - 연구, 지속 가능성과 디지털 인문학에 관련된 예를 더 깊이 파고 들것입니다. 이 과제에서, 당신은 이러한 예들 중 하나를 더 자세히 살펴보고, 데이터 시각화 및 분석에 대한 학습 내용을 적용하여 지속 가능성 데이터에 대한 통찰력을 도출할 수 있습니다. + +[Planetary Computer](https://planetarycomputer.microsoft.com/) 프로젝트에서 계정으로 데이터 셋과 API를 접근할 수 있습니다 - 과제의 보너스 단계를 시도하려면 액세스 권한을 요청하세요. 이 사이트는 계정을 만들지 않고도 사용할 수 있는 [Explorer](https://planetarycomputer.microsoft.com/explore) 기능도 제공합니다. + +`단계:` Explorer 인터페이스(아래 스크린샷에 보임)를 사용하여 데이터 셋(제공된 옵션), 사전 설정된 쿼리(데이터 필터링), 렌더링 옵션(관련 시각화를 생성)을 선택할 수 있습니다. 이 과제에서, 과제는 다음과 같습니다. + +1. [Explorer documentation](https://planetarycomputer.microsoft.com/docs/overview/explorer/) 살펴보기 - 옵션에 대한 이해. +2. 데이터 셋 [Catalog](https://planetarycomputer.microsoft.com/catalog) 살펴보기 - 각각에 대한 목적 이해. +3. Explorer 사용하기 - 관심있는 데이터를 고르고, 알맞은 쿼리 & 렌더링 옵션을 찾으세요. + +![The Planetary Computer Explorer](images/Planetary-Computer-Explorer.png) + +`당신의 과제:` 이제 브라우저에 렌더링된 시각화를 공부하고 다음 질문에 답해보세요: + +* 데이터가 어떤 _특징(features)_ 을 가지고 있나요 ? +* 시각화 어떤 *인사이트* 혹은 결과를 제공하나요? +* 이러한 통찰이 프로젝트의 지속 가능성 목표에 미치는 *의미 (implications)* 는 무엇인가요? +* 시각화의 한계(즉, 어떤 통찰력을 얻지 못했나요?)가 무엇이었나요? +* 미가공 데이터를 얻을 수 있다면 어떤 _대체 시각화_ 를 만들고 싶은지? 그리고 그 이유는 무엇인가요? + +`보너스 포인트:` 계정 신청 - 그리고 계정 승인 후 로그인 해보기. + +* 데이터를 인터랙티브하게 탐색하고, 생각해 낸 다른 시각화를 구현합니다. +* 이제 커스텀한 시각화를 분석해보세요 - 이전에 놓쳤던 통찰력을 도출할 수 있었나요? + +## 지시문 + +| 모범적인 | 적당한 | 개선 필요 | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- | ---------------------------------------------------------------- | +| 다섯 가지 핵심 질문에 모두 답했습니다. 학생은 현재 및 대안 시각화가 지속 가능성 목표 또는 결과에 대한 통찰력을 제공할 수 있는 방법을 명확하게 파악했습니다. | 학생은 적어도 상위 3개의 질문에 매우 자세하게 답변했으며, 이는 Explorer에 대한 실제 경험이 있음을 보여줍니다. | 학생이 여러 질문에 답하지 못하거나 세부 정보가 충분하지 않음 - 프로젝트에 의미 있는 시도가 없었음을 나타냅니다. | From e7adaa97379739b251cdd791bf96a09ffa72c6ac Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Mon, 18 Oct 2021 11:29:56 -0400 Subject: [PATCH 117/254] editing Spanish path for assignment (data science/wild) --- .../20-Real-World-Examples/translations/README.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md index f708850a..893fd41e 100644 --- a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.es.md @@ -141,4 +141,4 @@ Busca artículos que recomienden proyectos de ciencia de datos que son amigables * Ciencia de Datos en la [Educación](https://data-flair.training/blogs/data-science-in-education/), [Agricultura](https://data-flair.training/blogs/data-science-in-agriculture/), [Finanzas](https://data-flair.training/blogs/data-science-in-finance/), [Películas](https://data-flair.training/blogs/data-science-at-movies/) y más. ## Asignación -[Explora un conjunto de datos de la Computadora Planetaria](../assignment.md) +[Explora un conjunto de datos de la Computadora Planetaria](assignment.es.md) From 9fe08bf5cd2ede9a2a962fc96d8a371db91a08f0 Mon Sep 17 00:00:00 2001 From: Srishti Poudel Date: Tue, 19 Oct 2021 13:26:30 +0545 Subject: [PATCH 118/254] added translations in Nepali for README --- translations/README.NEPALI.MD | 100 ++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 translations/README.NEPALI.MD diff --git a/translations/README.NEPALI.MD b/translations/README.NEPALI.MD new file mode 100644 index 00000000..b8c97ecf --- /dev/null +++ b/translations/README.NEPALI.MD @@ -0,0 +1,100 @@ +# सुरुआतिका लागी Data Science - पाठ्यक्रम + +Microsoft मा Azure Cloud अधिवक्ताहरु एक १०-हप्ता, २०-पाठ पाठ्यक्रम सबै Data Science को बारे मा प्रस्ताव गर्न पाउँदा खुसी छन्। प्रत्येक पाठ पूर्व पाठ र पछि पाठ क्विज, पाठ, एक समाधान, र एक काम पूरा गर्न को लागी लिखित निर्देश शामिल छ। हाम्रो परियोजना आधारित शिक्षाशास्त्रले तपाइँलाई निर्माण गर्न को लागी जान्न को लागी अनुमति दिन्छ साथै नयाँ कौशल को लागी 'stick' हुने तरीका सिकाउदछ । + +**हाम्रा लेखकहरुलाई हार्दिक धन्यवाद:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏विशेष धन्यवाद 🙏 हाम्रा Microsoft Learn Student Ambassadorका लेखक, समीक्षक र सामग्री योगदानकर्ता,** विशेष गरी [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Rohit Yadav](https://www.linkedin.com/in/rty2423), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Sheena Narula](https://www.linkedin.com/in/sheena-narula-n/), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), Yogendrasingh Pawar, Max Blum, Samridhi Sharma, Tauqeer Ahmad, Aaryan Arora, ChhailBihari Dubey + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| +|:---:| +|सुरुआतिका लागी Data Science - _स्केचनोट [@nitya](https://twitter.com/nitya) द्वारा_ | + + +# सुरु गर्नका लागी + +> **शिक्षकहरु**, हामीले कसरी यो पाठ्यक्रम को उपयोग गर्न [केहि सुझावहरु ](for-teachers.md) मा समावेस गरेका छौ । हामी तपाइँको प्रतिक्रिया [हाम्रो Discussion Forum](https://github.com/microsoft/Data-Science-For-Beginners/discussions) मा सुन्न आतुर छौ ! + +> **विद्यार्थी**, यो पाठ्यक्रम आफ्नै शैलिमा प्रयोग गर्नका लागी यो Repo लाई fork गर्नुहोस् र एक पूर्व व्याख्यान प्रश्नोत्तरी संग शुरू गरी त्यसपछि गतिविधिहरु को बाकी पूरा लेक्चर पढी अभ्यास पूरा गर्नुहोस् । समाधान कोड प्रतिलिपि गर्नुको सट्टा पाठ बुझेर परियोजनाहरु बनाउन को लागी प्रयास गर्नुहोस्; जे होस् कि कोड प्रत्येक परियोजना उन्मुख पाठ मा /solution फोल्डरहरु मा उपलब्ध छ। अर्को विचार साथीहरु संग एक साथ सामग्री को माध्यम बाट जाने संग एक अध्ययन समूह गठन गर्न को लागी हुनेछ। थप अध्ययन को लागी, हामी [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-40229-cxa)सिफारिश गर्दछौं । + + + +## शिक्षाशास्त्र + +यो पाठ्यक्रम निर्माण गर्दा हामीले दुई शैक्षिक सिद्धान्त छनौट गरेका छौं: यो Project आधारित छ र यीमा बारम्बार क्विजहरु सामेल छन्। यस श्रृंखला को अन्त सम्म, विद्यार्थीहरु नैतिक अवधारणाहरु, डाटा तयारी, डाटा संग काम गर्ने बिभिन्न तरीकाहरु, डाटा दृश्य, डाटा विश्लेषण, डाटा विज्ञान को वास्तविक दुनिया को उपयोग को मामलाहरु, र अधिक सहित डेटा विज्ञान को आधारभूत सिद्धान्तहरु सिक्ने छन । + +यसबाहेक, एक कम दांव क्विज एक कक्षा भन्दा पहिले गर्नाले एक विषय सिक्न को लागी विद्यार्थी को इरादा सेट गर्दछ, जबकि कक्षा पछि एक दोस्रो प्रश्नोत्तरी थप अवधारण सुनिश्चित गर्दछ। यो पाठ्यक्रम लचिलो र रमाईलो हुन को लागी डिजाइन गरीएको छ र सम्पूर्ण वा आंशिक रूपमा लिन सकिन्छ। Project सुरु हुँदै १० हप्ता को अन्त्य सम्म जटिलता बढ्दै जादछ । + +> हाम्रो [आचार संहिता](CODE_OF_CONDUCT.md), [योगदान](CONTRIBUTING.md), [अनुवाद](TRANSLATIONS.md) दिशानिर्देश पाउनुहोस्। हामी तपाइँको रचनात्मक प्रतिक्रिया स्वागत गर्दछौं! + +## प्रत्येक पाठ समावेश छ: + +- वैकल्पिक स्केचनोट +- वैकल्पिक पूरक भिडियो +- पूर्व पाठ वार्मअप प्रश्नोत्तरी +- लिखित पाठ +-परियोजना आधारित पाठ को लागी, कसरी परियोजना निर्माण गर्न को लागी चरण-दर-चरण गाइड +- ज्ञान जाँच +- चुनौती +- पूरक पठन +- असाइनमेन्ट +- पोस्ट पाठ प्रश्नोत्तरी + +> ** क्विजहरु को बारे मा एक नोट **: सबै क्विज [यो एप मा](https://red-water-0103e7a0f.azurestaticapps.net/) निहित छन्, प्रत्येक तीन प्रश्नहरु को ४० कुल क्विज को लागी। तिनीहरू पाठ भित्र बाट जोडिएका छन् तर प्रश्नोत्तरी अनुप्रयोग स्थानीय स्तर मा चलाउन सकिन्छ; 'क्विज- app' फोल्डर मा निर्देशन पालना गर्नुहोस्। उनीहरु बिस्तारै स्थानीयकृत हुँदैछन्। + + +## पाठ + + +|![ स्केचनोट [(@sketchthedocs)](https://sketchthedocs.dev) द्वारा](./sketchnotes/00-Roadmap.png)| +|:---:| +| शुरुआती को लागी डाटा विज्ञान: गाइड - _स्केचनोट [@nitya](https://twitter.com/nitya)_ द्वारा| + + +| पाठ नम्बर | विषय | पाठ समूह | सिक्ने उद्देश्यहरू | लिन्कड पाठ | लेखक | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | + +| 0१ | डाटा विज्ञान को परिभाषा | [परिचय](1-Introduction/README.md) | डाटा विज्ञान को पछाडि आधारभूत अवधारणाहरु जान्नुहोस् र यो कसरी Artificial Intelligence, Machine Learning, र Big Data संग सम्बन्धित छ। | [पाठ](1-Introduction/01-defining-data-science/README.md) [भिडियो](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 0२ | डाटा विज्ञान नैतिकता | [परिचय](1-Introduction/README.md) | डाटा नैतिक अवधारणाहरु, चुनौतिहरु र फ्रेमवर्क | [पाठ](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 0३ | डाटा परिभाषा | [परिचय](1-Introduction/README.md) | कसरी डाटा वर्गीकृत र यसको सामान्य स्रोत हो। | [पाठ](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 0४ | Probability र Statistics को परिचय | [परिचय](1-Introduction/README.md) |Probability र Statistics को गणितीय प्रविधि डाटा बुझ्न को लागी।| [पाठ](1-Introduction/04-stats-and-probability/README.md) [भिडिय](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 0५ | Relational Data मा काम | [डाटासंग काम](2-Working-With-Data/README.md) | रिलेशनल डाटा को परिचय र स्ट्रक्चर्ड क्वेरी भाषा संग रिलेशनल डाटा को अन्वेषण र विश्लेषण को मूल कुराहरु, जसलाई SQL को रूप मा पनि जानिन्छ (उच्चारण "see-quell") | [पाठ](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 0६ | NoSQL Data मा काम | [डाटासंग काम](2-Working-With-Data/README.md) | नन रिलेशनल डाटा को परिचय, यसको विभिन्न प्रकार र अन्वेषण र कागजात डाटाबेस को विश्लेषण को आधारभूत। | [पाठ](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 0७ | Python मा काम | [डाटासंग काम](2-Working-With-Data/README.md) | Pandas जस्तै libraries संग डाटा अन्वेषण को लागी अजगर को उपयोग को आधारभूत। पाइथन प्रोग्रामिंग को आधारभूत समझ सिफारिश गरीएको छ। | [पाठ](2-Working-With-Data/07-python/README.md) [भिडियो](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 0८ | डाटा तयारी | [डाटासंग काम](2-Working-With-Data/README.md) | सफा गर्न र हराइरहेको, गलत, वा अपूर्ण डाटा को चुनौतिहरु लाई सम्हाल्न को लागी डाटा रूपान्तरण को लागी डाटा प्रविधि मा विषय। | [पाठ](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 0९ | मात्रा को दृश्य | [डाटा दृश्यता](3-Data-Visualization/README.md) | जान्नुहोस् कसरी Matplotlibमा चरा डाटा चित्रण गर्ने 🦆 | [पाठ](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| १० | डाटा को वितरण दृश्य | [डाटा दृश्यता](3-Data-Visualization/README.md) | एक अन्तराल भित्र अवलोकन र प्रवृत्ति दृश्य। | [पाठ](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | अनुपात दृश्य | [डाटा दृश्यता](3-Data-Visualization/README.md) | अलग र समूहीकृत प्रतिशत दृश्य। | [पाठ](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | सम्बन्ध को दृश्य | [डाटा दृश्यता](3-Data-Visualization/README.md) | भिजुअलाइजिंग कनेक्शन र डाटा को सेट र उनीहरुको variables को बीच सम्बन्ध। | [पाठ](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | सार्थक दृश्य | [डाटा दृश्यत](3-Data-Visualization/README.md) | प्रभावकारी समस्या को समाधान र अंतर्दृष्टि को लागी तपाइँको दृश्य बहुमूल्य बनाउन को लागी प्रविधि र मार्गदर्शन। | [पाठ](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | डाटा विज्ञान जीवनचक्र को परिचय | [जीवनचक्र](4-Data-Science-Lifecycle/README.md) | डाटा विज्ञान जीवनचक्र को परिचय र डाटा प्राप्त गर्ने र निकाल्ने यसको पहिलो चरण। | [पाठ](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | विश्लेषण | [जीवनचक्र](4-Data-Science-Lifecycle/README.md) | डाटा विज्ञान जीवनचक्र को यो चरण डाटा को विश्लेषण गर्न को लागी टेक्नीक मा केन्द्रित छ। | [पाठ](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | सञ्चार | [जीवनचक्र](4-Data-Science-Lifecycle/README.md) | डाटा विज्ञान जीवनचक्रको यो चरण डेटा बाट अन्तरदृष्टि प्रस्तुत गर्ने तरीका मा ध्यान केन्द्रित गर्दछ कि यो निर्णय निर्माताहरु लाई बुझ्न को लागी सजिलो बनाउँछ। | [पाठ](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | क्लाउड मा डाटा विज्ञान | [क्लाउड डाटा ](5-Data-Science-In-Cloud/README.md) | पाठ को यो श्रृंखला क्लाउड र यसको लाभ मा डाटा विज्ञान को परिचय। | [पाठ](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) र [Maud](https://twitter.com/maudstweets) | +| 18 | क्लाउड मा डाटा विज्ञान | [क्लाउड डाटा](5-Data-Science-In-Cloud/README.md) | कम कोड उपकरण को उपयोग गरी प्रशिक्षण मोडेल। |[पाठ](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 19 | क्लाउड मा डाटा विज्ञान | [क्लाउड डाटा](5-Data-Science-In-Cloud/README.md) | Azure Machine Learning Studio संग मोडेल परिनियोजन। | [पाठ](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 20 | जंगलमा डाटा विज्ञान| [जंगलम](6-Data-Science-In-Wild/README.md) | वास्तविक दुनिया मा डाटा विज्ञान संचालित परियोजनाहरु। | [पाठ](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## अफलाइन पहुँच + +तपाइँ यो कागजात अफलाइन चलाउन सक्नुहुन्छ [Docsify] (https://docsify.js.org/#/) को उपयोग गरेर। यो Repo Fork गर्नुहोस्, [तपाइँको Docsify स्थापना गर्नुहोस् (https://docsify.js.org/#/quickstart) तपाइँको स्थानीय मेसिन मा, तब यो रेपो को मूल फोल्डर मा, `docsify serve` टाइप गर्नुहोस्। वेबसाइट तपाइँको स्थानीय होस्ट मा पोर्ट 3000 मा सेवा दिइनेछ: `localhost: 3000`। + +> नोट, नोटबुक Docsify को माध्यम बाट रेन्डर गरिनेछैन, त्यसैले जब तपाइँ एक नोटबुक चलाउन को लागी आवश्यक छ, VS Code मा एक अजगर कर्नेल चलिरहेको छुट्टै गर्नुहोस्। + +##PDF + +सबै पाठ को एक पीडीएफ [यहाँ पाउन सकिन्छ](https://microsoft.github.io/Data-Science-For-Beginners/pdf/readme.pdf) + +## सहयोग चाहियो! + +यदि तपाइँ पाठ्यक्रम को सबै वा अंश अनुवाद गर्न चाहानुहुन्छ, कृपया हाम्रो [अनुवाद] (TRANSLATIONS.md) गाइड को पालन गर्नुहोस्। + +## अन्य पाठ्यक्रम + +हाम्रो टोली अन्य पाठ्यक्रम उत्पादन! यहाँ हेर्नुहोस : + +- [शुरुआतीहरुको लागी Machine Learning] (https://aka.ms/ml-beginners) +- [शुरुआती को लागी IoT] (https://aka.ms/iot-beginners) +- [शुरुआतीहरुको लागि Web Dev] (https://aka.ms/webdev-beginners) From badd31780ad55f928e174cae02de80e5e7959593 Mon Sep 17 00:00:00 2001 From: alo_sanchez Date: Tue, 19 Oct 2021 19:12:37 -0500 Subject: [PATCH 119/254] [ES-spanish] Translation Cap 3 and 09 - Visualizing quantities #132 --- .../translations/README.es.md | 206 ++++++++++++++++++ .../translations/assignment.es.md | 11 + .../translations/README.es.md | 27 +++ 3 files changed, 244 insertions(+) create mode 100644 3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md diff --git a/3-Data-Visualization/09-visualization-quantities/translations/README.es.md b/3-Data-Visualization/09-visualization-quantities/translations/README.es.md index e69de29b..e01f7379 100644 --- a/3-Data-Visualization/09-visualization-quantities/translations/README.es.md +++ b/3-Data-Visualization/09-visualization-quantities/translations/README.es.md @@ -0,0 +1,206 @@ +# Visualización de cantidades + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Visualización de cantidades - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | + +En esta lección explorarás cómo utilizar una de las muchas librerías de Python disponibles para aprender a crear interesantes visualizaciones relacionadas al concepto de cantidad. Utilizando un conjunto de datos limpios sobre las aves de Minnesota, podrás aprender muchos datos interesantes sobre la vida silvestre local. +## [Cuestionario previo](https://red-water-0103e7a0f.azurestaticapps.net/quiz/16) + +## Observar la envergadura con Matplotlib + +Una excelente librería para crear gráficos tanto simples como sofisticados de varios tipos es [Matplotlib](https://matplotlib.org/stable/index.html). En términos generales, el proceso de ploteamiento de datos utilizando estas librerías incluye la identificación de las partes del dataframe que desea enfocar, la realización de cualquier transformación en los datos necesarios, la asignación de los valores de los ejes x e y, la decisión de qué tipo de gráfico mostrar, y luego mostrar el gráfico. Matplotlib ofrece una gran variedad de visualizaciones, pero para esta lección, vamos a concentrarnos en las más apropiadas para visualizar cantidad: gráficos de líneas, gráficos de dispersión y gráficos de barras. + +> ✅ Usa el gráfico que mejor se adapte a la estructura de tus datos y a la historia que quieres contar. +> - Para analizar tendencias a lo largo del tiempo: línea +> - Para comparar valores: barra, columna, pastel, diagrama de dispersión +> - Para mostrar cómo se relacionan las partes con un todo: pastel +> - Para mostrar la distribución de los datos: gráfico de dispersión, barra +> - Para mostrar tendencias: línea, columna +> - Para mostrar relaciones entre valores: línea, gráfico de dispersión, burbuja + +Si tienes un conjunto de datos y necesitas descubrir qué cantidad de un elemento determinado está incluido, una de las primeras tareas que tienes que hacer será inspeccionar sus valores. + +✅ Hay muy buenas "hojas de trucos" disponibles para Matplotlib [aquí](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-1.png) y [aquí](https://github.com/matplotlib/cheatsheets/blob/master/cheatsheets-2.png). + +## Construir un gráfico de líneas sobre los valores de la envergadura de las aves + +Abre el archivo `notebook.ipynb` en la raíz de la carpeta de esta lección y añada una celda. + +> Nota: los datos están almacenados en la raíz de este repositorio en la carpeta `/data`. + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +Estos datos son una mezcla de texto y números: + + +| | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Snow goose | Anser caerulescens | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Empecemos por graficar algunos de los datos numéricos utilizando un gráfico de líneas básico. Supongamos que queremos ver la envergadura máxima de estas interesantes aves. + +```python +wingspan = birds['MaxWingspan'] +wingspan.plot() +``` +![Envergadura máxima](../images/max-wingspan.png) + +¿Qué nota inmediatamente? Parece que hay al menos un valor atípico: ¡esa es una gran envergadura! Una envergadura de 2.300 centímetros equivale a 23 metros: ¿hay pterodáctilos vagando por Minnesota? Vamos a investigar. + +Aunque podrías hacer una ordenación rápida en Excel para encontrar esos valores atípicos, que probablemente sean errores tipográficos, continúa el proceso de visualización trabajando desde el gráfico. + +Añade etiquetas al eje x para mostrar qué tipo de aves hay en cuestión: + +``` +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.xticks(rotation=45) +x = birds['Name'] +y = birds['MaxWingspan'] + +plt.plot(x, y) + +plt.show() +``` +![envergadura con etiquetas](../images/max-wingspan-labels.png) + +Incluso con la rotación de las etiquetas ajustada a 45 grados, hay demasiado para leer. Vamos a probar una estrategia diferente: etiquetar sólo los valores atípicos y poner las etiquetas dentro del gráfico. Puedes utilizar un gráfico de dispersión para tener más espacio para el etiquetado: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) + +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + plt.plot(x, y, 'bo') + if birds['MaxWingspan'][i] > 500: + plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) + +plt.show() +``` + +¿Qué está pasando aquí? Has utilizado `tick_params` para ocultar las etiquetas inferiores y luego has creado un bucle sobre tu conjunto de datos de aves. Al trazar el gráfico con pequeños puntos azules redondos utilizando `bo`, has comprobado si hay algún pájaro con una envergadura máxima superior a 500 y has mostrado su etiqueta junto al punto si es así. Desplazaste las etiquetas un poco en el eje Y (`y * (1 - 0.05)`) y utilizaste el nombre del ave como etiqueta. + +¿Qué descubrimos? + +![valores atípicos](../images/labeled-wingspan.png) +## Filtra tus datos + +Tanto el águila calva como el halcón de las praderas, aunque probablemente sean aves muy grandes, parecen estar mal etiquetadas, con un "0" adicional a su envergadura máxima. Es poco probable que te encuentres con un águila calva de 25 metros de envergadura, pero si es así, ¡háznoslo saber! Vamos a crear un nuevo marco de datos sin esos dos valores atípicos: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: + plt.plot(x, y, 'bo') +plt.show() +``` + +Al filtrar los valores atípicos, sus datos son ahora más coherentes y comprensibles. + +![gráfico de dispersión de la envergadura](../images/scatterplot-wingspan.png) + +Ahora que tenemos un conjunto de datos más limpio, al menos en lo que respecta a la envergadura, vamos a descubrir más cosas sobre estas aves. + +Aunque los gráficos de líneas y de dispersión pueden mostrar información sobre los valores de los datos y sus distribuciones, queremos pensar en los valores inherentes a este conjunto de datos. Podrías crear visualizaciones para responder a las siguientes preguntas sobre la cantidad: + +> ¿Cuántas categorías de aves hay y cuál es su número? +> ¿Cuántas aves están extinguidas, en peligro de extinción, son raras o comunes? +> ¿Cuántos hay de los distintos géneros y tipos en la terminología de Linneo? +## Explorar los gráficos de barras + +Los gráficos de barras son prácticos cuando se necesita mostrar agrupaciones de datos. Exploremos las categorías de aves que existen en este conjunto de datos para ver cuál es la más común por número. + +En el archivo del cuaderno, crea un gráfico de barras básico + +✅ Nota, puedes filtrar las dos aves atípicas que identificamos en la sección anterior, editar la errata de su envergadura, o déjalas para estos ejercicios que no dependen de los valores de envergadura. + +Si desea crear un gráfico de barras, puede seleccionar los datos en los que desea centrarse. Los gráficos de barras se pueden crear a partir de datos sin procesar: + +```python +birds.plot(x='Category', + kind='bar', + stacked=True, + title='Birds of Minnesota') + +``` +![datos completos en forma de gráfico de barras](../images/full-data-bar.png) + +Este gráfico de barras, sin embargo, es ilegible porque hay demasiados datos no agrupados. Necesitas seleccionar sólo los datos que quieres graficar, así que veamos la longitud de las aves según su categoría. + +Filtra tus datos para incluir sólo la categoría del pájaro. + +✅ Observa que usas Pandas para manejar los datos, y luego dejas que Matplotlib haga el gráfico. + +Como hay muchas categorías, puedes mostrar este gráfico verticalmente y ajustar su altura para tener en cuenta todos los datos: + +```python +category_count = birds.value_counts(birds['Category'].values, sort=True) +plt.rcParams['figure.figsize'] = [6, 12] +category_count.plot.barh() +``` +![categoría y altura](../images/category-counts.png) + +Este gráfico de barras muestra una buena visión del número de aves en cada categoría. En un abrir y cerrar de ojos, se ve que el mayor número de aves de esta región se encuentra en la categoría de patos/gatos/aves acuáticas. Minnesota es el "país de los 10.000 lagos", así que no es de extrañar. + +✅ Prueba otros conteos en este conjunto de datos. ¿Le sorprende algo? + +## Comparación de datos + +Puedes probar diferentes comparaciones de datos agrupados creando nuevos ejes. Intenta una comparación de la longitud máxima de un pájaro, basada en su categoría: + +```python +maxlength = birds['MaxLength'] +plt.barh(y=birds['Category'], width=maxlength) +plt.rcParams['figure.figsize'] = [6, 12] +plt.show() +``` +![comparación de datos](../images/category-length.png) + +Aquí no hay nada sorprendente: los colibríes tienen la menor longitud máxima en comparación con los pelícanos o los gansos. ¡Es bueno cuando los datos tienen un sentido lógico! + +Puede crear visualizaciones más interesantes de los gráficos de barras superponiendo los datos. Superpongamos la longitud mínima y máxima en una categoría de aves determinada: + +```python +minLength = birds['MinLength'] +maxLength = birds['MaxLength'] +category = birds['Category'] + +plt.barh(category, maxLength) +plt.barh(category, minLength) + +plt.show() +``` +En este gráfico, puedes ver el rango por categoría de ave de la longitud mínima y la longitud máxima. Se puede decir con seguridad que, dados estos datos, cuanto más grande es el ave, mayor es su rango de longitud. ¡Fascinante! + +![valores superpuestos](../images/superimposed.png) + +## 🚀 Desafío + +Este conjunto de datos sobre aves ofrece una gran cantidad de información sobre diferentes tipos de aves dentro de un ecosistema concreto. Busca en Internet y comprueba si puedes encontrar otros conjuntos de datos orientados a las aves. Practica la construcción de tablas y gráficos en torno a estas aves para descubrir datos que no conocías. + +## [Cuestionario posterior a la clase](https://red-water-0103e7a0f.azurestaticapps.net/quiz/17) + +## Repaso y Autoestudio + +Esta primera lección has recibido alguna información sobre cómo utilizar Matplotlib para visualizar cantidades. Investiga sobre otras formas de trabajar con conjuntos de datos para su visualización. [Plotly](https://github.com/plotly/plotly.py) es otra forma que no cubriremos en estas lecciones, así que echa un vistazo a lo que puede ofrecer. +## Asignación + +[Líneas, dispersiones y barras](assignment.es.md) \ No newline at end of file diff --git a/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md b/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md new file mode 100644 index 00000000..60fcb875 --- /dev/null +++ b/3-Data-Visualization/09-visualization-quantities/translations/assignment.es.md @@ -0,0 +1,11 @@ +# Líneas, Scatters y Barras + +## Instrucciones + +En esta lección, has trabajado con gráficos de líneas, gráficos de dispersión y gráficos de barras para mostrar hechos interesantes sobre este conjunto de datos. En esta asignación, profundiza en el conjunto de datos para descubrir un hecho sobre un tipo de ave determinado. Por ejemplo, crea un cuaderno que visualice todos los datos interesantes que puedas descubrir sobre los gansos de nieve. Utiliza los tres gráficos mencionados anteriormente para contar una historia en tu cuaderno. + +## Rúbrica + +Ejemplar | Adecuado | Necesita mejorar +--- | --- | -- | +El cuaderno se presenta con buenas anotaciones, una narración sólida y gráficos atractivos | Al cuaderno le falta uno de estos elementos | Al cuaderno le faltan dos de estos elementos \ No newline at end of file diff --git a/3-Data-Visualization/translations/README.es.md b/3-Data-Visualization/translations/README.es.md index e69de29b..63386387 100644 --- a/3-Data-Visualization/translations/README.es.md +++ b/3-Data-Visualization/translations/README.es.md @@ -0,0 +1,27 @@ +# Visualizaciones + +![una abeja sobre una flor de lavanda](../images/bee.jpg) +> Foto por Jenna Lee en Unsplash + +Visualizar datos es una de las tareas más importantes de un científico de datos. Las imágenes valen más de 100 palabras, y una visualización puede ayudarte a identificar toda clase de partes interesantes de tus datos como picos, valores atípicos, agrupaciones, tendencias, y más, que pueden ayudarte a entender la historia que tus datos están tratando de contar.  + +En estas cinco lecciones, podrás explorar datos provenientes de la naturaleza y crear interesantes y hermosas visualizaciones usando varias técnicas. +### Tópicos + +1. [Visualización de cantidades](09-visualization-quantities/README.md) +2. [Visualización de la distribución](10-visualization-distributions/README.md) +3. [Visualización de proporciones](11-visualization-proportions/README.md) +4. [Visualización de relaciones](12-visualization-relationships/README.md) +5. [Hacer visualizaciones significativas](13-meaningful-visualizations/README.md) + +### Créditos + +Estas lecciones de visualización fueron escritas con 🌸 por [Jen Looper](https://twitter.com/jenlooper) + +🍯 Los datos sobre la producción de miel en EU provienen del proyecto de Jessica Li en [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). Los [datos](https://usda.library.cornell.edu/concern/publications/rn301137d) se han obtenido del [Departamento de Agricultura de los Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 Los datos sobre hongos también han sido obtenidos de [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) revisados por Hatteras Dunton. Este conjunto de datos incluye descripciones de muestras hipotéticas correspondientes a 23 especies de hongos con agallas de la familia Agaricus y Lepiota. Hongos extraídos de La Guía de Campo de la Sociedad Audubon para los Hongos de América del Norte (1981). Este conjunto de datos fue donado a UCI ML 27 en 1987. + +🦆 Los datos de las aves de Minnesota provienen de [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) extraídos de [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) por Hannah Collins. + +Todos estos conjuntos de datos tienen licencia [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). \ No newline at end of file From 84b8455c14dc235a754bce7589c09411b8d10574 Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Thu, 21 Oct 2021 16:25:50 +0300 Subject: [PATCH 120/254] links improved --- translations/README.ru.md | 44 +++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/translations/README.ru.md b/translations/README.ru.md index 56aeb7cc..e293124c 100644 --- a/translations/README.ru.md +++ b/translations/README.ru.md @@ -18,7 +18,7 @@ |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Title.png)| |:---:| -| Data Science For Beginners - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Наука о данных для начинающих - _Рисунок [@nitya](https://twitter.com/nitya)_ | # Начало работы @@ -60,31 +60,31 @@ |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../sketchnotes/00-Roadmap.png)| |:---:| -| Data Science For Beginners: Roadmap - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | +| Наука о данных: Дорожная карта - _Рисунок [@nitya](https://twitter.com/nitya)_ | | Номер урока | Тема | Раздел | Цели | Ссылка | Автор | | :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | -| 01 | Что такое наука о данных | [Введение](1-Introduction/README.md) | Изучить основные понятия науки о данных и её связь с искусственным интеллектом, машинным обучением и большими данными. | [урок](1-Introduction/01-defining-data-science/README.md) [видео](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | -| 02 | Этика и наука о данных | [Введение](1-Introduction/README.md) | Этические аспекты в области науки о данных. | [урок](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | -| 03 | Что такое данные | [Введение](1-Introduction/README.md) | Классификация данных и их источники. | [урок](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | -| 04 | Введение в статистику и теорию вероятности | [Введение](1-Introduction/README.md) | Вероятностные и статистические приёмы для изучения данных.| [урок](1-Introduction/04-stats-and-probability/README.md) [видео](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | -| 05 | Работа с реляционными данными | [Работа с данными](2-Working-With-Data/README.md) | Введение в реляционные данные, основы изучения и анализа реляционных данных при помощи структурированного языка запросов, также известного как SQL (произносится “си-квел”). | [урок](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | -| 06 | Работа с NoSQL данными | [Работа с данными](2-Working-With-Data/README.md) | Введение в нереляционные данные, их разнообразие и основы работы с документоориентированными базами данных. | [урок](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| -| 07 | Работа с языком программирования Python | [Работа с данными](2-Working-With-Data/README.md) | Основы использования языка Python при исследовании данных на примере библиотеки Pandas. Рекомендуется предварительно познакомиться с Python. | [урок](2-Working-With-Data/07-python/README.md) [видео](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | -| 08 | Подготовка данных | [Работа с данными](2-Working-With-Data/README.md) | Методы очистки и трансформации данных для работы с пропусками, ошибками и неполными данными. | [урок](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | -| 09 | Визуализация количественных данных | [Визуализация данных](3-Data-Visualization/README.md) | Использование библиотеки Matplotlib для визуализации данных о разнообразии птиц 🦆 | [урок](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | -| 10 | Визуализация распределения данных | [Визуализация данных](3-Data-Visualization/README.md) | Визуализация наблюдений и трендов на временнóм интервале | [урок](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | -| 11 | Визуализация пропорций | [Визуализация данных](3-Data-Visualization/README.md) | Визуализация дискретных и сгруппированных процентных соотношений. | [урок](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | -| 12 | Визуализация связей | [Визуализация данных](3-Data-Visualization/README.md) | Визуализация связей и корреляций между наборами данных и их переменными. | [урок](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | -| 13 | Выразительная визуализация | [Визуализация данных](3-Data-Visualization/README.md) | Методы и инструкция для построения визуализации для эффективного решения проблем и получения инсайтов. | [урок](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | -| 14 | Введение в жизненный цикл проекта в области науки о данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Введение в жизненный цикл проекта в области науки о данных и его первый этап получения и извлечения данных. | [урок](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | -| 15 | Анализ данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сосредоточен на методах анализа данных. | [урок](4-Data-Science-Lifecycle/15-Analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | -| 16 | Взаимодействие на основе данных| [Жизненный цикл проекта](4-Data-Science-Lifecycle/README.md) | Данный этап жизненного цикла сфокусирован на презентацию инсайтов в данных в виде, легком для понимания лицам, принимающим решения. | [урок](4-Data-Science-Lifecycle/16-Communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | -| 17 | Преимущества облачной инфраструктуры для науки о данных. | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Данная серия уроков знакомит с применением облачных технологии в науке о данных и его преимуществах. | [урок](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 18 | Наука о данных в облачной инфраструктуре: подходы с минимальным использованием программирования и без него. | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Обучение моделей с минимальным использованием программирования. |[урок](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 19 | Наука о данных в облачной инфраструктуре: применение Azure ML SDK | [Облачные данные](5-Data-Science-In-Cloud/README.md) | Развёртывание моделей с использованием Azure Machine Learning Studio. | [урок](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | -| 20 | Наука о данных на практике | [На практике](6-Data-Science-In-Wild/README.md) | Проекты в области науки о данных на практике. | [урок](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | +| 01 | Что такое наука о данных | [Введение](1-Introduction/translations/README.ru.md) | Изучить основные понятия науки о данных и её связь с искусственным интеллектом, машинным обучением и большими данными. | [урок](1-Introduction/01-defining-data-science/translations/README.ru.md) [видео](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Этика и наука о данных | [Введение](1-Introduction/translations/README.ru.md) | Этические аспекты в области науки о данных. | [урок](1-Introduction/02-ethics/translations/README.ru.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Что такое данные | [Введение](1-Introduction/translations/README.ru.md) | Классификация данных и их источники. | [урок](1-Introduction/03-defining-data/translations/README.ru.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Введение в статистику и теорию вероятности | [Введение](1-Introduction/translations/README.ru.md) | Вероятностные и статистические приёмы для изучения данных.| [урок](1-Introduction/04-stats-and-probability/translations/README.ru.md) [видео](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Работа с реляционными данными | [Работа с данными](2-Working-With-Data/translations/README.ru.md) | Введение в реляционные данные, основы изучения и анализа реляционных данных при помощи структурированного языка запросов, также известного как SQL (произносится “си-квел”). | [урок](2-Working-With-Data/05-relational-databases/translations/README.ru.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Работа с NoSQL данными | [Работа с данными](2-Working-With-Data/translations/README.ru.md) | Введение в нереляционные данные, их разнообразие и основы работы с документоориентированными базами данных. | [урок](2-Working-With-Data/06-non-relational/translations/README.ru.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Работа с языком программирования Python | [Работа с данными](2-Working-With-Data/translations/README.ru.md) | Основы использования языка Python при исследовании данных на примере библиотеки Pandas. Рекомендуется предварительно познакомиться с Python. | [урок](2-Working-With-Data/07-python/translations/README.ru.md) [видео](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Подготовка данных | [Работа с данными](2-Working-With-Data/translations/README.ru.md) | Методы очистки и трансформации данных для работы с пропусками, ошибками и неполными данными. | [урок](2-Working-With-Data/08-data-preparation/translations/README.ru.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Визуализация количественных данных | [Визуализация данных](3-Data-Visualization/translations/README.ru.md) | Использование библиотеки Matplotlib для визуализации данных о разнообразии птиц 🦆 | [урок](3-Data-Visualization/09-visualization-quantities/translations/README.ru.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Визуализация распределения данных | [Визуализация данных](3-Data-Visualization/translations/README.ru.md) | Визуализация наблюдений и трендов на временнóм интервале | [урок](3-Data-Visualization/10-visualization-distributions/translations/README.ru.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Визуализация пропорций | [Визуализация данных](3-Data-Visualization/translations/README.ru.md) | Визуализация дискретных и сгруппированных процентных соотношений. | [урок](3-Data-Visualization/11-visualization-proportions/translations/README.ru.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Визуализация связей | [Визуализация данных](3-Data-Visualization/translations/README.ru.md) | Визуализация связей и корреляций между наборами данных и их переменными. | [урок](3-Data-Visualization/12-visualization-relationships/translations/README.ru.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Выразительная визуализация | [Визуализация данных](3-Data-Visualization/translations/README.ru.md) | Методы и инструкция для построения визуализации для эффективного решения проблем и получения инсайтов. | [урок](3-Data-Visualization/13-meaningful-visualizations/translations/README.ru.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Введение в жизненный цикл проекта в области науки о данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/translations/README.ru.md) | Введение в жизненный цикл проекта в области науки о данных и его первый этап получения и извлечения данных. | [урок](4-Data-Science-Lifecycle/14-Introduction/translations/README.ru.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Анализ данных | [Жизненный цикл проекта](4-Data-Science-Lifecycle/translations/README.ru.md) | Данный этап жизненного цикла сосредоточен на методах анализа данных. | [урок](4-Data-Science-Lifecycle/15-Analyzing/translations/README.ru.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Взаимодействие на основе данных| [Жизненный цикл проекта](4-Data-Science-Lifecycle/translations/README.ru.md) | Данный этап жизненного цикла сфокусирован на презентацию инсайтов в данных в виде, легком для понимания лицам, принимающим решения. | [урок](4-Data-Science-Lifecycle/16-Communication/translations/README.ru.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Преимущества облачной инфраструктуры для науки о данных. | [Облачные данные](5-Data-Science-In-Cloud/translations/README.ru.md) | Данная серия уроков знакомит с применением облачных технологии в науке о данных и его преимуществах. | [урок](5-Data-Science-In-Cloud/17-Introduction/translations/README.ru.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 18 | Наука о данных в облачной инфраструктуре: подходы с минимальным использованием программирования и без него. | [Облачные данные](5-Data-Science-In-Cloud/translations/README.ru.md) | Обучение моделей с минимальным использованием программирования. |[урок](5-Data-Science-In-Cloud/18-Low-Code/translations/README.ru.md) | [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 19 | Наука о данных в облачной инфраструктуре: применение Azure ML SDK | [Облачные данные](5-Data-Science-In-Cloud/translations/README.ru.md) | Развёртывание моделей с использованием Azure Machine Learning Studio. | [урок](5-Data-Science-In-Cloud/19-Azure/translations/README.ru.md)| [Tiffany](https://twitter.com/TiffanySouterre) and [Maud](https://twitter.com/maudstweets) | +| 20 | Наука о данных на практике | [На практике](6-Data-Science-In-Wild/translations/README.ru.md) | Проекты в области науки о данных на практике. | [урок](6-Data-Science-In-Wild/20-Real-World-Examples/translations/README.ru.md) | [Nitya](https://twitter.com/nitya) | ## Оффлайн доступ From aaa36e6c56e2efc6bbd6e61e2cd9559f0e82c30d Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 21 Oct 2021 11:04:47 -0300 Subject: [PATCH 121/254] Translated the Defining Data Science Assignment to PT-BR --- .../translations/assignment.pt-br.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 1-Introduction/01-defining-data-science/translations/assignment.pt-br.md diff --git a/1-Introduction/01-defining-data-science/translations/assignment.pt-br.md b/1-Introduction/01-defining-data-science/translations/assignment.pt-br.md new file mode 100644 index 00000000..5d7754cd --- /dev/null +++ b/1-Introduction/01-defining-data-science/translations/assignment.pt-br.md @@ -0,0 +1,31 @@ +# Tarefa: Cenários de Ciência de Dados + +Nessa primeira tarefa, nós pedimos que você pense sobre algum processo ou problema da vida real em diferentes domínios de problemas, e como você pode melhorar isso usando o processo de Ciência de Dados: Pense sobre: + +1. Quais dados você pode coletar? +1. Como você coletaria os dados? +1. Como você armazenaria os dados? O quão grande os dados provavelmente são? +1. Quais insights você pode ter a partir desses dados? Quais decisões nós podemos fazer baseando-se nos dados? + +Tente pensar sobre 3 diferentes problemas/processos e descreva cada um dos pontos acimas para cada domínio de problemas. + +Aqui estão alguns dos domínio de problemas e problemas que podem te ajudar a começar a pensar: + +1. Como você usa dados para melhorar o processo de educação para crianças nas escolas? +1. Como você usa dados para controlar vacinação em uma pandemia? +1. Como você usa dados para garantir que você está sendo produtivo no trabalho? +## Instruções + +Preencha a seguinte tabela (substitua os domínios de problemas sugeridos pelos os seus próprios se necessário): + +| Domínio de Problema | Problema | Quais dados a serem coletados | Como armazenar os dados | Quais insights/decisões nós podemos fazer | +|----------------|---------|-----------------------|-----------------------|--------------------------------------| +| Educação | | | | | +| Vacinação | | | | | +| Produtividade | | | | | + +## Rubrica + +Exemplar | Adequado | Precisa melhorar +--- | --- | -- | +Um foi capaz de identificar fontes de dados razoáveis, formas de armazenar dados e possíveis insights/decisões para todos os domínios de problema | Alguns dos aspectos da solução não estão detalhados, armazenamento de dados não é discutido, pelo menos 2 domínios de problemas são descritos | Apenas parte da solução de dados são descritas, apenas um domínio de problema é considerado. From 86e12ec646b9bbe84a0303a2e06736c9db46ab36 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 21 Oct 2021 11:21:32 -0300 Subject: [PATCH 122/254] Translated Ethics Assignment to PT-BR --- .../translations/assignment.pt-br.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 1-Introduction/02-ethics/translations/assignment.pt-br.md diff --git a/1-Introduction/02-ethics/translations/assignment.pt-br.md b/1-Introduction/02-ethics/translations/assignment.pt-br.md new file mode 100644 index 00000000..7269aca9 --- /dev/null +++ b/1-Introduction/02-ethics/translations/assignment.pt-br.md @@ -0,0 +1,21 @@ +## Escreva um Caso de Estudo de Ética de Dados + +## Instruções + +Você aprendeu sobre vários [Desafios da Ética de Dados](README?id=_2-ethics-challenges) e viu alguns exemplos de [Estudo de Casos](README?id=_3-case-studies) refletindo desafios da ética de dados em contextos do mundo real. + +Nessa tarefa você irá escrever o seu próprio estudo de caso refletindo um desafio da ética de dados de seu própria experiência, ou de um contexto relevante do mundo real que você está familiarizado. Apenas siga esses passos: + +1. `Escolha um Desafio da Ética de Dados`. Olhe [os exemplos da aula](README?id=_2-ethics-challenges) ou explore exemplos onlines como [as Checklists da Deon](https://deon.drivendata.org/examples/) para se inspirar. + +2. `Descreva um Exemplo do Mundo Real`. Pense sobre a situação que você ouviu sobre (manchetes, pesquisas etc.) ou experienciou (comunidade local), onde esse desafio em específico aconteceu. Pense sobre as questões de ética de dados relacionadas ao desafio - e discuta os danos potenciais ou consequências não-ntencionais que são levantados por causa desse problema. Pontos bônus: pense sobre potenciais soluções ou precessos que podem ser aplicados aqui para ajuda a eliminar ou mitigar o impacto adverso desse desafio. + +3. `Forneça um Lista de Recursos Relacionados`. Compartilhe um ou mais recursos (links para artigos, posts ou imagens de blogs pessoais, artigos de pesquisa online etc.) para provar que isso acotnece no mundo real. Pontos bônus: compartilhe recursos que também mostrar potenciais danos e consequências de incidentes, ou destacam medidas positivas tomadas para prevenir sua recorrência. + + + +## Rubrica + +Exemplar | Adequado | Precisa melhorar +--- | --- | -- | +Um ou mais desafios de ética de dados são identificados.

O estudo de caso descreve claramente um incidente do mundo real refletindo aquele desafio, e destaca consequências não desejáveis ou danos que causou.

Existe pelo menos um recurso linkado para provar que isso aconteceu. |Um desafio da ética de dados é identificado.

Pelo menos um dano ou consequência relevante é discutido brevemete.

No entanto a discussão é limitada ou falta provas de uma ocorrência no mundo real. | Um desafio de dados é identificado.

No entanto a descrição ou recursos não refletem adequadamente o desafio ou provam que aconteceu no mundo real. | From cb45f5bf98def4349a5f676ec2b4c81075aa80ee Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 21 Oct 2021 11:33:59 -0300 Subject: [PATCH 123/254] Translated Defining Data Assignment to PT-BR --- .../translations/assignment.pt-br.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 1-Introduction/03-defining-data/translations/assignment.pt-br.md diff --git a/1-Introduction/03-defining-data/translations/assignment.pt-br.md b/1-Introduction/03-defining-data/translations/assignment.pt-br.md new file mode 100644 index 00000000..d3b3a131 --- /dev/null +++ b/1-Introduction/03-defining-data/translations/assignment.pt-br.md @@ -0,0 +1,65 @@ +# Classificando Datasets + +## Instruções + +Siga as instruções nessa tarefa para identificar e classificar os dados como um de cada dos seguintes tipos de dados: + +**Tipos de Estrutura**: Estruturado, Semi Estruturado, ou Não-Estruturado + +**Tipos de Valor**: Qualitativo ou Quantitativo + +**Tipos de Fonte**: Primária ou Secundária + +1. Uma empresa voi adquirida e agora tem uma empresa-mãe. Os cientistas de dados receberam uma planilha com números de telefones dos clientes da empresa-mãe. + +Tipo de Estrutura: + +Tipo de Valor: + +Tipo de Fonte: + +--- + +2. Um smart watch vem coletando dados da frequência cardíaca de seu usuário, e os dados brutos estão em formato JSON. + +Tipo de Estrutura: + +Tipo de Valor: + +Tipo de Fonte: + +--- + +Uma pesquisa sobre o moral do funcionário no local de trabalho armazenada em um arquivo CSV. + +Tipo de Estrutura: + +Tipo de Valor: + +Tipo de Fonte: + +--- + +4. Astrofísicos estão acessando um banco de dados de galáxias que foram coletados por uma sonda espacial. Os dados contém os números de planetas dentro de cada galáxia. + +Tipo de Estrutura: + +Tipo de Valor: + +Tipo de Fonte: + +--- + +5. Um aplicativo de finanças pessoas usa APIs para conectar com as contas financeiras dos usuários para calcular seu net worth. Eles podem ver todas as suas transações em um formato de linhas e colunas e são similares com uma planilha. + +Tipo de Estrutura: + +Tipo de Valor: + +Tipo de Fonte: + +## Rubrica + +Exemplar | Adequado | Precisa melhorar +--- | --- | -- | +Identificou corretamente todas as estruturas, valores, e fontes |Identificou corretamente 3 todas as estruturas, valores e fontes|Correctly Identificou 2 ou menos todas as estruturas, valores, e fontes| \ No newline at end of file From 668baa69bde4228682625366803c25437d2df6ae Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 21 Oct 2021 11:42:29 -0300 Subject: [PATCH 124/254] Translated Stats and Probability Assignment to PT-BR --- .../translations/assignment.pt-br.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 1-Introduction/04-stats-and-probability/translations/assignment.pt-br.md diff --git a/1-Introduction/04-stats-and-probability/translations/assignment.pt-br.md b/1-Introduction/04-stats-and-probability/translations/assignment.pt-br.md new file mode 100644 index 00000000..81a13b3d --- /dev/null +++ b/1-Introduction/04-stats-and-probability/translations/assignment.pt-br.md @@ -0,0 +1,25 @@ +# Pequeno Estudo de Diabetes + +Nessa tarefa, nós vamos trabalhar com um pequeno dataset de diabetes em pacientes retirados [daqui](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html). + +| | AGE | SEX | BMI | BP | S1 | S2 | S3 | S4 | S5 | S6 | Y | +|---|-----|-----|-----|----|----|----|----|----|----|----|----| +| 0 | 59 | 2 | 32.1 | 101. | 157 | 93.2 | 38.0 | 4. | 4.8598 | 87 | 151 | +| 1 | 48 | 1 | 21.6 | 87.0 | 183 | 103.2 | 70. | 3. | 3.8918 | 69 | 75 | +| 2 | 72 | 2 | 30.5 | 93.0 | 156 | 93.6 | 41.0 | 4.0 | 4. | 85 | 141 | +| ... | ... | ... | ... | ...| ...| ...| ...| ...| ...| ...| ... | + +## Instruções + +* Abre o [notebook da tarefa](assignment.ipynb) em um ambiente jupyter notebook +* Complete todas as tarefas listadas no notebook, nomeadamente: + [ ] Compute os valores de média e variância para todos os valores + [ ] "Plote" boxplots para BMI, BP e Y dependendo do gênero + [ ] Qual a distribuição das variáveis Age, Sex, BMI e Y? + [ ] Teste a correlação entre diferentes variáveis e progressão da doença (Y) + [ ] Teste a hipótese que o grau de progressão da diabetes é diferente entre homens e mulheres +## Rubrica + +Exemplar | Adequado | Precisa melhorar +--- | --- | -- | +Todas as tarefas estão completados, graficamente ilustradas e explicadas | A maior para das tarefas estão completadas, explicações ou conclusões a partir de gráficos e/ou valores obtidos estão faltando | Apenas as tarefas básicas como computar a média/variância e "plots" básicos estão completados, nenhuma conclusão é feita a partir dos dados dados. \ No newline at end of file From f19acb8cb0d4f78a26960d9f16acedd4211ab5e7 Mon Sep 17 00:00:00 2001 From: Izael Date: Thu, 21 Oct 2021 11:49:50 -0300 Subject: [PATCH 125/254] Fixed broken links on the translated files --- .../01-defining-data-science/translations/README.pt-br.md | 2 +- .../translations/{RAEDME.pt-br.md => README.pt-br.md} | 2 +- 1-Introduction/02-ethics/translations/assignment.pt-br.md | 4 ++-- 1-Introduction/03-defining-data/translations/README.pt-br.md | 2 +- .../04-stats-and-probability/translations/README.pt-br.md | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename 1-Introduction/02-ethics/translations/{RAEDME.pt-br.md => README.pt-br.md} (99%) diff --git a/1-Introduction/01-defining-data-science/translations/README.pt-br.md b/1-Introduction/01-defining-data-science/translations/README.pt-br.md index 3597fe3a..4b2708c4 100644 --- a/1-Introduction/01-defining-data-science/translations/README.pt-br.md +++ b/1-Introduction/01-defining-data-science/translations/README.pt-br.md @@ -158,7 +158,7 @@ Visite [`notebook.ipynb`](../notebook.ipynb) para ler o código. Você também p ## Tarefas * **Tarefa 1**: Modifique o código acima para descobrir conceitos relacionados para as áreas de **Big Data** e **Aprendizado de Máquina** -* **Tarefa 2**: [Pense Sobre Cenários de Ciência de Dados](assignment.md) +* **Tarefa 2**: [Pense Sobre Cenários de Ciência de Dados](assignment.pt-br.md) ## Créditos diff --git a/1-Introduction/02-ethics/translations/RAEDME.pt-br.md b/1-Introduction/02-ethics/translations/README.pt-br.md similarity index 99% rename from 1-Introduction/02-ethics/translations/RAEDME.pt-br.md rename to 1-Introduction/02-ethics/translations/README.pt-br.md index 08bf7e54..4c6be792 100644 --- a/1-Introduction/02-ethics/translations/RAEDME.pt-br.md +++ b/1-Introduction/02-ethics/translations/README.pt-br.md @@ -259,4 +259,4 @@ Cursos e livros ajudam a entender os conceitos essencias da ética, enquanto est # Tarefa -[Escreva um Caso de Uso de Ética de Dados](assignment.md) +[Escreva um Caso de Uso de Ética de Dados](assignment.pt-br.md) diff --git a/1-Introduction/02-ethics/translations/assignment.pt-br.md b/1-Introduction/02-ethics/translations/assignment.pt-br.md index 7269aca9..7edc76c7 100644 --- a/1-Introduction/02-ethics/translations/assignment.pt-br.md +++ b/1-Introduction/02-ethics/translations/assignment.pt-br.md @@ -2,11 +2,11 @@ ## Instruções -Você aprendeu sobre vários [Desafios da Ética de Dados](README?id=_2-ethics-challenges) e viu alguns exemplos de [Estudo de Casos](README?id=_3-case-studies) refletindo desafios da ética de dados em contextos do mundo real. +Você aprendeu sobre vários [Desafios da Ética de Dados](README.pt-br.md#2-desafios-de-ética) e viu alguns exemplos de [Estudo de Casos](README.pt-br.md#3-estudo-de-casos) refletindo desafios da ética de dados em contextos do mundo real. Nessa tarefa você irá escrever o seu próprio estudo de caso refletindo um desafio da ética de dados de seu própria experiência, ou de um contexto relevante do mundo real que você está familiarizado. Apenas siga esses passos: -1. `Escolha um Desafio da Ética de Dados`. Olhe [os exemplos da aula](README?id=_2-ethics-challenges) ou explore exemplos onlines como [as Checklists da Deon](https://deon.drivendata.org/examples/) para se inspirar. +1. `Escolha um Desafio da Ética de Dados`. Olhe [os exemplos da aula](README.pt-br.md#2-desafios-de-ética) ou explore exemplos onlines como [as Checklists da Deon](https://deon.drivendata.org/examples/) para se inspirar. 2. `Descreva um Exemplo do Mundo Real`. Pense sobre a situação que você ouviu sobre (manchetes, pesquisas etc.) ou experienciou (comunidade local), onde esse desafio em específico aconteceu. Pense sobre as questões de ética de dados relacionadas ao desafio - e discuta os danos potenciais ou consequências não-ntencionais que são levantados por causa desse problema. Pontos bônus: pense sobre potenciais soluções ou precessos que podem ser aplicados aqui para ajuda a eliminar ou mitigar o impacto adverso desse desafio. diff --git a/1-Introduction/03-defining-data/translations/README.pt-br.md b/1-Introduction/03-defining-data/translations/README.pt-br.md index 2dcb205d..44ec6c03 100644 --- a/1-Introduction/03-defining-data/translations/README.pt-br.md +++ b/1-Introduction/03-defining-data/translations/README.pt-br.md @@ -64,4 +64,4 @@ O Kaggle é uma excelente fonte para datasets abertos. Use a [ferramenta de busc ## Tarefa -[Classificando Datasets](assignment.md) +[Classificando Datasets](assignment.pt-br.md) diff --git a/1-Introduction/04-stats-and-probability/translations/README.pt-br.md b/1-Introduction/04-stats-and-probability/translations/README.pt-br.md index 348fb09c..4ac6139d 100644 --- a/1-Introduction/04-stats-and-probability/translations/README.pt-br.md +++ b/1-Introduction/04-stats-and-probability/translations/README.pt-br.md @@ -254,7 +254,7 @@ Probabilidade e estatística é um tópico muito amplo que merece um curso próp ## Tarefa -[Small Diabetes Study (Pequeno Estudo de Diabetes)](../assignment.md) +[Small Diabetes Study (Pequeno Estudo de Diabetes)](assignment.pt-br.md) ## Créditos From 3a387be370bd5b7957309038eeaa3dec337fd242 Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Fri, 22 Oct 2021 11:12:31 +0530 Subject: [PATCH 126/254] Created assignment.hi.md --- .../translations/assignment.hi.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.hi.md diff --git a/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.hi.md b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.hi.md new file mode 100644 index 00000000..6c99ba47 --- /dev/null +++ b/6-Data-Science-In-Wild/20-Real-World-Examples/translations/assignment.hi.md @@ -0,0 +1,38 @@ +# ग्रहीय कंप्यूटर डेटासेट का अन्वेषण करें + +## निर्देश + +इस पाठ में, हमने विभिन्न डेटा विज्ञान अनुप्रयोग डोमेन के बारे में बात की - अनुसंधान, स्थिरता और डिजिटल मानविकी से संबंधित उदाहरणों में गहन गोता लगाने के साथ। इस असाइनमेंट में, आप इनमें से किसी एक उदाहरण का अधिक विस्तार से अन्वेषण करेंगे, और स्थिरता डेटा के बारे में अंतर्दृष्टि प्राप्त करने के लिए डेटा विज़ुअलाइज़ेशन और विश्लेषण के आसपास अपनी कुछ सीखों को लागू करेंगे। + +[प्लैनेटरी कंप्यूटर](https://planetarycomputer.microsoft.com/) प्रोजेक्ट में डेटासेट और एपीआई हैं जिन्हें किसी खाते से एक्सेस किया जा सकता है - यदि आप असाइनमेंट के बोनस चरण को आज़माना चाहते हैं तो एक्सेस के लिए अनुरोध करें। साइट एक [एक्सप्लोरर](https://planetarycomputer.microsoft.com/explore) सुविधा भी प्रदान करती है जिसका उपयोग आप बिना खाता बनाए भी कर सकते हैं। + + +`कदम:` +एक्सप्लोरर इंटरफ़ेस (नीचे स्क्रीनशॉट में दिखाया गया है) आपको एक डेटासेट (प्रदान किए गए विकल्पों में से), एक प्रीसेट क्वेरी (डेटा फ़िल्टर करने के लिए) और एक रेंडरिंग विकल्प (एक प्रासंगिक विज़ुअलाइज़ेशन बनाने के लिए) का चयन करने देता है। इस असाइनमेंट में, आपका कार्य है: + + 1. [एक्सप्लोरर दस्तावेज़ीकरण] (https://planetarycomputer.microsoft.com/docs/overview/explorer/) पढ़ें - विकल्पों को समझें। + 2. डेटासेट को एक्सप्लोर करें [कैटलॉग](https://planetarycomputer.microsoft.com/catalog) - प्रत्येक का उद्देश्य जानें। + 3. एक्सप्लोरर का उपयोग करें - रुचि का डेटासेट चुनें, प्रासंगिक क्वेरी और रेंडरिंग विकल्प चुनें। + + +![प्लैनेटरी कंप्यूटर एक्सप्लोरर](इमेज/प्लैनेटरी-कंप्यूटर-एक्सप्लोरर.पीएनजी) + +`आपका कार्य:` +अब उस विज़ुअलाइज़ेशन का अध्ययन करें जो ब्राउज़र में प्रस्तुत किया गया है और निम्नलिखित का उत्तर दें: + * डेटासेट में क्या _features_ हैं? + * विज़ुअलाइज़ेशन क्या _insights_ या परिणाम प्रदान करता है? + * परियोजना के स्थायित्व लक्ष्यों के लिए उन अंतर्दृष्टि के _प्रभाव_ क्या हैं? + * विज़ुअलाइज़ेशन की _सीमाएँ_ क्या हैं (यानी, आपको कौन सी अंतर्दृष्टि नहीं मिली?) + * यदि आप कच्चा डेटा प्राप्त कर सकते हैं, तो आप कौन से _वैकल्पिक विज़ुअलाइज़ेशन_ बनाएंगे, और क्यों? + +`बोनस अंक:` +एक खाते के लिए आवेदन करें - और स्वीकार किए जाने पर लॉगिन करें। + * नोटबुक में अपरिष्कृत डेटा खोलने के लिए _Launch Hub_ विकल्प का उपयोग करें। + * डेटा को अंतःक्रियात्मक रूप से एक्सप्लोर करें, और उन वैकल्पिक विज़ुअलाइज़ेशन को लागू करें जिनके बारे में आपने सोचा था। + * अब अपने कस्टम विज़ुअलाइज़ेशन का विश्लेषण करें - क्या आप उन जानकारियों को प्राप्त करने में सक्षम थे जिन्हें आपने पहले याद किया था? + +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधार की जरूरत +--- | --- | -- | +सभी पांच मुख्य सवालों के जवाब दिए गए। छात्र ने स्पष्ट रूप से पहचाना कि कैसे वर्तमान और वैकल्पिक विज़ुअलाइज़ेशन स्थिरता के उद्देश्यों या परिणामों में अंतर्दृष्टि प्रदान कर सकते हैं।| छात्र ने कम से कम शीर्ष 3 प्रश्नों के उत्तर बहुत विस्तार से दिए, यह दिखाते हुए कि एक्सप्लोरर के साथ व्यावहारिक अनुभव था। | छात्र कई प्रश्नों का उत्तर देने में विफल रहा, या अपर्याप्त विवरण प्रदान किया - यह दर्शाता है कि परियोजना के लिए कोई सार्थक प्रयास नहीं किया गया था | From bce79b438dc2c37b62ba0103c53dfecb58c48a77 Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Fri, 22 Oct 2021 11:28:11 +0530 Subject: [PATCH 127/254] created assignment.hi.md --- .../translations/assignment.hi.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 4-Data-Science-Lifecycle/15-analyzing/translations/assignment.hi.md diff --git a/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.hi.md b/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.hi.md new file mode 100644 index 00000000..6380ca58 --- /dev/null +++ b/4-Data-Science-Lifecycle/15-analyzing/translations/assignment.hi.md @@ -0,0 +1,24 @@ +# जवाब की तलाश + +यह पिछले पाठ के [असाइनमेंट](..\14-Introduction\assignment.md) की निरंतरता है, जहां हमने संक्षेप में डेटा सेट पर एक नज़र डाली। अब हम आंकड़ों पर गहराई से विचार करेंगे। + +फिर से, वह प्रश्न जो ग्राहक जानना चाहता है: **क्या न्यूयॉर्क शहर में पीली टैक्सी के यात्री सर्दियों या गर्मियों में ड्राइवरों को अधिक टिप देते हैं?** + +आपकी टीम डेटा विज्ञान जीवनचक्र के [विश्लेषण] (Readme.md) चरण में है, जहां आप डेटासेट पर खोजपूर्ण डेटा विश्लेषण करने के लिए जिम्मेदार हैं। आपको एक नोटबुक और डेटासेट प्रदान किया गया है जिसमें जनवरी और जुलाई 2019 से 200 टैक्सी लेनदेन शामिल हैं। + +## निर्देश + +इस निर्देशिका में एक [नोटबुक](असाइनमेंट.आईपीएनबी) और [टैक्सी और लिमोसिन कमीशन] का डेटा है(https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi- Yellow? tabs=azureml-opendatasets)। [डेटासेट डिक्शनरी] (https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_ Yellow.pdf) और [उपयोगकर्ता गाइड](https://www1.nyc.gov/assets/tlc/) का संदर्भ लें। डाउनलोड/पीडीएफ/trip_record_user_guide.pdf) डेटा के बारे में अधिक जानकारी के लिए। + + +इस पाठ की कुछ तकनीकों का उपयोग नोटबुक में अपना स्वयं का EDA करने के लिए करें (यदि आप चाहें तो सेल जोड़ें) और निम्नलिखित प्रश्नों के उत्तर दें: + +- डेटा में अन्य कौन से प्रभाव टिप राशि को प्रभावित कर सकते हैं? +- क्लाइंट के सवालों के जवाब देने के लिए किन कॉलमों की सबसे ज्यादा जरूरत नहीं होगी? +- अब तक जो प्रदान किया गया है, उसके आधार पर, क्या डेटा मौसमी टिपिंग व्यवहार का कोई सबूत प्रदान करता है? + + +## रूब्रिक + +अनुकरणीय | पर्याप्त | सुधार की जरूरत +--- | --- | -- | From 32c1271dcda744b2eebfd061372e11f26b02798b Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Fri, 22 Oct 2021 11:41:07 +0530 Subject: [PATCH 128/254] created assignment.hi.md --- .../19-Azure/translations/assignment.hi.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 5-Data-Science-In-Cloud/19-Azure/translations/assignment.hi.md diff --git a/5-Data-Science-In-Cloud/19-Azure/translations/assignment.hi.md b/5-Data-Science-In-Cloud/19-Azure/translations/assignment.hi.md new file mode 100644 index 00000000..cdbcc11c --- /dev/null +++ b/5-Data-Science-In-Cloud/19-Azure/translations/assignment.hi.md @@ -0,0 +1,11 @@ +# Azure ML SDK का उपयोग करके डेटा विज्ञान परियोजना + +## निर्देश + +हमने देखा कि एज़्योर एमएल एसडीके के साथ एक मॉडल को प्रशिक्षित करने, तैनात करने और उपभोग करने के लिए एज़्योर एमएल प्लेटफॉर्म का उपयोग कैसे किया जाता है। अब कुछ डेटा के लिए चारों ओर देखें, जिसका उपयोग आप किसी अन्य मॉडल को प्रशिक्षित करने, उसे परिनियोजित करने और उसका उपभोग करने के लिए कर सकते हैं। आप [कागल](https://kaggle.com) और [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-40229 पर डेटासेट ढूंढ सकते हैं। -cxa&ocid=AID3041109)। + +## रूब्रिक + +| अनुकरणीय | पर्याप्त | सुधार की जरूरत | +|-----------|----------|---------------------| +|ऑटोएमएल कॉन्फ़िगरेशन करते समय, आपने यह देखने के लिए कि आप किन मापदंडों का उपयोग कर सकते हैं, एसडीके दस्तावेज़ीकरण को देखा। आपने Azure ML SDK का उपयोग करके AutoML के माध्यम से डेटासेट पर एक प्रशिक्षण चलाया, और आपने मॉडल स्पष्टीकरण की जाँच की। आपने सबसे अच्छा मॉडल तैनात किया और आप Azure ML SDK के माध्यम से इसका उपभोग करने में सक्षम थे। | आपने Azure ML SDK का उपयोग करके AutoML के माध्यम से डेटासेट पर एक प्रशिक्षण चलाया, और आपने मॉडल स्पष्टीकरण की जाँच की। आपने सबसे अच्छा मॉडल तैनात किया और आप Azure ML SDK के माध्यम से इसका उपभोग करने में सक्षम थे। | आपने Azure ML SDK का उपयोग करके AutoML के माध्यम से डेटासेट पर एक प्रशिक्षण चलाया। आपने सबसे अच्छा मॉडल तैनात किया और आप Azure ML SDK के माध्यम से इसका उपभोग करने में सक्षम थे। | From 8544f2ba8eecf3eb3710df0bc86397721c345469 Mon Sep 17 00:00:00 2001 From: Heril Changwal Date: Fri, 22 Oct 2021 13:36:21 +0530 Subject: [PATCH 129/254] Added Hindi Translation --- 6-Data-Science-In-Wild/README.hi.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 6-Data-Science-In-Wild/README.hi.md diff --git a/6-Data-Science-In-Wild/README.hi.md b/6-Data-Science-In-Wild/README.hi.md new file mode 100644 index 00000000..423cf0b1 --- /dev/null +++ b/6-Data-Science-In-Wild/README.hi.md @@ -0,0 +1,11 @@ +# जंगली प्रारूप में डेटा विज्ञान + +उद्योगों में डेटा विज्ञान के वास्तविक दुनिया के अनुप्रयोग। + +### विषय + +1. [वास्तविक दुनिया में डेटा विज्ञान] (20-Real-World-Examples/README.md) + +### क्रेडिट + +[नित्या नरसिम्हन] द्वारा ❤️ के साथ लिखा गया (https://twitter.com/nitya) \ No newline at end of file From 7118e64b541e70155ec8ba26270e647df89a020d Mon Sep 17 00:00:00 2001 From: Mikhail Sadiakhmatov Date: Fri, 22 Oct 2021 12:12:13 +0300 Subject: [PATCH 130/254] 1-1 readme translation added --- .../translations/README.ru.md | 177 ++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 1-Introduction/01-defining-data-science/translations/README.ru.md diff --git a/1-Introduction/01-defining-data-science/translations/README.ru.md b/1-Introduction/01-defining-data-science/translations/README.ru.md new file mode 100644 index 00000000..916871ec --- /dev/null +++ b/1-Introduction/01-defining-data-science/translations/README.ru.md @@ -0,0 +1,177 @@ +# Что такое наука о данных? + +|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/01-Definitions.png)| +|:---:| +|Что такое наука о данных - _Рисунок [@nitya](https://twitter.com/nitya)_ | + +--- + +[![Defining Data Science Video](../images/video-def-ds.png)](https://youtu.be/beZ7Mb_oz9I) + +## [Вступительный тест](https://red-water-0103e7a0f.azurestaticapps.net/quiz/0) + +## Что такое данные? +В повседневной жизни мы окружены данными. Текст, который Вы в данный момент читаете, является данными, список номеров телефонов друзей в Вашем смартфоне является данными, также как и время на Ваших часах. Люди умеют оперировать даными естественным образом, считая деньги, которые у нас есть, или составляя письма нашим друзьям. + +Однако данные стали намного более важными с изобретением компьютеров. Главная роль компьютеров заключается в вычислениях, но им нужны данные, над которыми их производить. Таким образом, нам необходимо понимать, как компьютеры хранят и обрабатывают информацию. + +С появлением Интернета роль компьютеров как вычислительных устройств возрасла. Если задуматься, сейчас мы всё больше используем компьютеры для обработки данных и коммуникации, чем непосредственно для вычислений. Когда пишем электронное письмо другу или ищем что-то в Интернете, мы, в действительности, создаём, храним, передаём и управляем данными. + +>Можете ли Вы припомнить, когда последний раз использовали компьютер, чтобы что-то посчитать? + +## Что такое наука о данных? + +В [Википедии](https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%83%D0%BA%D0%B0_%D0%BE_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85), **Наука о данных** определяется как *научная область, использующая научные методы для извлечения знаний и инсайтов из структурированных и неструктурированных данных и для применения их в широком спектре приложений.* + +Данное определение подчеркивает следующие важные аспекты науки о данных: + +* Главная цель науки о данных - **извлечение знаний** из данных, другими словами, - **понимание** данных, нахождение скрытых взаимосвязей и построение **модели**. +* Наука о данных использует **научные методы**, заимствованные из теории вероятности и статистики. Когда термин "наука о данных" был впервые введён, некоторые специалисты заявляли, что наука о данных - это просто новое модное название статистики. Сегодня уже стало очевидно, что данная область гораздо шире. +* Полученные знания должны быть использованы для получения **практических инсайтов**. +* Мы должны уметь оперировать как **структурированными** так и **неструктурированными данными**. Мы вернёмся к обсуждению различных типов данных далее в нашем курсе. +* **Область применения** - важное понятие, и специалисту в науке о данных часто необходима экспертиза в предметной области. + +> Другой важный аспект науки о данных заключается в том, что она исследует, как данные должны быть собраны, сохранены и обработаны с использованием компьютеров. В то время как статистика предоставляет нам математические основы, наука о данных применяет математические знания для того, чтобы извечь инсайты из данных. + +Одним из способов (приписываемым [Джиму Грею](https://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B5%D0%B9,_%D0%94%D0%B6%D0%B8%D0%BC)) взглянуть на науку о данных является рассмотрение её как отдельных научных парадигм: + +* Эмпирической, следуя которой мы полагаемся в большей степени на наблюдения и результаты экспериментов. +* Теоретической, в которой новые концепции появляются из уже существующих научных знаний. +* Вычислительной, в которой мы открываем новые принципы, основанные на вычислительных экспериментах. +* Парадигмой на основе данных (data-driven), которая основывается на исследовании взаимосвязей и паттернов в данных. + +## Другие смежные области + +Так как данные - это всепроникающая концепция, наука о данных сама по себе также является широкой областью, пересекающаяся с другими дисциплинами. + +