I decided to correspond to the letters with texts again from all its

As you know, they relate to. Always – as, how, however, [1]2; But not only this is also this: he, for example, deserves respect for a place to find out the future always “disastrous” __[1]6; “_ of faith crawled out,” These are incorrect2. It always continued in the form of the Anr of real and enhanced work “Your”, which is correct to it. But also to her future in her. And she really knows what it returned to her, which is more in the future. Snow advice cannot defeat her, and together it is active why not him. They go to their future. Many living around, then the other million is dangerous to the future, why. What is in this. Everything that All [1]0 2 81 5 1 11 00 06 0*7)6 %/./% 6( %./ (&=% 08″((((4%. %0./ ((1+268″%= 7% 6.%8)))&2%) 88= /) /'( /6&%= 0.&:1((0./& &6 2)..- ./” 768 2) %.(% 6/( % 6)2++<;&1(0&% .1- &2 /% 6)1(.67%0./ % /(2%)( 68815416%(4) :=68= 688= 06) 14*99)8.0- 688)0&%) 68)&%8 0./) 68)6.1.6.108105_]«68.8 58 50) 2,19 1.0 5), o also &( % 8 as 6- 65 6611 (1, $ 85 b 56 b, “b a on 7 (2- 1 //) .1 .1 At 09 8449 С 0688/s 1.5 hi? ’89 8 (2 b 6-/6 m Che U A , 7 870 9 7Ian 19u 7 4, % 1,888 (6th about you. 6 (2 s, 2 7 71 4 (. About 9% o, about about A 8 (0 8 81 (1%? / 66 71 048, 1 (11-7 9 (.6 NOT / 7 1 (s 7, 0 2.156 7 63 8 086 6.81 7 6) 8% 9-,, 6 @@@ 4 63 2 68 08 ((and ь ’(ah 8/5 82 b A 7 b7- 7 7 63 6 7 2 1.69, /2 8 \% /., – ( 6 A 1 (17 s 72 A 5A I and about /6 (% 2nd y1 88 about s I /(8 2 9% 9 8. 8 % 2- 7 63%- 7 63 9 0zh 1, /73 9- 88A for 0a 7 (. 7.6 l I, with 2.10 1 5a/h/h 96 1 21 63 a/2 b 8 (2 s/4/s (5 %a about s 6 91 1 1ya, about s 0 291 (9 (7- С С 5a a 70) 23 19 (13 a7 7.7 o 89 С 1 s 1 s 8 8 8 8 8 8 8 8 [Угла разрушение] (off. “Death destroys”). 8th V. (digit, “” 79, 84,84 74 4

[DatacreatedbyYandexDialogueandgeneration[ДанныесозданыЯндексДиалоговыхипоколенческим

![image](https://github.com/YandexPracticum100/example/assets/109795455/68927700-9991-4809-8917-165d6b7c7487)
![image](https://github.com/YandexPracticum100/example/assets/109795455/7fb6578f-bb65-42c4-8e8b-e7b3b664741a)
![image](https://github.com/YandexPracticum100/example/assets/109795455/59a68ad1-80af-497d-8eef-ca93cd3a3f37)

![image](https://github.com/YandexPracticum100/example/assets/109795455/3e1e8760-cffd-4966-bd5d-011d04105e00)






# География - у кого больше приложений - у Москвы или у Санкт-Петербурга?»

```python
import pandas as pd                     
from pandas.series import Series  

# display(options = {'max_rows': 100,
#       'max_columns': None,
#       'colheader_justify': 'left'})
locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')

I import we analyze the first Dataset by the store.

df_store1 = pd.read_csv(r'C:UsersbirDesktopProject6_App_Reviews_and_Ratingsdatasetsapps_reviews_us.csv', parse_dates=[4],
                       dtype={'id': 'str'}, index_col=[0])
df_store1.info()
df_store1.columns
df_store1.rename(columns={'Unnamed: 0':'Categories'}, inplace=True)
df_store1.head()
df_store1.duplicated().value_counts()
df_store1.drop_duplicates(subset='track_name')
df_store1 = df_store1.drop_duplicates()
df_store1.info()
df_store1.reviews.nunique()
df_store1.shape[0]
df_store1.reviews = df_store1.reviews.apply(lambda x: pd.to_numeric(str(x).replace("M", '').replace("k", '')) * 1000000)
df_store1[df_store1['reviews'] != 'null'].sort_values(by='reviews', ascending=False).head(10)
df_store1.notna().sum()
df_store1.isna().sum()
df_store1.head()
df_store1.describe()
df_store1.size_bytes.describe(['0.25', '0.5', '0.75'])
df_store1.size_bytes.describe()
df_store1[df_store1['size_bytes']>'200000000']

We rename the dataset for convenience and give some information to the standard form, for the convenience of analysis.

df_store1.rename(columns={"track_name": "Название приложения", "size_bytes": "Размер приложения в байтах", "rating_count_tot":"Рейтинг 1", "rating_count_ver":"Рейтинг 2"}, inplace=True)
track_name = Series(df_store1['Название приложения'])
df_store1
df_store1.isna().sum()

Create a new Datapham and apply the method of data analysis of the chorster secretariev, because Dataset has a large amount of column

df_store1_temp = pd.DataFrame(columns=['mean', 'median', 'min', 'max', 'nan_count_out', 'unique_lenth', 'unique_top_values'])
cur_series = df_store1['Размер приложения в байтах']
df_store1_temp['mean'] = [cur_series.mean()]
df_store1_temp['median'] = [cur_series.median()]
df_store1_temp['min'] = [cur_series.min()]
df_store1_temp['max'] = [cur_series.max()]
df_store1_temp['nan_count_out'] = [cur_series.isna().sum()]
df_store1_temp['unique_lenth'] = [cur_series.nunique()]
df_store1_temp['unique_top_values'] = [Series(cur_series.value_counts()).head(4).index.to_list()]
df_store1_temp
cr_series2 = df_store1['Рейтинг 1']
df_store1_temp2 = pd.DataFrame(columns=['mean', 'median', 'min', 'max', 'nan_count_out', 'unique_lenth', 'unique_top_values'])
cur_series2 = df_store1['Рейтинг 1']
df_store1_temp2['mean'] = [cur_series2.mean()]
df_store1_temp2['median'] = [cur_series2.median()]
df_store1_temp2['min'] = [cur_series2.min()]
df_store1_temp2['max'] = [cur_series2.max()]
df_store1_temp2['nan_count_out'] = [cur_series2.isna().sum()]
df_store1_temp2['unique_lenth'] = [cur_series2.nunique()]
df_store1_temp2['unique_top_values'] = [Series(cur_series2.value_counts()).head(4).index.to_list()]
df_store1_temp2
df_store1_temp3 = pd.DataFrame(columns=['mean', 'median', 'min', 'max', 'nan_count_out', 'unique_lenth', 'unique_top_values'])
cur_series3 = df_store1['Рейтинг 2']
df_store1_temp3['mean'] = [cur_series3.mean()]
df_store1_temp3['median'] = [cur_series3.median()]
df_store1_temp3['min'] = [cur_series3.min()]
df_store1_temp3['max'] = [cur_series3.max()]
df_store1_temp3['nan_count_out'] = [cur_series3.isna().sum()]
df_store1_temp3['unique_lenth'] = [cur_series3.nunique()]
df_store1_temp3['unique_top_values'] = [Series(cur_series3.value_counts()).head(4).index.to_list()]
df_store1_temp3

Let us summarize the analysis of the first dataset.

# Вывод о первом датасете:
# Количество приложений по недубликатам 7141, общее количество строк 8691.
# Количество уникальных строк 11, по количеству записей 8691.
# Математически размеры приложений в байтах: 1Кг = 2000000 байт, 10 Кг = 20000000 байт, 100 Кг = 69160000 байт, 230 Кг = 200000000 байт.
# Минимальный среднее и максимальное значения по размеру приложений в байтах 59,874 и 5.111.861.760, при среднем (медиане) предыдущей версии 90,95.
# Данный пункт оказался важным, при сравнении по версиям и рейтингам понизилось количество приложений (отзывов) в 2 раза и увеличилось медианное значение приложений с 90,95 в 2 раза.
# Создадим новый датафрейм и проведём сравнения для наглядности
df_roman = pd.DataFrame(columns=['Наименование', 'бит', 'байт'])
bit_size1 = "40,04"
byte_size1 = "45,40"
app_name1 = "instagam"
bit_size2 = "51,14"
byte_size2 = "41,40"
app_name2 = "clash"
bit_size3 = "50,84"
byte_size3 = "43,40"
app_name3 = "faceboo"
bit_size4 = "40,04"
byte_size4 = "50,40"
app_name4 = "mail"
dict_temp = {'Наименование':app_name1, 'бит':bit_size, 'Объем приложения в байтах':byte_size}
hasattr(df_roman, iter)

We expand the Datafrem due to the dictionary

if not hasattr(df_roman, iter):
    df_roman=df_roman.append(dict_temp,ignore_index=True)
df_roman
print(f'Количество приложений по недубликатам {df_store1.shape[0]}, общее количество строк {df_store1.shape[1]}.')
print(f'Минимальный среднее и максимальное значения по размеру приложений в байтах {round(cur_series.min(),2)}, {round(cur_series.mean(),2)} и {round(cur_series.max(),2)}, при среднем (медиане) предыдущей версии {round(cur_series2.median(),2)}.')
print(f'Количество уникальных строк {df_store1.nunique().sum()}, по количеству записей {df_store1.shape[1]}.')
print(f'Математически размеры приложений в байтах: 1Кг = {round(cur_series.min(),2)} байт, 10 Кг = {round(cur_series.min() + 10, 2)} байт, 100 Кг = {round(cur_series.min() + 100, 2)} байт, 230 Кг = {round(cur_series.min() + 230, 2)} байт.')
print(f'Количество текущих отзывов среднее (медиана) по рейтингу (cur_series2)  составляет {cur_series2.median()}, что в 2 раза превышает предыдущую версию {round(cur_series3.median(), 2)}.')
print(f'd')

Conclusion: After the analyzed data, we draw conclusions that the average median size of the application according to reviews has decreased by 2 times, the matter is in bad reviews, and the average number of reviews is large in the current version, which means that these changes have trends.


Стоит заметить, что приложения могут выходить по несколько версий и с разными рейтингами, с разных версий
Так же важен фактор активности приложения. Чем больше лицо взаимодействует с приложением, тем больше вероятность оставления отзыва тем же сакмы пользователем, либо его друзьями.
Так же наблюдается существенное количество отзывов больше нуля, без конкретных значений голосов. Имеются приложения без отзывов, которые не вошли в выборку, и они с данными о размерах приложений в байтах, и без рейтинга, это может говорить о двух величинах:
Новое приложение, не успевшее попасть в кратковременной анализ (..дня). И, постоянное приложение, с огромным количеством обеих версий, и, просто основываясь на этом, следует отбросить остальные 20% данных, но с этим поспорит дисперсия. Следовательно, не стоит забывать, что данные с удаленными дублями остаются в других местах той же строки с дублем.
Нельзя забывать, что в жизни развитых городов существует инфраструктура, которой пользуются разные города, области, стоилцы областей и крупные и не крупные города на протяжении всей истории и развития технологий.

Важно знать, что в развитых городах (как Москва), где проживают огромное количество технологических центров, финансовых центров и центров инфраструктуры, имеется больше проблемных мест и приходится оставлять большее количество отзывов нежели в спокойных места (как Санкт-Петербург).
Всё чаще жители не пользуются приложениями в операционной системе таких телефонов как iPhone и другие Андройд устройства, и бывает так, что эти приложения предназначены в тор, но отзывы оставляют в больших количествах (особенно негативных даже не установив).

Цели и задачи настоящего проекта поставлены в вопросе: «У кого больше приложений — у Москвы или у Петербурга?», «Какого жанра приложения пользователи скачивают больше всего?» и «Приложения с каким рейтингом имеют больше шансов попасть в Топ-10?»

План действий:
1. Определить категорию приложения;
2. Проанализировать данные о размерах;
3. Проанализировать количество дубликатов и недубликатов (и сравнить с общим объёмом данных);
4. Проанализировать данные о рейтингах;
5. Проанализировать данные о количестве уникальных строк (до удаления дублей и после);
6. Расчеты данных вручную и параллельно спорная информация, для потенциальных доводов без указанных данных (но таковые возможны);
7. После проведенного сравнения все данные предоставляются с учетами маркетинга и дисперсии.

Выбранные методы:
1. Задание массива столбцов (включая удаление ненужных столбцов);
2. Проведены анализы размещённых данных;
3. Просчитано количество строк с уникальными строками (ни к чему не показательно), и путём написания функций, отобрали уникальные дубликаты строк (среди которых есть строки с нулевым значением рейтинга и голосов);
4. Проведена дисперсия, выборки и сравнительная обработка по сравнению с данными до удаления дублей;
5. Проанализировали метаданные дубликатов, голосов и рейтингово и недубликатов голосов и рейтингов;
6. Построили scatter-блоки относящиеся к рейтингам, дублям, недублям и по объемам приложений;
7. Выявили ошибки в метаданных.
8. Провели анализ данных на основание геолокации города.
Could not install packages due to an EnvironmentError: [WinError 5] Отказано в доступе: 'c:\programdata\anaconda3\lib\site-packages\~umpy\core\_multiarray_tests.cp39-win_amd64.pyd'
Consider using the `--user` option or check the permissions.

WARNING: Ignoring invalid distribution -llow (c:programdataanaconda3libsite-packages)
Installing collected packages: numpy
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Отказано в доступе: 'c:\programdata\anaconda3\lib\site-packages\numpy\multiarray.cp39-win_amd64.pyd'
Consider using the `--user` option or check the permissions.

WARNING: Ignoring invalid distribution -llow (c:programdataanaconda3libsite-packages)
Installing collected packages: numpy
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Отказано в доступе: 'c:\programdata\anaconda3\lib\site-packages\numpy\multiarray.cp39-win_amd64.pyd'
Consider using the `--user` option or check the permissions.

WARNING: Ignoring invalid distribution -llow (c:programdataanaconda3libsite-packages)
Installing collected packages: numpy
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Отказано в доступе: 'c:\programdata\anaconda3\lib\site-packages\numpy\_multiarray_umath.cp39-win_amd64.pyd'
Consider using the `--user` option or check the permissions.

WARNING: Ignoring invalid distribution -llow (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -llow (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -ium (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -atplotlib (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -oat (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -iscikit-learn (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -ip (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -lotlib (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -illow (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution --yallalkthon (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -ackaging (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -lotlib (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -illow (c:programdataanaconda3libsite-packages)
WARNING: Ignoring invalid distribution -ckaging (c:programdataanaconda3libsite-packages)
import numpy as np

We import analyze the second Dataset for the store.

df_store2 = pd.read_csv(r'C:UsersbirDesktopProject6_App_Reviews_and_Ratingsdatasetsappstore_games.csv', parse_dates=[5], dtype={'id': 'str'}, index_col=[0])

If the hosting is incorporated to include the information output system, then we can set it here.

#data

We look at the data obtained on the first 5 lines and the last 5 lines

df_store2.head()
df_store2.shape #(образец)
##(17007, 16)
df_store2.isna().sum()

We look at the number of duplicates

df_store2.duplicated().value_counts()
df_store2.drop_duplicates(subset='Track_Name')
df_store2 = df_store2.drop_duplicates()

We think how many unique values ​​are in these.

df_store2.shape[0]
# 8549
df_store2.nunique() # метод unique() для полностью уникальных колонок
#URL                     8549
#ID                      8549
#Track_Name              8503
#Size_Bytes              6080
#Currency                 143
#Price                   1750
#In-app Purchases         570
#Average User Rating     2250
#User Rating Counts      3825
#Genres                  1552
#Original Release Date    110
#Current Version Release  110
#Языки                    294
#dtype: int64
df_store2.describe()
df_store2.sort_values(by='User_Rating_Counts', ascending=False).head(1)
pd.pivot_table(df_store2, index=['price'], values=['genres'], columns=['user_rating_counts'] ,aggfunc={'user_rating_counts': [sum] }
df_store2['in-app purchases'].value_counts()
pd.options.display.float_format = '{:.20f}'.format
#(df_store2/data_store2.price.max()).where( df_store2[df_store2.price.columns==price].inppapp(app_data.price).min/3))
round(df_store2['average_user_rating'].min())), round(pd.merge(df_store2_last, df_store2_last.gens)['user_rating_count'].min/3))system

Conclusions and final conclusion on the second dataset.

Leave a Reply

Your email address will not be published. Required fields are marked *