الكاتب | شو تاو
كانت الأسعار مرتفعة موضوع تهم الانجراف الشمال، وقد تم تحليل هذه المادة على بيانات الإسكان المستعملة في بكين.
وتنقسم هذه الورقة إلى قسمين: بيثون الزحف غانجي بكين بيانات الإسكان المستعملة، 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).