精华内容
下载资源
问答
  • 作者:xiaoyu微信公众号:Python数据科学目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。数据源:博主通过爬虫采集的链家全网北京二手房数据(公众号后台回复?...

    作者:xiaoyu

    微信公众号:Python数据科学目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。

    数据源:博主通过爬虫采集的链家全网北京二手房数据(公众号后台回复?二手房数据?便可获取)。

    下面是第二篇建模篇,看完这篇可继续研究这篇。

    数据初探

    首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn,以及机器学习包sklearn。import?pandas?as?pd?import?numpy?as?np?import?seaborn?as?sns?import?matplotlib?as?mpl?import?matplotlib.pyplot?as?plt?from?IPython.display?import?display?plt.style.use("fivethirtyeight")?sns.set_style({'font.sans-serif':['simhei','Arial']})?%matplotlib?inline?#?检查Python版本?from?sys?import?version_info?if?version_info.major?!=?3:?????raise?Exception('请使用Python?3?来完成此项目')

    然后导入数据,并进行初步的观察,这些观察包括了解数据特征的缺失值,异常值,以及大概的描述性统计。#?导入链家二手房数据?lianjia_df?=?pd.read_csv('lianjia.csv')?display(lianjia_df.head(n=2))

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    初步观察到一共有11个特征变量,Price?在这里是我们的目标变量,然后我们继续深入观察一下。#?检查缺失值情况?lianjia_df.info()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    发现了数据集一共有23677条数据,其中Elevator特征有明显的缺失值。lianjia_df.describe()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    上面结果给出了特征值是数值的一些统计值,包括平均数,标准差,中位数,最小值,最大值,25%分位数,75%分位数。这些统计结果简单直接,对于初始了解一个特征好坏非常有用,比如我们观察到?Size 特征?的最大值为1019平米,最小值为2平米,那么我们就要思考这个在实际中是不是存在的,如果不存在没有意义,那么这个数据就是一个异常值,会严重影响模型的性能。

    当然,这只是初步观察,后续我们会用数据可视化来清晰的展示,并证实我们的猜测。#?添加新特征房屋均价?df?=?lianjia_df.copy()?df['PerPrice']?=?lianjia_df['Price']/lianjia_df['Size']?#?重新摆放列位置?columns?=?['Region',?'District',?'Garden',?'Layout',?'Floor',?'Year',?'Size',?'Elevator',?'Direction',?'Renovation',?'PerPrice',?'Price']?df?=?pd.DataFrame(df,?columns?=?columns)?#?重新审视数据集?display(df.head(n=2))

    我们发现Id特征其实没有什么实际意义,所以将其移除。由于房屋单价分析起来比较方便,简单的使用总价/面积就可得到,所以增加一个新的特征?PerPrice(只用于分析,不是预测特征)。另外,特征的顺序也被调整了一下,看起来比较舒服。

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    数据可视化分析

    Region特征分析

    对于区域特征,我们可以分析不同区域房价和数量的对比。#?对二手房区域分组对比二手房数量和每平米房价?df_house_count?=?df.groupby('Region')['Price'].count().sort_values(ascending=False).to_frame().reset_index()?df_house_mean?=?df.groupby('Region')['PerPrice'].mean().sort_values(ascending=False).to_frame().reset_index()?f,?[ax1,ax2,ax3]?=?plt.subplots(3,1,figsize=(20,15))?sns.barplot(x='Region',?y='PerPrice',?palette="Blues_d",?data=df_house_mean,?ax=ax1)?ax1.set_title('北京各大区二手房每平米单价对比',fontsize=15)?ax1.set_xlabel('区域')?ax1.set_ylabel('每平米单价')?sns.barplot(x='Region',?y='Price',?palette="Greens_d",?data=df_house_count,?ax=ax2)?ax2.set_title('北京各大区二手房数量对比',fontsize=15)?ax2.set_xlabel('区域')?ax2.set_ylabel('数量')?sns.boxplot(x='Region',?y='Price',?data=df,?ax=ax3)?ax3.set_title('北京各大区二手房房屋总价',fontsize=15)?ax3.set_xlabel('区域')?ax3.set_ylabel('房屋总价')?plt.show()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    使用了pandas的网络透视功能groupby分组排序。区域特征可视化直接采用?seaborn完成,颜色使用调色板palette参数,颜色渐变,越浅说明越少,反之越多。

    可以观察到:二手房均价:西城区的房价最贵均价大约11万/平,因为西城在二环以里,且是热门学区房的聚集地。其次是东城大约10万/平,然后是海淀大约8.5万/平,其它均低于8万/平。

    二手房房数量:从数量统计上来看,目前二手房市场上比较火热的区域。海淀区和朝阳区二手房数量最多,差不多都接近3000套,毕竟大区,需求量也大。然后是丰台区,近几年正在改造建设,有赶超之势。

    二手房总价:通过箱型图看到,各大区域房屋总价中位数都都在1000万以下,且房屋总价离散值较高,西城最高达到了6000万,说明房屋价格特征不是理想的正太分布。

    Size特征分析f,?[ax1,ax2]?=?plt.subplots(1,?2,?figsize=(15,?5))?#?建房时间的分布情况?sns.distplot(df['Size'],?bins=20,?ax=ax1,?color='r')?sns.kdeplot(df['Size'],?shade=True,?ax=ax1)?#?建房时间和出售价格的关系?sns.regplot(x='Size',?y='Price',?data=df,?ax=ax2)?plt.show()

    AAffA0nNPuCLAAAAAElFTkSuQmCCSize 分布:

    通过?distplot和?kdeplot?绘制柱状图观察 Size 特征的分布情况,属于长尾类型的分布,这说明了有很多面积很大且超出正常范围的二手房。Size 与 Price 的关系:

    通过?regplot?绘制了 Size 和 Price 之间的散点图,发现 Size 特征基本与Price呈现线性关系,符合基本常识,面积越大,价格越高。但是有两组明显的异常点:1. 面积不到10平米,但是价格超出10000万;2. 一个点面积超过了1000平米,价格很低,需要查看是什么情况。df.loc[df['Size']<?10]

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    经过查看发现这组数据是别墅,出现异常的原因是由于别墅结构比较特殊(无朝向无电梯),字段定义与二手商品房不太一样导致爬虫爬取数据错位。也因别墅类型二手房不在我们的考虑范围之内,故将其移除再次观察Size分布和Price关系。df.loc[df['Size']>1000]

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    经观察这个异常点不是普通的民用二手房,很可能是商用房,所以才有1房间0厅确有如此大超过1000平米的面积,这里选择移除。df?=?df[(df['Layout']!='叠拼别墅')&(df['Size']<1000)]

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    重新进行可视化发现就没有明显的异常点了。

    Layout特征分析f,?ax1=?plt.subplots(figsize=(20,20))?sns.countplot(y='Layout',?data=df,?ax=ax1)?ax1.set_title('房屋户型',fontsize=15)?ax1.set_xlabel('数量')?ax1.set_ylabel('户型')?plt.show()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    这个特征真是不看不知道,各种厅室组合搭配,竟然还有9室3厅,4室0厅等奇怪的结构。其中,2室一厅占绝大部分,其次是3室一厅,2室2厅,3室两厅。但是仔细观察特征分类下有很多不规则的命名,比如2室一厅与2房间1卫,还有别墅,没有统一的叫法。这样的特征肯定是不能作为机器学习模型的数据输入的,需要使用特征工程进行相应的处理。

    Renovation 特征分析df['Renovation'].value_counts()

    精装 11345

    简装 8497

    其他 3239

    毛坯 576

    南北?20

    Name: Renovation, dtype: int64

    发现Renovation装修特征中竟然有南北,它属于朝向的类型,可能是因为爬虫过程中一些信息位置为空,导致"Direction”朝向特征出现在这里,所以需要清除或替换掉。#?去掉错误数据"南北”,因为爬虫过程中一些信息位置为空,导致"Direction”的特征出现在这里,需要清除或替换?df['Renovation']?=?df.loc[(df['Renovation']?!=?'南北'),?'Renovation']?#?画幅设置?f,?[ax1,ax2,ax3]?=?plt.subplots(1,?3,?figsize=(20,?5))?sns.countplot(df['Renovation'],?ax=ax1)?sns.barplot(x='Renovation',?y='Price',?data=df,?ax=ax2)?sns.boxplot(x='Renovation',?y='Price',?data=df,?ax=ax3)?plt.show()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    观察到,精装修的二手房数量最多,简装其次,也是我们平日常见的。而对于价格来说,毛坯类型却是最高,其次是精装修。

    Elevator 特征分析

    初探数据的时候,我们发现?Elevator?特征是有大量缺失值的,这对于我们是十分不利的,首先我们先看看有多少缺失值:misn?=?len(df.loc[(df['Elevator'].isnull()),?'Elevator'])?print('Elevator缺失值数量为:'+?str(misn))

    Elevator 缺失值数量为:8237

    这么多的缺失值怎么办呢?这个需要根据实际情况考虑,常用的方法有平均值/中位数填补法,直接移除,或者根据其他特征建模预测等。

    这里我们考虑填补法,但是有无电梯不是数值,不存在平均值和中位数,怎么填补呢?这里给大家提供一种思路:就是根据楼层 Floor 来判断有无电梯,一般的楼层大于6的都有电梯,而小于等于6层的一般都没有电梯。有了这个标准,那么剩下的就简单了。#?由于存在个别类型错误,如简装和精装,特征值错位,故需要移除?df['Elevator']?=?df.loc[(df['Elevator']?==?'有电梯')|(df['Elevator']?==?'无电梯'),?'Elevator']?#?填补Elevator缺失值?df.loc[(df['Floor']>6)&(df['Elevator'].isnull()),?'Elevator']?=?'有电梯'?df.loc[(df['Floor']<=6)&(df['Elevator'].isnull()),?'Elevator']?=?'无电梯'?f,?[ax1,ax2]?=?plt.subplots(1,?2,?figsize=(20,?10))?sns.countplot(df['Elevator'],?ax=ax1)?ax1.set_title('有无电梯数量对比',fontsize=15)?ax1.set_xlabel('是否有电梯')?ax1.set_ylabel('数量')?sns.barplot(x='Elevator',?y='Price',?data=df,?ax=ax2)?ax2.set_title('有无电梯房价对比',fontsize=15)?ax2.set_xlabel('是否有电梯')?ax2.set_ylabel('总价')?plt.show()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    结果观察到,有电梯的二手房数量居多一些,毕竟高层土地利用率比较高,适合北京庞大的人群需要,而高层就需要电梯。相应的,有电梯二手房房价较高,因为电梯前期装修费和后期维护费包含内了(但这个价格比较只是一个平均的概念,比如无电梯的6层豪华小区当然价格更高了)。

    Year 特征分析grid?=?sns.FacetGrid(df,?row='Elevator',?col='Renovation',?palette='seismic',size=4)?grid.map(plt.scatter,?'Year',?'Price')?grid.add_legend()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    在Renovation和Elevator的分类条件下,使用?FaceGrid?分析 Year 特征,观察结果如下:整个二手房房价趋势是随着时间增长而增长的;

    2000年以后建造的二手房房价相较于2000年以前有很明显的价格上涨;

    1980年之前几乎不存在有电梯二手房数据,说明1980年之前还没有大面积安装电梯;

    1980年之前无电梯二手房中,简装二手房占绝大多数,精装反而很少;

    Floor 特征分析f,?ax1=?plt.subplots(figsize=(20,5))?sns.countplot(x='Floor',?data=df,?ax=ax1)?ax1.set_title('房屋户型',fontsize=15)?ax1.set_xlabel('数量')?ax1.set_ylabel('户型')?plt.show()

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    可以看到,6层二手房数量最多,但是单独的楼层特征没有什么意义,因为每个小区住房的总楼层数都不一样,我们需要知道楼层的相对意义。另外,楼层与文化也有很重要联系,比如中国文化七上八下,七层可能受欢迎,房价也贵,而一般也不会有4层或18层。当然,正常情况下中间楼层是比较受欢迎的,价格也高,底层和顶层受欢迎度较低,价格也相对较低。所以楼层是一个非常复杂的特征,对房价影响也比较大。

    总结

    本次分享旨在让大家了解如何用Python做一个简单的数据分析,对于刚刚接触数据分析的朋友无疑是一个很好的练习。不过,这个分析还存在很多问题需要解决,比如:解决爬虫获取的数据源准确度问题;

    需要爬取或者寻找更多好的售房特征;

    需要做更多地特征工程工作,比如数据清洗,特征选择和筛选;

    使用统计模型建立回归模型进行价格预测;

    更多内容会慢慢介绍和分享,敬请期待。

    展开全文
  • 实例内容来自《利用python进行数据分析》。 本文中可能使用的数据集来自:《利用python进行数据分析》数据集。 MovieLens 1M数据集 由GroupLens实验室从MoviesLens收集,内容是20世纪90年代末带21世纪初的电影评分...
  • python数据分析参考案例,在线选房系统代码和数据,网络收集
  • 本课程是Python数据分析实战课程,从数据搜集、数据存取、数据清洗、数据分析、数据可视化一步一步完成北京二手房价数据分析过程。
  • Python数据分析案例教程,不仅介绍了使用Python进行数据分析所涉及的常用知识,而且介绍了6个流行的数据分析方面的项目。包括数据分析基础、NumPy模块实现数值计算、Pandas模块实现统计分析、Matplotlib模块实现...
  • 最好使用notebook运行.如果直接用使用python运行,只会出现一张图片。
  • Python数据分析实例

    万次阅读 多人点赞 2019-06-14 22:13:37
    Python数据分析 Python爬取网页数据

    Python数据分析

    Python爬取网页数据

    // An highlighted block
    import requests
    if __name__=="__main__":
        response = requests.get("https://book.douban.com/subject/26986954/")
        content = response.content.decode("utf-8")
        print(content)
    
    // An highlighted block
    import requests
    url="https://pro.jd.com/mall/active/4BNKTNkRMHJ48QQ5LrUf6AsydtZ6/index.html"
    try:
        r=requests.get(url)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        print(r.text[:100])
    except:
        print("爬取失败")
    

    Python生成柱状图

    // An highlighted block
    import matplotlib.pyplot as plt  
      
    num_list = [1.5,0.6,7.8,6]  
    plt.bar(range(len(num_list)), num_list,color='rbgy')  
    plt.show()  
    

    在这里插入图片描述
    Python生成堆状柱状图

    // An highlighted block
    import matplotlib.pyplot as plt  
      
    name_list = ['Monday','Tuesday','Friday','Sunday']  
    num_list = [1.5,0.6,7.8,6]  
    num_list1 = [1,2,3,1]  
    plt.bar(range(len(num_list)), num_list, label='boy',fc = 'y')  
    plt.bar(range(len(num_list)), num_list1, bottom=num_list, label='girl',tick_label = name_list,fc = 'r')  
    plt.legend()  
    plt.show()  
    

    在这里插入图片描述
    Python生成竖状柱状图

    // An highlighted block
    import matplotlib.pyplot as plt  
      
    name_list = ['Monday','Tuesday','Friday','Sunday']  
    num_list = [1.5,0.6,7.8,6]  
    num_list1 = [1,2,3,1]  
    x =list(range(len(num_list)))  
    total_width, n = 0.8, 2  
    width = total_width / n  
      
    plt.bar(x, num_list, width=width, label='boy',fc = 'y')  
    for i in range(len(x)):  
        x[i] = x[i] + width  
    plt.bar(x, num_list1, width=width, label='girl',tick_label = name_list,fc = 'r')  
    plt.legend()  
    plt.show()  
    

    在这里插入图片描述
    Python生成折线图

    // An highlighted block
    import pandas as pd
    import numpy as np
     
    df = pd.DataFrame(np.random.rand(15, 4), columns=['a', 'b', 'c', 'd'])
    df.plot.area() 
    

    在这里插入图片描述
    Python生成柱状图

    // An highlighted block
    import pandas as pd
    import numpy as np
     
    df = pd.DataFrame(3 * np.random.rand(5), index=['a', 'b', 'c', 'd','e'], columns=['x'])
    df.plot.pie(subplots=True)
    

    在这里插入图片描述
    Python生成箱型图

    // An highlighted block
    #首先导入基本的绘图包
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    #添加成绩表
    plt.style.use("ggplot")
    plt.rcParams['axes.unicode_minus'] = False
    plt.rcParams['font.sans-serif']=['SimHei'] 
    
    #新建一个空的DataFrame
    df=pd.DataFrame()
    
    // An highlighted block
    df["英语"]=[76,90,97,71,70,93,86,83,78,85,81]
    df["经济数学"]=[65,95,51,74,78,63,91,82,75,71,55]
    df["西方经济学"]=[93,81,76,88,66,79,83,92,78,86,78]
    df["计算机应用基础"]=[85,78,81,95,70,67,82,72,80,81,77]
    df
    
    // An highlighted block
    plt.boxplot(x=df.values,labels=df.columns,whis=1.5)
    plt.show()
    

    在这里插入图片描述

    // An highlighted block
    #用pandas自带的画图工具更快
    df.boxplot()
    plt.show()
    

    在这里插入图片描述
    Python生成正态分布图

    // An highlighted block
    # -*- coding:utf-8 -*-
    # Python实现正态分布
    # 绘制正态分布概率密度函数
    import numpy as np
    import matplotlib.pyplot as plt
    import math
    
    u = 0  # 均值μ
    u01 = -2
    sig = math.sqrt(0.2)  # 标准差δ
    
    x = np.linspace(u - 3 * sig, u + 3 * sig, 50)
    y_sig = np.exp(-(x - u) ** 2 / (2 * sig ** 2)) / (math.sqrt(2 * math.pi) * sig)
    print(x)
    print("=" * 20)
    print(y_sig)
    plt.plot(x, y_sig, "r-", linewidth=2)
    plt.grid(True)
    plt.show()
    

    在这里插入图片描述
    喜欢的小伙伴可以尝试一下哦

    这是小编公众号,请动动您可爱的小手手,关注一下💓😘
    在这里插入图片描述

    展开全文
  • Python数据分析案例.zip

    2020-09-07 23:21:48
    本人学习Python大数据时,老师在课堂中讲解所用到的案例,比较经典,非常的不错,非常适合初学者做参考。
  • 1.获取数据:想要获得道指30只成分股的最新股价importrequestsimportreimportpandas as pddefretrieve_dji_list():try:r= requests.get('https://money.cnn.com/data/dow30/')exceptConnectionError as err:print(err...

    1.获取数据:

    想要获得道指30只成分股的最新股价

    importrequestsimportreimportpandas as pddefretrieve_dji_list():try:

    r= requests.get('https://money.cnn.com/data/dow30/')exceptConnectionError as err:print(err)

    search_pattern= re.compile('class="wsod_symbol">(.*?).*?(.*?).*? .*?class="wsod_stream">(.*?)')

    dji_list_in_text=re.findall(search_pattern, r.text)

    dji_list=[]for item indji_list_in_text:

    dji_list.append([item[0], item[1], float(item[2])])returndji_list

    dji_list=retrieve_dji_list()

    djidf=pd.DataFrame(dji_list)print(djidf)

    整理数据, 改变列名, index等

    cols=['code','name','lasttrade']

    djidf.columns=cols #改变列名

    djidf.index=range(1,len(djidf)+1)

    最后结果为:

    1307805-20181127182817690-1698626124.png

    数据的选择

    djidf.code #获取code列+index

    djidf['code'] #获取code列 , 两者同功能

    djidf.loc[1:5,] #前5行

    djidf.loc[:,['code','lasttrade']] #所有行

    djidf.loc[1:5,['code','lasttrade']] #1-5行, loc表示标签index

    djidf.loc[1,['code','lasttrade']] #1行

    djidf.at[1,'lasttrade'] #只有一个值的时候可以用at

    djidf.iloc[2:4,[0,2]] #表示物理文职, 并且4取不到, 就只有第三行第四行

    djidf.iat[1,2] #单个值

    简单的数据筛选: 平均股价, 股价大于180的公司名

    djidf.lasttrade.mean() # 121.132

    djidf[djidf.lasttrade>=180].name

    1307805-20181127183508844-463758911.png

    找到股价前三名的公司 , 降序排列

    tempdf=djidf.sort_values(by='lasttrade',ascending=False)

    tempdf[:3].name

    如何根据index排序呢? 专门有函数sort_index()

    df=pd.DataFrame(np.random.randn(3,3),index=['c','b','a'],columns=list('xyz'))

    df.sort_index()#根据index 进行排序

    *获取AXP公司过去一年的股价数据获取

    importrequestsimportreimportjsonimportpandas as pdfrom datetime importdatedefretrieve_quotes_historical(stock_code):

    quotes=[]

    url= 'https://finance.yahoo.com/quote/%s/history?p=%s' %(stock_code, stock_code)try:

    r=requests.get(url)exceptConnectionError as err:print(err)

    m= re.findall('"HistoricalPriceStore":{"prices":(.*?),"isPending"', r.text)ifm:

    quotes= json.loads(m[0]) #m = ['[{...},{...},...]']

    quotes = quotes[::-1] #原先数据为date最新的在最前面

    return [item for item in quotes if not 'type' initem]

    quotes= retrieve_quotes_historical('AXP')

    list1=[]for i inrange(len(quotes)):

    x=date.fromtimestamp(quotes[i]['date'])

    y=date.strftime(x,'%Y-%m-%d')

    list1.append(y)

    quotesdf_ori=pd.DataFrame(quotes,index=list1)

    quotesdf_m= quotesdf_ori.drop(['adjclose'], axis = 1) #删除adjclose列

    quotesdf=quotesdf_m.drop(['date'],axis=1)print(quotesdf)

    上述需要对时间进行处理, 将时间转为'%Y-%m-%d'的格式, 并且将这个时间作为一个list 成为quotesdf的index.

    1307805-20181127183312427-898004346.png

    数据的筛选

    quotesdf[(quotesdf.index>='2017-03-01') & (quotesdf.index<='2017-03-31')]

    quotesdf[(quotesdf.index>='2017-11-30') & (quotesdf.index<='2018-03-31')&(quotesdf.close>=90)]

    简单计算

    (1) 统计AXP股价涨跌的天数 (close>open)

    len(quotesdf.close>quotesdf.open)

    (2) 相邻两天的涨跌

    importnumpy as np

    status=np.sign(np.diff(quotesdf.close))

    status#250 的长度, 比quotesdf 少1

    status[np.where(status==1)].size #np.where(status==1)是由下标构成的array#

    上述统计还可以直接用describe函数, 得到基本统计信息

    importpandas as pdimportnumpy as np

    index_df= pd.DataFrame(np.random.rand(3,3), index=['a','b','c'], columns=['index_1','index_2','index_3'])

    index_df.describe()#超级强大

    1307805-20181127183825487-363916830.png

    (3) 统计2018一月的交易日天数

    t=quotesdf[(quotesdf.index>='2018-01-01') & (quotesdf.index<'2018-02-01')]

    len(t) #21

    进一步, 如何统计近一年每个月的交易日天数?

    统计每个月的出现天数就行了, 如何提取月份信息? 要把时间的字符串转化为 时间格式,

    importtime

    list2=[]for i inrange(len(quotesdf)):

    temp=time.strptime(quotesdf.index[i],'%Y-%m-%d')

    list2.append(temp.tm_mon)#取月份

    tempdf=quotesdf.copy()

    tempdf['month']=list2 #新增一列月份的数据

    print(tempdf['month'].value_counts()) #计算每个月的出现次数

    注意:

    strptime 将字符串格式化为time结构, time 中会包含年份, 月份等信息

    strftime 将time 结构格式化一个字符串, 之前生成quotesdf中用到过

    上述方法略微麻烦, 如何快速知道每个月的交易日天数? groupby

    #统计每一月的股票开盘天数

    x=tempdf.groupby('month').count()#统计近一年每个月的成交量

    tempdf.groupby('month').sum().volume#先每个月进行求和, 但是这些对其他列也进行了求和, 属于无效计算, 如何避免?

    tempdf.groupby('month').volume.sum() #交换顺序即可

    引申: 一般groupby 与apply 在一起用. 具体不展开了

    deff(df):returndf.age.count()

    data_df.groupby('taste of mooncake').apply(f)

    (二) 合并DataFrame: append, concat, join

    #append

    p=quotesdf[:2]

    q=quotesdf['2018-01-01':'2018-01-05']

    p.append(q)#concat

    pieces=[tempdf[:5],tempdf[len(tempdf)-5:]]

    pd.concat(pieces)

    两个结构不同的DataFrame 如何合并?

    piece1=quotesdf[0:3]

    piece2=tempdf[:3]

    pd.concat([piece1,piece2],ignore_index=True)

    piece2有month 但是piece1中没有这个字段

    1307805-20181127184912238-642375928.png

    join函数中的各种参数, 可以用来实现SQL的各种合并功能.

    #join 两个dataframe要有共同的字段(列名)#djidf: code/name#AKdf: volume/code/month#合并之后的字段: code/name/volume/month

    pd.merge(djidf.drop(['lasttrade'],axis=1),AKdf, on='code')

    展开全文
  • 无论是做机器学习还是做数据分析,都离不开获取数据后的第一步-数据清洗工作。据统计,数据清洗工作占据整个工作时间百分之50左右,有的甚至能达到百分之70。下面我将介绍我进行数据清洗得思路流程。 数据清洗整体...
  • 对Excel数据进行读取并重新整理至新Excel,并绘制Excel中数据为图表
  • 其中包含4个案例,以毕业论文的格式写出。包含原始数据。代码可复制粘贴。
  • 可以用Python实现的有趣的小项目,内容包括Python爬虫,Python数据分析,机器学习,深度学习等,持续更新中。本存储库主要用于存放项目代码,对应的项目文章可以关注公众号。 作者:阿尔弗雷德微信公众号: (原称...
  • 全面地介绍数据分析的流程和Python数据分析库的应用,详细讲解利用Python解决企业实际问题的方法。* 1章介绍了数据分析的基本概念等相关知识;* 2~6章介绍了Python数据分析的常用库及其应用,涵盖NumPy数值计算、...
  • 本课程以一个小项目带你快速上手 Python 爬虫和数据分析,主要分 3 部分: 第 1 部分是 Python 爬虫,主要使用 Urllib 3 和 BeautifulSoup 抓取天猫商城和京东商城胸罩销售数据,并保存到 SQLite 数据库中; 第 2 ...
  • 今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F。学习编程是一个比较枯燥的过程,所以小F平常喜欢分享一些有趣、有料的Python原创项目实战。从2018年8月一直到现在,...

    今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F。

    学习编程是一个比较枯燥的过程,所以小F平常喜欢分享一些有趣、有料的Python原创项目实战。从2018年8月一直到现在,已经更新接近 百篇原创 文章。

    主要有Python基础、爬虫、数据分析、数据可视化等内容,非常受编程学习者的欢迎,不少文章被各大平台转载。

    这里精选了30多个Python数据分析实战案例,不仅包含源码,还有使用教程。

    30+的Python实战案例及使用教程,可在公众号「法纳斯特」后台回复 “合辑” 获取~

    ????长按扫描上方二维码关注

    回复「合辑」即可获取30+的Python实战案例

    在这个人工智能,大数据时代,希望你能关注,和小F一起学习,共同进步,冲鸭!

    Python爬虫

    Python数据分析与可视化

    Python小操作

    以上只是部分原创文章,还有更多优质文章,就不一一展示了。

    额外福利

    此外,小F还私藏了3份Python速查表。每一张表都会让你受益良多,非常实用~

    数据科学表含有NumPy、SciPy、Pandas、Scikit-Learn、Matplotlib、Seaborn、Bokeh等内容。

    基础知识表含有列表、字典、条件循环、函数、类、异常、测试、Pygame、Pygal、Django等内容。

    怎么获取呢?

    添加小F微信,备注 "速查表" 获取

    展开全文
  • 今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F。小F是211机械专业毕业的,上学的时候还造了两辆车(FSC、无碳小车),毕业以后又在车企搬了一年的砖,最终决定转行IT,...
  • 20个python数据分析实战项目(附源码)

    万次阅读 多人点赞 2020-11-05 20:03:22
    2.python数据分析——pyecharts柱状图全解(小白必看) https://mp.weixin.qq.com/s/fvenxqQBIh-UaYVTJVADrw 3.太震撼了,我用python画出全北京的公交线路动图 https://mp.weixin.qq.com/s/TbxeM7LnBGdyCfjn96EI5A ...
  • python数据分析:客户价值分析案例实战 数据集,相应文章地址为:https://blog.csdn.net/weixin_42000526/article/details/82014361
  • 原标题:Python数据分析案例实战至今我们网站已经开设了多个数据分析系列的课程,大部分都是基于算法思路来开展的,课程中着重点在于算法的讲授、软件的使用,案例只是辅助学习。然而很多学员反映,希望可以在课程中...
  • 两个学习道具:1)这个网页可以调用全球最大的搜索引擎(长按此处可以复制):事先准备:在notebook中想要导入Excel文件,要先安装一个读取Excel文件的包:xlrd安装步骤:1>现在conda中进入当前文件所在的Python环境...
  • python数据分析基础

    2021-07-01 04:23:21
    8个常用python工具库 + 10小时以上视频课程 + 50个工作常用技能 + 4个爬虫案例 + 10个行业数据分析案例, 介绍python数据分析、爬虫基础技巧, 助你提升职场竞争力, 转行、应聘简历加分。 课程介绍python数据读取、...
  • 全面地介绍数据分析的流程和Python数据分析库的应用,详细讲解利用Python解决企业实际问题的方法。* 1章介绍了数据分析的基本概念等相关知识;* 2~6章介绍了Python数据分析的常用库及其应用,涵盖NumPy数值计算、...
  • Python数据分析7个入门案例
  • Python数据分析与挖掘

    万人学习 2018-01-08 11:17:45
    二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过...
  • Github社区python项目数据分析

    万次阅读 2018-01-18 12:38:25
    最近看到CSDN上各种做数据分析的,相关博文层出不穷:什么分析CSDN小姐姐一年发的文章,什么分析猎场的火热程度,比比皆是。于是乎,我们也来凑个热闹,分析下github上火热的python项目。 使用API调用数据 首先...
  • python数据分析案例数据 主要用于本人博客的部分文章案例数据使用。 单变量的样本分布检验(python3) 探索变量间关系 ....... 等文章的案例数据
  • 本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果。分享给大家供大家参考,具体如下: 前面讲述了关于双色球的各种算法,这里将进行下期双色球号码的预测,想想有些小激动啊。 代码中使用了...
  • Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,226
精华内容 63,690
关键字:

python数据分析项目实例

python 订阅