بيثون الزحف بكين بيانات الإسكان المستعملة، شمال سباق الانجراف الإسكان الميسر ذلك؟ | المرفقة كامل شفرة المصدر

 الكاتب | شو تاو

كانت الأسعار مرتفعة موضوع تهم الانجراف الشمال، وقد تم تحليل هذه المادة على بيانات الإسكان المستعملة في بكين.

وتنقسم هذه الورقة إلى قسمين: بيثون الزحف غانجي بكين بيانات الإسكان المستعملة، R الزحف على المستعملة أسعار المساكن تفعل تحليل الانحدار الخطي، لمجرد الاتصال مع بيثون والطلاب R تعلم المرجعية.

بيثون الزحف غانجي بكين بيانات الإسكان المستعملة

الحصول على الزواحف الشهر، وذلك لكل موقع استخدام XPath، حساء جميل، وأساليب ثلاثة العادية الزحف للتمارين لتعزيز. البيانات من المصادر التالية:

كسباث الزحف:

هنا الحل الرئيسي استخدام XPath كيفية تحديد ما إذا كانت بعض العناصر من المشاكل القائمة، مثل ما إذا كان البيت ليس المعلومات مفروشة، جنبا إلى جنب مع الحكم لا، هناك لن عناصر معينة يؤدي إلى الزحف انقطاع.

طلبات استيراد

من lxml يتري استيراد

من requests.exceptions RequestException استيراد

متعدد المعالجة استيراد

الوقت استيراد

رؤوس = {

 "عامل المستخدم ':' موزيلا / 5.0 (ويندوز NT 10.0. WOW64) AppleWebKit / 537.36 (KHTML، مثل أبو بريص) كروم / سفاري 55.0.2883.87 / 537.36 '}

get_one_page صفر (رابط):

 محاولة:

 استجابة = requests.get (رابط، ورؤوس = الرؤوس)

 إذا response.status_code == 200:

 عودة response.text

 عودة لا يوجد

 يستثنى RequestException:

 عودة لا يوجد

parse_one_page صفر (المحتوى):

 محاولة:

 محدد = etree.HTML (المحتوى)

 ALL = selector.xpath ( '// * / شعبة / شعبة / شعبة / شعبة / شعبة')

 للشعبة في ALL:

 تسفر {

 'اسم': div.xpath ( 'دل / ي / أ / النص ()') ،

 'اكتب': div.xpath ( 'دل / ي / تمتد / النص ()') ،

 'المنطقة': div.xpath ( 'دل / ي / SPAN / النص ()') ،

 "نحو ': div.xpath (' دل / ي / SPAN / النص () ') ،

 'الدور' :. Div.xpath ( 'دل / ي / SPAN / النص ()') .strip () محل ( '\ ن'، "")،

 'زين': div.xpath ( 'دل / ي / SPAN / النص ()') ،

 # تتطلب معالجة خاصة في العنوان

 'العنوان': div.xpath ( 'دل / يوم // النص ()') + div.xpath ( 'دل / يوم // النص ()') .replace ( '\ ن'، '') + div.xpath ( 'دل / يوم // النص ()') .strip ()

 "TotalPrice ': div.xpath (' دل / ي / شعبة / تمتد / النص () ') + div.xpath (' دل / ي / شعبة / SPAN / النص () ') ،

 'الأسعار': div.xpath ( 'دل / ي / شعبة / النص ()')

 }

 إذا شعبة == بلا: ## بالإضافة إلى حكم هنا، إذا عنصر واحد فارغ، ثم خرج لا يوجد

 عودة لا يوجد

 يستثنى الاستثناء:

 عودة لا يوجد

صفر الرئيسية ():

 لأنني في مجموعة (1، 500): # مجموعة هنا الزحف 500 البيانات، في نطاق البيانات، يمكنك تعيين مبلغ من الزحف

 URL = "

 المحتوى = get_one_page (رابط)

 طباعة ( '{} على الصفحة جلب مرة واحدة فقط ".format (ط))

 للشعبة في parse_one_page (المحتوى):

 طباعة (شعبة)

إذا __name__ == '__main__':

 الرئيسية ()

جميل حساء الزحف:

طلبات استيراد

إعادة استيراد

من requests.exceptions RequestException استيراد

من BS4 BeautifulSoup استيراد

CSV استيراد

الوقت استيراد

رؤوس = { 'عامل المستخدم': 'موزيلا / 5.0 (ويندوز NT 10.0. WOW64) AppleWebKit / 537.36 (KHTML، مثل أبو بريص) كروم / سفاري 55.0.2883.87 / 537.36'}

get_one_page صفر (رابط):

 محاولة:

 استجابة = requests.get (رابط، ورؤوس = الرؤوس)

 إذا response.status_code == 200:

 عودة response.text

 عودة لا يوجد

 يستثنى RequestException:

 عودة لا يوجد

parse_one_page صفر (المحتوى):

 محاولة:

 شوربة = BeautifulSoup (المحتوى، 'html.parser')

 البنود = soup.find ( 'شعبة، class_ = re.compile (' شبيبة نصائح القائمة '))

 للشعبة في items.find_all ( 'شعبة، class_ = re.compile (' ershoufang القائمة ')):

 تسفر {

 'اسم' :. Div.find ( "أ"، class_ = re.compile ( 'شبيبة عنوان')) النص،

 'نوع' :. Div.find ( 'ي'، class_ = re.compile ( 'حجم')) محتويات .text، قد يكون # الوسم علامة .contents الملكية طفل العقد وذلك لإخراج قائمة

 'المنطقة' :. Div.find ( 'ي'، class_ = re.compile ( 'حجم')) محتويات .text،

 "نحو" :. Div.find ( 'ي'، class_ = re.compile ( 'حجم')) محتويات .text،

 'الدور' :. Div.find ( 'ي'، class_ = re.compile ( 'حجم')) محتويات .text.replace ( '\ ن'، '')،

 'زين': div.find ( 'ي'، class_ = re.compile ( 'حجم')) محتويات .text،.

 "العنوان": .. Div.find ( 'مدى'، class_ = re.compile ( 'منطقة')) text.strip () استبدال ( ''، '') استبدال ( '\ ن'، '')،.

 "TotalPrice ': div.find (' مدى '، class_ = re.compile (' شبيبة سعر ')) نص + div.find (' مدى '، class_ = re.compile (' يو ')) النص، ..

 'الأسعار': div.find ( 'شعبة، class_ = re.compile (' الوقت ')) النص.

 }

 # هناك بعض المستعملة معلومات السكن في عداد المفقودين بعض المعلومات، مثل: عدم وجود الديكور المعلومات، الأرض أو نقص المعلومات، وهذه المرة الحاجة إلى إضافة قاض، أو سوف توقف الزحف.

 إذا شعبة == بلا:

 عودة لا يوجد

 يستثنى الاستثناء:

 عودة لا يوجد

صفر الرئيسية ():

 لأنني في مجموعة (1،50):

 URL = "

 المحتوى = get_one_page (رابط)

 طباعة ( '{} على الصفحة جلب مرة واحدة فقط ".format (ط))

 للشعبة في parse_one_page (المحتوى):

 طباعة (شعبة)

 مع فتح ( 'Data.csv'، 'ا'، السطر = '') كما و: مسار # تخزين الملفات Data.csv، إذا كان المسار الافتراضي الكتابة مباشرة اسم الملف.

 fieldnames =

 الكاتب = csv.DictWriter (و، fieldnames = fieldnames)

 writer.writeheader ()

 لعنصر في parse_one_page (المحتوى):

 writer.writerow (البند)

 time.sleep (3) # تعيين تردد الزحف، في البداية كنت الزحف بسرعة كبيرة، مما أدى إلى الصفحات التي تتطلب مصادقة.

إذا __name __ == '__ main__':

 الرئيسية ()

الزحف العادية: لقد درست لفترة طويلة، لم تحل حتى الآن.

هذه العملية هي من السهل أن المشاكل التي واجهتها هي:

  • هناك بعض المنازل في عداد المفقودين بعض المعلومات، مثل عدم وجود الديكور المعلومات، وهذه المرة الحاجة لإضافة الحكم، إن لم يكن تحديد، والزحف سوف تنهي تلقائيا (هنا سقطت حفرة كبيرة).
  • Data.csv المعرفة المخزنة في مسار الملف هو دليل العمل الافتراضي في بيثون حول كيفية عرض دليل العمل:

السراج استيراد

# عرض pyhton دليل العمل الافتراضية

طباعة (os.getcwd ())

# عند تعديل دليل العمل

os.chdir ( 'ه: \ workpython')

طباعة (os.getcwd ())

# دليل العمل الناتج

ه: \ workpython

  • الزواحف الطباعة القاموس، كل بيت هو قاموس من المعلومات، لأن المكتبة هي المعرفة المتعلقة بيثون في التفوق بقعة عمياء، لذلك عند كتابة دورة القاموس الزواحف مباشرة إلى CSV.

Pycharm الطباعة على النحو التالي:

في القاموس دورات الكتابة تأثير مباشر CSV يلي:

  • كثير من المبتدئين لا يعرفون كيفية التعامل مع لعنوان، حساء جميلة التأكيد هنا في استخدام .contents، تجربة شخصية، وأنا هنا لقضاء الكثير من الوقت للعثور على الجواب.

R القيام العام تحليل الانحدار الخطي من الزحف أسعار المساكن اليد

هنا نستخدم R للقيام ببعض تحليل بسيط من غانجي بكين بيانات الإسكان المستعملة التي تم التقاطها.

وصف البيانات

الاسم: العمل الرئيسي هو عنوان لافتة للنظر، لم يكن لديك القيمة المرجعية التحليلية

اكتب: عدد غرف النوم، الذين يعيشون رقم الغرفة، وعدد من الحمامات

المنطقة: منطقة (متر مربع)

نحو: الاتجاه

الكلمة: الكلمة

تزيين: صالح، مثل الديكور، والديكور بسيط والسكن الخام

العنوان: المستعملة عنوان السكن

TotalPrice: السعر الإجمالي

السعر: متوسط سعر (RMB / متر مربع)

تنظيف البيانات

معطيات < -read.csv ( "E: // البيانات لR / RData / data.csv")

البيانات < داتا # واسم وعنوان اثنين إزالة

البيانات

# عندما الزحف انضم إلى القاضي، لذلك أنا لا أعرف ما إذا كان هناك في عداد المفقودين قيم البيانات الزحف، التحقق من ذلك هنا

colSums (is.na (البيانات))

# اكتب هنا غرفة المعيشة وغرفة نوم وحمام وينقسم إلى ثلاثة أعمدة مختلفة

## وتجدر الإشارة إلى أنه لا توجد المنازل، مثل غرفة المعيشة: 1 غرفة 1 وي الوقت للتعامل مع هذا وحده، لا توجد معلومات المراحيض.

مكتبة (tidyr)

مكتبة (stringr)

البيانات = منفصلة (بيانات = البيانات، عمود = نوع، إلى = ج ( "النوم"، "هولز")، سبتمبر = "غرفة")

البيانات = منفصلة (بيانات = البيانات، عمود = قاعات، إلى = ج ( "هولز"، "مرحاض")، سبتمبر = "مكتب")

و## بعد إزالة كانجي المرحاض

البيانات $ مرحاض < -str_replace (البيانات $ مرحاض، "وي"، "")

FIG ستة ###، قاعات مع شخصيات إزالتها، لأن بعض المعلومات ليست منازل، مثل يعيش: 1 غرفة نوم وغرفة معيشة وغرفة النوم عندما تنقسم، سيتم تعيين الحمام إلى غرفة المعيشة.

البيانات $ القاعات < -str_replace (البيانات $ قاعات "وي"، "")

## اتخاذ أي الذين يعيشون البيانات والمعلومات، وهذه البيانات هي عمود منفصل لقاعات

newdata < داتا

newdata

غرفة المعيشة من المنزل ## أي معلومات العمود قاعات مليئة الأصفار

البيانات < -0

البيانات < -newdata

colSums (البيانات == "")

 غرف نوم قاعات منطقة مرحاض نحو الطابق تزيين

 0020000

TotalPrice الأسعار

 00

## وجدت اثنين من المراحيض أي معلومات لملء إلى 0.

البيانات $ مرحاض < -0

## متر مربع سيتم إزالة هنا بعد منطقة

البيانات $ المنطقة < -str_replace (البيانات $ المنطقة، "م"، "")

## مشاهدة نحو نوع

الجدول (البيانات $ نحو)

نحو الشمال والشرق والجنوب الشرقي إلى الشمال الشرقي الى الشرق الى الشمال والجنوب إلى الشمال الغربي إلى الجنوب

 51 هو 2.523.506.532.190.167.838

 الجنوب الغربي إلى الغرب

 2826

وكل ## إزالة المعلومات بين قوسين الطابق

البيانات $ الطابق < -str_replace (البيانات $ الطابق، ". * "، "") ## التعبير العادية

# عرض فئات الطابق المعلومات

 الطابق الأرضي السفلي طبقة إجمالي 1 مجموع 2 طبقة 3 طبقة طبقة 4 كو كو طبقة وسطى 5

 632327،903،661،101،681،301،016

# على التوالي وراء والأسعار TotalPrice مليون يوان / إزالة

البيانات $ TotalPrice < -str_replace (البيانات $ TotalPrice "الدولارات"، "")

البيانات $ السعر < -str_replace (البيانات $ الأسعار، "يوان / متر"، "")

رئيس (البيانات)

## تحويل تنسيق البيانات

البيانات $ نوم < -as.factor (البيانات $ غرف نوم)

البيانات $ القاعات < -as.factor (البيانات $ قاعات)

البيانات $ مرحاض < -as.factor (البيانات مرحاض $)

البيانات $ المنطقة < -as.numeric ($ مساحة البيانات)

البيانات $ TotalPrice < -as.numeric (البيانات $ TotalPrice)

البيانات $ السعر < -as.numeric (البيانات $ السعر)

البيانات دولار ل < -as.factor (البيانات $ نحو)

البيانات $ تزيين < -as.factor (البيانات $ تزيين)

شارع (البيانات)

الانتهاء من تنظيف البيانات الواردة أعلاه.

التحليل الوصفي

الفكرة الرئيسية لهذا القسم هي لاستكشاف أثر المتغير المستقل واحد على المتغير التابع، والعوامل التي تؤثر على الأسعار قبل محاكاة لاستكشاف، أول من المتغيرات وصفية تحليل لتحديد العوامل الأولية في أسعار المساكن. هنا لاستكشاف العوامل المختلفة التي تؤثر على السعر الإجمالي.

غرف نوم واستكشاف العلاقة بين TotalPrice

الجدول (البيانات $ غرف نوم)

 12345679

5.411.225.779.193.102.2051

ونظرا لأن عدد ## لديها عدد من 6،7،9 غرف نوم، حيث أننا أداء هذه البيانات.

البيانات < داتا

البيانات < داتا

البيانات < داتا

الجدول (البيانات $ غرف نوم)

 12345

 5.411.225.779.193.102

مكتبة (ggplot2)

ggplot (البيانات، AES (س = غرف نوم، ذ = TotalPrice)) + geom_boxplot (عمود = "الأحمر")

البيانات $ نوم < -as.numeric (البيانات $ غرف نوم)

## حيث عدد غرف النوم 1،2،3 المعينة A، B 4 هو، من 5 إلى C

البيانات $ نوم < - "A"

البيانات $ نوم < - "A"

البيانات $ نوم < - "A"

البيانات $ نوم < - "B"

البيانات $ نوم < - "C"

عدد غرف النوم المختلفة، TotalPrice مختلفة. ومع الزيادة في عدد من غرف النوم، وارتفاع الأسعار، وذلك تمشيا مع الوعي العام.

قاعات واستكشاف العلاقة بين TotalPrice

 الجدول (البيانات $ قاعات)

 0123459

 2.016.741.050.771.810

## 5 غرفة المعيشة هناك فرد واحد فقط، ونحن هنا ليتم تصريفها

البيانات < داتا

الجدول (البيانات $ قاعات)

 0123459

 2.016.741.050.771.800

ggplot (البيانات، AES (س = قاعات، ذ = TotalPrice)) + geom_boxplot (عمود = "الأحمر")

3 أضعاف عدد من غرفة المعيشة هو أعلى سعر، لغرفة المعيشة عندما الرقم 0، 1، 2 و 3 من السعر الإجمالي هو أقل من عدد من غرفة المعيشة وغرفة المعيشة رقم 4.

المرحاض واستكشاف العلاقة بين TotalPrice

# استكشاف العلاقة بين الحمام والمبلغ الإجمالي

الجدول (البيانات $ مرحاض)

 012345679

 221424701167426720

# هنا عدد دورات المياه وإزالة 0،67

البيانات < داتا

البيانات < داتا

البيانات < داتا

الجدول (البيانات $ مرحاض)

 012345679

 021424701167426000

ggplot (البيانات، AES (س = مرحاض، ذ = TotalPrice)) + geom_boxplot (عمود = "الأحمر")

وأعم عدد من غرف النوم، وعدد من الحمامات والمزيد من أن أكثر عدد من الحمامات، وارتفاع السعر الإجمالي.

واستكشاف منطقة علاقة TotalPrice

ggplot (البيانات، AES (س = المساحة، ص = TotalPrice)) + geom_point (عمود = 'الأحمر')

هذا الامتثال الكامل لمنطقة سكنية أكبر، وارتفاع السعر الإجمالي.

نحو استكشاف العلاقة مع TotalPrice

ggplot (البيانات، AES (س = نحو، ص = TotalPrice)) + geom_boxplot (عمود = "الأحمر")

الأرض واستكشاف العلاقة بين TotalPrice

ggplot (البيانات، AES (س = الكلمة، ص = TotalPrice)) + geom_boxplot (عمود = "الأحمر")

عرض معلومات شخصية فقط ما مجموعه 2، 3 دور، وارتفاع الطابق الأرضي من السعر الإجمالي.

تزيين واستكشاف العلاقة بين TotalPrice

ggplot (البيانات، AES (س = تزيين، ذ = TotalPrice)) + geom_boxplot (عمود = "الأحمر")

الديكور تأثيرات مختلفة على السعر الإجمالي أقل من المعلومات.

نموذج

صالح < -lm (TotalPrice ~ غرف نوم + صالات + مرحاض + مساحة + نحو + طابق + تزيين والبيانات = بيانات)

ملخص (صالح)

اتصل:

ل م (الصيغة = TotalPrice ~ غرف نوم + صالات + مرحاض + مساحة +

 نحو + طابق + تزيين والبيانات = بيانات)

بقايا:

 مين 1Q متوسط 3Q ماكس

2961.59 -1330.80 -103.49 -21.4163.88

معاملات:

 تقدير الأمراض المنقولة جنسيا. قيمة خطأ ر العلاقات العامة ( > | T |)

(اعتراض) -112،763388.3010 -1.2770.201697

Bedrooms2 -43،593416.2533 -2.6820.007359 **

Bedrooms3 -82،656520.7641 -3.9817.04e-05 ***

Bedrooms4 -63،309634.9521 -1.8110.070198.

Bedrooms579.061854.07631.4620.143842

Halls1 -5.066364.2764 -0.0790.937182

Halls2 -53،890565.4427 -0.8230.410307

Halls3 -303،975079.2280 -3.8370.000127 ***

Halls4 -528،5427104.0849 -5.0784.07e-07 ***

Toilet2112.956619.11715،9093.87e-09 ***

Toilet3543.730438.805614.012 <  2E 16 ***

Toilet4735.189455.097713.343 <  2E 16 ***

Toilet5338.790684.28514.0205.98e-05 ***

منطقة 5.10910.161931،557 <  2E 16 ***

نحو الشمال الشرقي إلى 138.908879.38171.7500.080248.

باتجاه الجنوب الشرقي 187.189568.53882.7310.006351 **

نحو شيء 176.305565.83842.6780.007453 **

نحو الشرق 210.943573.27442.8790.004022 **

نحو الشمال والجنوب 75.783157.11991.3270.184704

نحو الجنوب 60.194956.96781.0570.290763

نحو الشمال الغربي إلى 75.432671.14151.0600.289091

نحو الجنوب الغربي 169.810675.96262.2350.025467 *

نحو الغرب ** 234.081676.55853.0580.002253

الطابق تحت الأرض -812.357863.3277 -12.828 <  2E 16 ***

الطابق 12.352514.24660.8670.385991

طبقة أرضية 1 -313.727852.1342 -6.0182.00e-09 ***

أرضية 2 طبقات -453،369241.6829 -10.877 <  2E 16 ***

مجموعه الكلمة من 3 طبقات -601،703244.3336 -13.572 <  2E 16 ***

طبقة الطابق 4 -183.786636.3396 -5.0574.52e-07 ***

الدور 5 طوابق -41،418425.7922 -1.6060.108419

وسط الكلمة -1.722313.5961 -0.1270.899204

تزيين بسيط الديكور -63،159122.0584 -2.8630.004224 **

الديكور تزيين -49،327619.8544 -2.4840.013033 *

فارغة تزيين -157.029924.3012 -6.4621.22e 10 ***

---

Signif رموز :. 0 '***' 0.001 '**' 0.01 '* 0.050.1' '1'. '

الخطأ المعياري المتبقية: 265.5 على 2794 درجة من الحرية

R-مربع متعددة: 0.6852، المعدل R-تربيع: 0.6815

F-الإحصائية: 184.3 في 33 و 2794 DF، ص القيمة: <  2.2e-16

نموذج F-اختبار رفض فرضية العدم، ونموذج وصف مهم، Ajusted R-المربعة هو 0.6815، ودرجة نموذج صالح مقبولة.

الكاتب: شو تاو، خريجي 19 عاما، ركز البحث على الشعاب المرجانية، مثل جميع أنواع تنظيف البيانات R، مستخدمين معرفةparkson تقريبا.

تنويه: هذه المادة هي عدد من تقديم البيانات العامة لين سين، والآخر ينتمي للجميع.

"أصدقاء دعوة للمشاركة"

CSDN رقم إعلاء مفهوم الجمهور "وعشرة ملايين شخص النمو الكلي للتكنولوجيا،" ليس فقط ل"عناوين المهوسون"، "تشاتيريس" عمود للمرة الأولى منظور وصف تقني فريد من الشخص الذي يهتم صناعة التكنولوجيا، والتركيز على الحدث، وأكثر "عناوين فنية" العمود، والمشهد في الحارة صناعة تكنولوجيا تطبيق عمق التفسير، حتى يتسنى لجميع المطورين مواكبة اتجاهات التكنولوجيا، يبقى الشعور باليقظة التكنولوجيا رائحة، واتجاهات الصناعة والتكنولوجيا هي الإدراك أكثر شمولا.

إذا كان لديك أفكارا جديدة في المواد عالية الجودة أو صناعة الأحداث الساخنة والتكنولوجيا الاتجاهات رؤى أو التطبيق العملي لعمق برامج المشهد، يرجى الاتصال CSDN التقديم، الاتصال: مايكرو إلكتروني (guorui_1118، يرجى ملاحظة اسم مساهمة + + وظائف الشركات)، وصندوق البريد (guorui@csdn.net).

عملية 12nm الجديدة! AMD راديون RX 590 الأولى تقييم: زيادة كفاءة استخدام الطاقة بنسبة 10

كيف بكين هذا العام لتحسين نوعية الثقافية للخدمة، والقيام بعمل جيد من المشاريع الثقافية التي تعود بالنفع؟ نواب وأعضاء معا "سلاح"

هذه ليست مجرد دخان ومرايا جرد الأخير من النماذج الرئيسية حصرية صور تجسس

غاب نيس 1-1 ريمس، مسطحة تماما ركلة جزاء في الوقت المحتسب بدل الضائع، وشريط من الله

كيفية الاستعدادات لدورة الالعاب الاولمبية الشتوية؟ كيفية تعزيز تطوير الرياضات الشتوية؟ مخاوفك في هذا

صدر سوبارو ليجاسي جديدة كاملة الجيل الملاكم محرك 2.4T نظرة

مازدا MX-5 الذكرى 30 طبعة نشرت طبعة محدودة برتقالي فاتح معرض السيارات 3000

الكثير! أكبر منصة للصين سلسلة صناعة السيارات كلها تقع في تسيشي

نصف - ساسولو 0-0 انتر ميلان، قدم فسينو التأمين

بكين Longqingxia ذات المناظر الخلابة المحمولة جوا ونش الإنقاذ الحفر

إصدار الولايات المتحدة من "SAGITAR" محرك 2.0T GLI بالإضافة إلى هيئة سراح لتسريع شرسة مثل النمر

متوسط الأجر 8165 يوان! الإنترنت المواهب شهية لقيادة المدينة حتى الربيع