Pythonでフォトスタジオ市場を分析する方法(3/3)。分析

自分のビジネスを開く人は誰でも、完璧なオープンの瞬間を推測し、完璧な場所を見つけ、ビジネスが存続し成長するための正確で効果的なステップを踏みたいと考えています。理想的なパラメータを見つけることは不可能ですが、統計分析ツールは最良の機会を評価するのに役立ちます。



オープンソースには、膨大な量の有用な情報が含まれています。正しく収集、保存、分析することで、最良のビジネスチャンスを見つけることができます。



若い起業家のグループは、モスクワに独自の写真スタジオを開くオプションを検討しました。彼らは見つける必要がありました:



  • フォトスタジオ市場の一般的な状態はどうですか:成長、安定、または下降?
  • 市場の季節性は何ですか?
  • 彼らはいくら稼ぐことができますか?
  • どこでホールを開くのが良いですか?
  • プロジェクトにいくら投資しますか?
  • 市場での競争はどれくらい激しいですか?


この記事で提供されている単純なパーサーデータベース、および分析は、 これらの質問や他の多くの質問に答えるのに役立ちました







では最初の記事、私たちは、構文解析の検討ugoloc.ruの写真スタジオアグリゲータサイトをして部屋をご予約の上、フォトスタジオ、ホール、データに関する一般的な情報をアップロードしました。第二の物品、我々はデータベースに受信したデータを書き込み、データベースからデータを読み出す調べ、また、データベース内の情報に応じて解析操作を設定します。 この記事では、収集したデータの簡単な分析を行います。githubの 私のページで、データベースのテーブルの例、中間テーブル、グラフ、追加のコメントを含む完成したプロジェクトを見つけることができます















使用する分析の方向



  • フォトスタジオを開くダイナミクスを定義します。
  • 開業月に応じてフォトスタジオの収益性を計算します。
  • ビジネスの季節性を決定します。
  • ホールあたりの平均収入と、フォトスタジオの最適なホール数を計算します。
  • 収益性の写真スタジオの場所への依存性を調査します。
  • 競合するスタジオのホールの数を調べます。
  • 天井の高さ、ホールの面積、予約価格など、収入に対する他のパラメーターの影響を計算します。
  • 他の可能な分析の方向を検討してください。


データベースからのデータのアンロード



アンロードするには、次の手順を実行します。



基地との接続を確立する
directory = './/'
conn = sqlite3.connect(directory + 'photostudios_moscow1.sqlite')
cur = conn.cursor() 




スタジオによるデータのアップロード
studios = db_to_studios(conn)
studios




ホールを通って
halls = db_to_halls(conn)
halls




予約時
booking = db_to_booking(conn)
booking




開業日をスタジオに残し、ホールのリストからドレッシングルームを除外します
studios = studios[[x.year > 0 for x in studios['established_date']]]
halls = halls[halls['is_hall'] == 1]




年ごとのフォトスタジオ開設のダイナミクス



さまざまな年にオープンする写真スタジオの頻度ヒストグラムを作成してみましょう。これを行うには、期間(年)の数を計算し、ヒストグラムを作成します。



ヒストグラムをプロットする
num_bins = np.max(studios['established_date']).year - np.min(studios['established_date']).year + 1
plt.hist([x.year for x in studios['established_date']], num_bins)
plt.show()






ヒストグラムは、毎年新しい写真スタジオが明らかに成長していることを示しています。このパターンは、年に2回の市場の実際の成長ではなく、アグリゲーター自体の成長を示しています。



この事実は、スタジオを2つのカテゴリに分類する必要があることを示しています。フォトスタジオを開くときにアグリゲーターに登録した人(「新しい」)と、久しぶりに登録した人(「古い」)です。これが次のタスクになります。



新しい写真スタジオの特定



どのフォトスタジオが新しいと見なすことができますか?宣伝され、クライアントを獲得しているところです。開店の瞬間からの予約カレンダーの視覚的な分析は、スタジオが数ヶ月で着実な顧客の流れを獲得していることを示しています。



新しいフォトスタジオと古いフォトスタジオ(すぐにアグリゲーターに参加しなかった)を区別するには、「オープン」の瞬間から1年後の同じ期間までの前半の収益を比較する必要があることがわかりました。新しいスタジオの収入は1年で大幅に増加するはずですが、古いスタジオの収入はほぼ同じレベルにとどまるはずです。



まず、すべてのテーブルを組み合わせて、予約した時間だけを残しましょう
# merge all tables
data = (booking
         .merge(halls, left_on = 'hall_id', right_on = 'hall_id', how = 'inner')
         .merge(studios, left_on ='studio_id', right_on = 'studio_id', how = 'inner')
        )
data = data[data['is_working_hour'] == 1]
data['date'] = pd.to_datetime(data['date'])
data




次に、写真スタジオの仕事の前半月の収入を計算します
first_month = (data[data['date'] <= [x + datetime.timedelta(days = 15) for x in data['established_date']]]
               .loc[:, ['studio_id', 'price', 'duration']]
              )
first_month['income'] = first_month['price'] * first_month['duration']
first_month = first_month.groupby('studio_id').agg(np.sum)
first_month




1年後の半月で
month_after_year = (data[(data['date'] >= [x + datetime.timedelta(days = 365) for x in data['established_date']])
                         & (data['date'] <= [x + datetime.timedelta(days = 365 + 15) for x in data['established_date']])
                        ]
                    .loc[:, ['studio_id', 'price', 'duration']]
                   )
month_after_year['income'] = month_after_year['price'] * month_after_year['duration']
month_after_year = month_after_year.groupby('studio_id').agg(np.sum)
month_after_year




1年の指標をオープニングで同様の指標で分割します
month_diff = (month_after_year.merge(first_month, left_on = 'studio_id', right_on = 'studio_id', how = 'inner')
              .merge(halls.groupby('studio_id').count()
                     , left_on = 'studio_id', right_on = 'studio_id', how = 'inner')
             )[['income_x', 'income_y', 'is_hall']]
month_diff['income_diff'] = (month_diff['income_x'] / month_diff['income_y']) ** (1 / month_diff['is_hall'])
month_diff.sort_values('income_diff')




1年後に収入の伸び率を受け取りました。さまざまなスタジオのインジケーターは、急激なジャンプなしに0.75から2.1に分散されています。これは、スタジオがオープン直後、1週間、1か月、1年後などにアグリゲーターに接続できることを示しています。



新しいフォトスタジオを決定するために、収益成長率の条件値を中央値1.18とします。それら。その年の写真スタジオの収入が18%以上増加した場合、この写真スタジオは新しいものと見なされます。そのようなスタジオは22ありました。



フォトスタジオを開くのは何月がいいですか?



開店直後にアグリゲーターに登録したフォトスタジオを計算しました。したがって、私たちのデータによると、実際の開業日と開業日は、これらのスタジオで同じと見なされます。



計算には、新しいフォトスタジオを利用し、予約したすべての時間の予約価格の合計として収入を計算し、ホールごとにグループ化して(開店月を考慮して)、開店月ごとの平均年収を計算します。



開業月に応じた年間平均収入の計算
new = studios['is_new'].reset_index().merge(data, left_on = 'studio_id', right_on = 'studio_id', how = 'inner')
new = new[new['is_new'] == 1]
new = new[new['date'] <= [x + datetime.timedelta(days = 365) for x in new['established_date']]]
new['est_year'] = [x.year for x in new['established_date']]
new['est_month'] = [x.month for x in new['established_date']]
new['income'] = new['price'] * new['is_booked']
mean_income = (new
 .groupby(['hall_id', 'est_year', 'est_month']).agg('sum')['income'].reset_index()
 .groupby('est_month').agg('mean')['income']
plt.bar(range(1, 12), mean_income)
plt.show()
)








ヒストグラムは明確な関係を示しています。



  • フォトスタジオを開くのに最適な月は年の初め(1月から4月)です
  • また、開店するのに適した月は9月から10月です。
  • 最悪の月は5月から6月です。


このデータを市場の季節性と比較することは興味深いでしょう。



ビジネスの季節性の決定



季節性-期間に応じた注文数の変化。年間の季節性を分析してみましょう。



計算のために、2018年まで開いていたスタジオを取り上げて、2018〜2020年の予約を見てみましょう。スタジオ収入は、予約された時間の価格の合計として定義されます。次に、選択した期間の各月のすべてのスタジオの総収入を計算します。



季節性の計算
season = data[(data['open_date'] < '2018-01-01') & (data['date'] > '2018-01-01')]
season['income'] = season['price'] * season['duration']
season['year'] = [x.year for x in season['date']]
season['month'] = [x.month for x in season['date']]
incomes = season.groupby(['year', 'month']).agg(np.sum)['income']
incomes = incomes[incomes.index]




プロット
incomes = incomes[: -3]
plt.figure(figsize = (20, 10))
plt.plot([str(x[0]) + '-' + str(x[1]) for x in incomes.index], incomes)
plt.xticks(rotation=60) 
plt.grid()
plt.show()








グラフは、明確に顕著な季節性を示しています。10月から4月に注文数が最も多く、5月から9月に急激に減少しています。季節性はビジネスの論理に適合します。夏には、人々は通りや公園で写真を撮ります。冬にはこれは不可能であり、屋内でフォトセッションを手配する必要があります。季節性はこれに関連しています。夏にはクライアントが少なく、冬には多くのクライアントがいます。注文のピークは12月です。これはおそらく、写真に撮りたい新年と休日の気持ちによるものです。



開店に最適な月は季節によって異なります。シーズン中または開始の1か月前にスタジオを開くことをお勧めします。5月から8月までは、スタジオを開放しないでください。オフシーズンに入ります。



ホール収益性の計算



開業の重要な指標は、1つの部屋からの収入です。



計算するには、毎月の部屋ごとに収入をグループ化し、検疫のために2020年を異常な年として除外し、.describe()関数を使用して収入の選択を調べます。



1ホールの収益性の計算
hall_income = season.groupby(['studio_id','hall_id', 'year', 'month']).agg(sum)['income'].reset_index()
hall_income = hall_income[hall_income['year'] < 2020]
hall_income['income'].describe()




count       648.000000
mean     184299.691358
std      114304.925311
min           0.000000
25%       95575.000000
50%      170350.000000
75%      256575.000000
max      617400.000000
Name: income, dtype: float64


ルーブルでホールごとに受け取った収入。



百分率のデータから、ホールの半分の収入が95,000ルーブルの範囲内にあることがわかります。最大256,000ルーブル。中央値は170,000ルーブルです。



平均と標準偏差のデータから、1シグマルールによれば、ホールの3分の2が70,000ルーブルから来ていることがわかります。最大300,000ルーブル 184,000ルーブルの真ん中から。



平均的なホールは170,000〜180,000ルーブルの収入を期待できることがわかりました。±80,000ルーブル



このような大きな広がりは、他の要因の影響によって説明されます。これは、将来的に決定しようとします。



フォトスタジオにはいくつのホールを開くべきですか?



計算するには、各ホールの月間平均収益性を計算し、写真スタジオのホールの平均収益性を計算し、写真スタジオのホール数を計算し、データをホール数でグループ化して、ホールあたりの平均利回りを計算します。



フォトスタジオのホール数に応じたホールの収益性の計算
(hall_income
 .groupby(['studio_id', 'hall_id']).agg('mean').reset_index()
 .groupby('studio_id').agg(['count', 'mean'])['income']
 .groupby('count').agg('mean')
)




mean
count	
1	134847.916667
2	146531.944444
3	300231.944444
4	222202.604167


フォトスタジオのホール数にもよりますが、月平均1ホールの収益を上げました。規則性に注目しましょう。ホールが多いほど、収益性が高くなります。3部屋のスタジオで最大の収益性。



この現象は、フォトスタジオの1つの部屋を使用すると、クライアントが別の部屋を見てすぐに予約できるためです。したがって、写真スタジオの1つの部屋が他の部屋を「宣伝」します。



ホールの場所への収入の依存性



ホールの場所は収益性に大きな影響を与える可能性があります。中央では、ホールが顧客にとってよりアクセスしやすくなり、収益が高くなります。仮説を確認してみましょう。



計算のために、ホールの平均月収を計算し、「メトロ」に従ってグループ化し、昇順で並べ替えてみましょう。



中心からの距離に応じたホールの収益性
data['income'] = data['price'] * data['duration']
data['year'] = [x.year for x in data['date']]
data['month'] = [x.month for x in data['date']]
(data
 .groupby(['hall_id', 'metro', 'year', 'month']).agg('sum')['income'].reset_index()
 .groupby(['hall_id', 'metro']).agg('mean')['income'].reset_index()
 .groupby('metro').agg('mean')['income'].sort_values()
)[-59:]




次のデータを取得しました。



metro
                               5016.666667
                             10485.264378
                                      11925.000000
/                    18116.666667
,                        19000.000000
                                    21963.333333
                                  30667.051729
                                 31031.250000
                                   37787.500000
/                       39357.142857
                                  44354.375000
                                  45888.888889
                         46566.666667
                                    48541.666667
. ,              49086.503623
                                55340.659341
 ,  ,          55944.444444
. / .            59771.111111
                               66780.000000
                                    66847.058824
                                  67692.545788
.                                 70090.341880
.                                70337.676411
,                         72974.494949
                                   79987.083333
                         88800.000000
                                   95550.000000
                              98326.086957
                                  99216.279070
                                              99925.000000
                         102835.622784
. , . , . \    104956.521739
                        111050.684459
                                     111090.000000
                                    111909.090909
                                   116426.892180
                        117450.000000
                                   118382.236364
                                      122626.500000
,                      123258.518519
-                        124557.894737
,                           126300.000000
                                  129222.916667
                                   135281.642512
,                     138945.454545
                                      152246.883469
,                      168484.500000
.                           169079.381010
.                                172618.798439
                             173777.659900
                                  178254.545455
                                         181041.818182
                                      187283.444198
                              189140.857975
                      250975.000000
, ,             252685.714286
,                  264164.473684
-                              277162.791991
                                  556621.746032
Name: income, dtype: float64


メトロデータはそのままにしておきますのでご注意ください。より正確な画像を得るには、「Baumanskaya、Elektrozavodskaya」、「Elektrozavodskaya地下鉄駅」、「Electrozavodskaya」など、共通の形式にする必要があります。



データから、Maryina Roshcha、Novye Cheryomushki、Krylatskoyeなどの高価な不動産のある地域では、ホールあたりの収益性が高いことがわかります。



競合するスタジオにはいくつのホールがありますか



市場のスタジオにはいくつのホールがありますか?この質問に答えるために、ホールのあるテーブルをスタジオテーブルに取り付け、スタジオごとにグループ化し、ホールの数を数え、頻度ヒストグラムを作成しましょう。



スタジオのホール数の計算
hall_num = studios.merge(halls, left_on='studio_id', right_on='studio_id').groupby('studio_id').agg('count')['is_hall']

plt.hist(hall_num, range(np.min(hall_num), np.max(hall_num)+1))
plt.show()
hall_num.describe()








count    105.000000
mean       2.685714
std        2.292606
min        1.000000
25%        1.000000
50%        2.000000
75%        3.000000
max       13.000000


得られたデータから、ほとんどの写真スタジオ(75%以上)には3つ以下のホールがあることがわかります。市場全体では、原則として、スタジオには5つ以下のホールしかありません。



スタジオ収入に対する他のパラメーターの影響



天井の高さ



写真にはたくさんの光が必要で、天井の高い部屋にある大きな窓からは自然光がたっぷりと差し込みます。さらに、天井が高いほど、光が床に届き、拡散します。したがって、天井の高さは写真スタジオの収益性に影響を与える可能性があります。この仮説を確認してみましょう。



天井の高さのデータを残して各ホールの平均月収を計算し、天井の高さに応じて平均月収を計算してグラフを作成してみましょう。



天井の高さ(メートル単位)に応じたホール収入
halls_sq_ceil = (data
 .groupby(['hall_id', 'ceiling', 'square', 'year', 'month']).agg('sum')['income'].reset_index()
 .groupby(['hall_id', 'ceiling', 'square']).agg('mean')['income'].reset_index()
)
plt.bar(halls_sq_ceil.groupby('ceiling').agg('mean')['income'].index[:-2],
        halls_sq_ceil.groupby('ceiling').agg('mean')['income'][: len(halls_sq_ceil) - 2]
       )
plt.show()








得られたデータでは、最大6メートルまで、写真スタジオの収益性が天井の高さに直接依存していることがわかります。最適な高さは5〜6メートルです。



ホールエリア



仮説:ホールの面積が大きいほど、ホールはより多くの収入をもたらします。



仮説をテストします。以前の計算を使用して、エリアに応じた平均収益性を計算し、グラフを作成します。



地域に応じたホール収入
square = halls_sq_ceil.groupby('square').agg('mean')['income']
plt.bar(square.index[:-3],
        square.iloc[: len(square) - 3]
       )
plt.show()








グラフには明確なパターンが見られます。面積が大きいほど、ホールはより多くのものをもたらします。



予約価格



仮説:クライアントがほぼすべての部屋に支払う最適な部屋の価格があります。顧客は高品質のためだけに高い価格を支払うことをいとわない。



仮説をテストするには、最初に現在の価格レベルを検討します。これを行うには、一般的な予約テーブルを部屋、価格、年、月でグループ化し、収入を合計しましょう。次に、部屋と予約価格でグループ化し、平均収入を計算します。次に、平均収入を計算して、価格でグループ化しましょう。設定された予約価格に応じて、スタジオごとの平均月収を受け取りました



部屋の予約価格に応じたスタジオの月間平均収益性
price = (data
 .groupby(['hall_id', 'price', 'year', 'month']).agg('sum')['income'].reset_index()
 .groupby(['hall_id', 'price']).agg('mean')['income'].reset_index()
 .groupby('price').agg('mean')['income']
)




1時間あたりの家賃に特定の価格がある部屋の数
plt.figure(figsize = (20, 10))
plt.hist(price.iloc[: len(price) - 5].index)
plt.show()








頻度ヒストグラムから、ほとんどのスタジオが500から2000ルーブルのレンタル価格を設定していることがわかります。500ルーブル未満 -珍しい。ホールの最大レンタル価格は3500ルーブルです。



平均月収のホールの賃貸価格への依存度のグラフ
price = price[price > 10000]
plt.figure(figsize = (20, 10))
plt.scatter(price.index, price)
plt.show()








グラフは、最大2000ルーブルであることを示しています。明確な直接的な関係があります。予約価格が高く設定されるほど、スタジオはより多くの収入を得ることができます。2000ルーブル以上の価格で。部屋の収入は低くても高くてもかまいません。どうやら、2,000ルーブル以上。クライアントは、提供されるサービスの高品質に対してのみ支払う準備ができています。便利な場所、機器、広いエリア、または高品質のインテリアなどです。



市場分析の他の分野



機器分析



サイトugoloc.ruには、写真スタジオの設備に関する情報があります。色付きの背景の存在、フラッシュのブランドなどです。写真スタジオの設備も収益性に影響を与える可能性があるため、分析を完全にするために、この要素も考慮に入れる必要があります。



すべてのスタジオが追加の機器の存在を示しているわけではありません。したがって、この要因の影響の評価は不正確である可能性があります。



収入に対するいくつかのパラメーターの影響の分析



パラメータは、互いに分離して収益に影響を与えません。たとえば、スペースと予約価格はリンクされており、スタジオの全体的な収益性に影響を与えます。したがって、それらの影響を一緒に検討する方が合理的です。クライアントの要求の詳細に基づいて、いくつかのパラメーターの影響を考慮する必要があります。



強化されたデータ収集



ugoloc.ruの写真スタジオは、量の面で市場の3分の1未満を占めています。このアグリゲーターサイトからスタジオのシェアを収入と市場セグメントで見積もることはできません。より正確な画像を得るには、AppEvent、Googleカレンダー、場合によってはカスタム予約アプリケーションからデータを収集する価値があります。



会計費用



絵を完成させるのに十分な費用がないことがよくあることに気づいたかもしれません。たとえば、ホールの面積が大きいほど、ホールからの収入が多くなります。結論はもちろん良いですが、面積が大きくなるにつれて、ホールを借りるコストが増加します。したがって、レンタル費用の増加をスケジュールにプロットすることは確かに役立ちます。プロジェクトの収益性は、特定のパラメーターに対する収益と費用の最適な比率に隠されています。



修理の費用も地域によって異なります。地域が広いほど、修理の費用は高くなります。



ホール数の増加に伴い、ホールあたりの人件費は減少します。1人の管理者が1つのホールと3つのホールの両方にサービスを提供できます。



メトロからの距離の分析



スタジオの場所がホールの収入に与える影響を評価する場合、重要な考慮されていない要因は地下鉄からの距離です。手動で配置する必要があります。そうしないと、GoogleAPIに精通している人がこのアクションを自動化することができます。



競合他社からの距離



ほとんどの場合、スタジオは互いに近くにあります。Elektrozavodだけでも約40台あり、他の写真スタジオに近いことで収益性が上がるという仮説があります。場所(建物/ビジネスセンター)は顧客に馴染みがあり、信頼できる場所である可能性があり、その場所にあるすべての写真スタジオにプラスの効果があります。



写真スタジオの仕事量



これとは別に、写真スタジオの作業負荷を調査できます。



  • ホールの営業時間の何パーセントが予約です。
  • 予約が曜日とどのように関連しているか(ネタバレ:週末に予約する頻度が高くなります)。
  • 予約されていない日があるかどうか(管理者が仕事に行けない可能性がある日)。
  • 最も頻繁に予約される時間(特に平日に見るのは興味深い)


オフシーズンのフォトスタジオの様子



注文がない夏には、スタジオが閉まることが多くなります。同時に、一部の写真スタジオの注文数はそれほど減少していません。人気のオフシーズンスタジオの利点は何ですか?これは、考慮すべき別の領域です。



競合他社の収益性分析



写真スタジオの敷地を借りる費用とスタッフの平均給与に関する情報があれば、競合他社の財政状態を評価することができます。一部のスタジオは閉鎖の危機に瀕していることが判明するかもしれません。したがって、あなたは彼らの間違いを特定し、それらを回避しようとすることができます。



同様に、最も収益性の高い写真スタジオの体験を探索し、スタジオでそれらを活用することができます。



分析段階



上記の分析は、市場の大まかな全体像を示すための最初のステップです。さらに分析するために、クライアントは、オープンしたいスタジオ、価格セグメント、可能な場所、レンタル価格、機器などを決定する必要があります。



理想:複数のレンタルオプションを特定します。次に、面積、天井の高さ、ホールのおおよその数、コスト、および最も近い競合他社が決定されます。



この場合、分析はより実質的かつ正確に実行できます。



結果



一連の記事では、オープンソースからデータを収集し、データベースに保存して分析する方法について説明しました。作業の結果、フォトスタジオサービス市場の一般的な理解が得られました。



上記の計算を適用できます。



  • 収益の部分でビジネスプランを作成する際に。そして、これは統計的に確認されたデータになります。
  • プロジェクトの実現可能性と収益性を評価し、さまざまな開始オプションの収益と費用を比較します。
  • 写真スタジオの運営。多くの写真スタジオは注文なしでアイドル状態であるか、途方に暮れています。だから彼らは何か間違ったことをしている。上記の分析は、スタジオが状態の原因を特定するのに役立ちます。


私はこのプロジェクトを楽しんだ。



私はあなたに役立つかもしれない私の経験を共有することにしました。



これらの3つの記事の情報はどの程度役に立ちましたか?



あなたの意見を共有してください。



完成したプロジェクトは私のgithubページにあります



All Articles