当前位置: 首页 > news >正文

【python】python3.7数据分析入门学习笔记 研读

原文:https://www.cnblogs.com/zzhzhao/p/5269217.html

目录
一、  数据分析有关的python库简介

(一)numpy

(二)pandas

(三)matplotlib

(四)scipy

(五)statsmodels

(六)scikit-learn

二、  数据的导入和导出
三、  数据筛选
四、  数据描述
五、  数据处理
六、  统计分析
七、  可视化
八、  其它

 前言:各种和数据分析相关python库的介绍

(前言1~4摘抄自《利用python进行数据分析》)

1.Numpy:
Numpy是python科学计算的基础包,它提供以下功能(不限于此):
(1)快速高效的多维数组对象ndarray 
(2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数
(3)用于读写硬盘上基于数组的数据集的工具
(4)线性代数运算、傅里叶变换,以及随机数生成
(5)用于将C、C++、Fortran代码集成到python的工具

2.pandas
pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据(如SQL)灵活的数据处理能力。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
对于金融行业的用户,pandas提供了大量适用于金融数据的高性能时间序列功能和工具。
DataFrame是pandas的一个对象,它是一个面向列的二维表结构,且含有行标和列标。
ps.引用一段网上的话说明DataFrame的强大之处:
Excel 2007及其以后的版本的最大行数是1048576,最大列数是16384,超过这个规模的数据Excel就会弹出个框框“此文本包含多行文本,无法放置在一个工作表中”。Pandas处理上千万的数据是易如反掌的事情,同时随后我们也将看到它比SQL有更强的表达能力,可以做很多复杂的操作,要写的code也更少。 说了一大堆它的好处,要实际感触还得动手码代码。

3.matplotlib
matplotlib是最流行的用于绘制数据图表的python库。

4.Scipy
Scipy是一组专门解决科学计算中各种标准问题域的包的集合。
5.statsmodels: https://github.com/statsmodels/statsmodels
6.scikit-learn: http://scikit-learn.org/stable/


一.数据导入和导出 

注意:地址中的\ 是转义符,所以E:\必须表示为E:\\ 或者在路径前面加r,如:r'E:\tips.csv' 和'E:\\tips.csv' 等价

 (一)读取csv文件

1.本地读取

import pandas as pd
df = pd.read_csv('E:\\tips.csv')  #根据自己数据文件保存的路径填写(p.s.  python填写路径时,要么使用/,要么使用\\) 路径不要有中文
#输出:
     total_bill   tip     sex smoker   day    time  size
        16.99  1.01  Female     No   Sun  Dinner     2
        10.34  1.66    Male     No   Sun  Dinner     3
        21.01  3.50    Male     No   Sun  Dinner     3
        23.68  3.31    Male     No   Sun  Dinner     2
        24.59  3.61  Female     No   Sun  Dinner     4
        25.29  4.71    Male     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
      27.18  2.00  Female    Yes   Sat  Dinner     2
      22.67  2.00    Male    Yes   Sat  Dinner     2
      17.82  1.75    Male     No   Sat  Dinner     2
      18.78  3.00  Female     No  Thur  Dinner     2
[244 rows x 7 columns]

2.网络读取

import pandas as pd
data_url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv" #填写url读取
df = pd.read_csv(data_url)
#输出同上,为了节省篇幅这儿就不粘贴了
print(df)​

3.read_csv简单用法:

语句分析:

q_table6 = pd.read_csv('dl_data.csv',encoding = "utf-8",header = 0,names = range(0,50))

功能:将原来的列索引[-25......25]替换成[0....49]。

介绍:header = 0是默认情况(即不标明,默认就是header = 0),表示以数据的第一行为列索引。

           encoding = "utf-8"表明以utf-8为编码规则。

           names = range(0,50))表示以[0....49]为列索引的名字

q_table6 = pd.read_csv('dl_data.csv',encoding = "utf-8",header = None,names = range(0,50))

功能:给数据添加一行列索引[0....49],header = None表示原来的数据是没有列索引的,就算你的数据里面有列索引,这时就把原来的列索引当成了数据。

上面两个语句都会默认为数据添加行索引,即会把原来的行索引当成数据,自己再添加新的行索引[0,1,2.....] !!!!!!!如果不想添加新的行索引,代码如下:

q_table6 = pd.read_csv('dl_data.csv',encoding = "utf-8",index_col=0)

index_col=0表示以原有数据的第一列(索引为0)当作行索引。

详细参数:http://www.cnblogs.com/datablog/p/6127000.html

(二)读取Mysql数据

import pandas as pd
import MySQLdb
mysql_cn= MySQLdb.connect(host='localhost', port=3306,user='myusername', passwd='mypassword', db='mydb')
df = pd.read_sql('select * from test;', con=mysql_cn)    
mysql_cn.close()

上面的代码读取了test表中所有的数据到df中,而df的数据结构为Dataframe。 ps.MySQL教程:http://www.runoob.com/mysql/mysql-tutorial.html

(三)读取excel文件

要读取excel文件还需要安装xlrd模块,pip install xlrd即可。

df = pd.read_excel('E:\\tips.xls')

(四)数据导出到csv文件

df.to_csv('E:\\demo.csv', encoding='utf-8', index=False) #index=False表示导出时去掉行名称,如果数据中含有中文,一般encoding指定为‘utf-8’

二.提取和筛选需要的数据

(一)提取和查看相应数据 (用的是tips.csv的数据,数据来源:https://github.com/mwaskom/seaborn-data)

import pandas as pd
data_url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv" #填写url读取
df = pd.read_csv(data_url)

print(df.head()) #打印数据前五行
#输出
   total_bill   tip     sex smoker  day    time  size
      16.99  1.01  Female     No  Sun  Dinner     2
      10.34  1.66    Male     No  Sun  Dinner     3
      21.01  3.50    Male     No  Sun  Dinner     3
      23.68  3.31    Male     No  Sun  Dinner     2
      24.59  3.61  Female     No  Sun  Dinner     4

print(df.tail())  #打印数据后5行
#输出
     total_bill   tip     sex smoker   day    time  size
      29.03  5.92    Male     No   Sat  Dinner     3
      27.18  2.00  Female    Yes   Sat  Dinner     2
      22.67  2.00    Male    Yes   Sat  Dinner     2
      17.82  1.75    Male     No   Sat  Dinner     2
      18.78  3.00  Female     No  Thur  Dinner     2





In [22]:
print(df.columns) #打印列名

Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object')

In [23]:
print(df.index)  #打印行名

RangeIndex(start=0, stop=244, step=1)
print df.ix[10:20, 0:3]  #打印10~20行前三列数据
#输出
    total_bill   tip     sex
      10.27  1.71    Male
      35.26  5.00  Female
      15.42  1.57    Male
      18.43  3.00    Male
      14.83  3.02  Female
      21.58  3.92    Male
      10.33  1.67  Female
      16.29  3.71    Male
      16.97  3.50  Female
      20.65  3.35    Male
      17.92  4.08    Male
#提取不连续行和列的数据,这个例子提取的是第1,3,5行,第2,4列的数据
df.iloc[[1,3,5],[2,4]]
#输出
    sex  day
 Male  Sun
 Male  Sun
 Male  Sun
#专门提取某一个数据,这个例子提取的是第三行,第二列数据(默认从0开始算哈)
df.iat[3,2]
#输出
'Male'
print df.drop(df.columns[1, 2], axis = 1) #舍弃数据前两列
print df.drop(df.columns[[1, 2]], axis = 0) #舍弃数据前两行
#为了节省篇幅结果就不贴出来了哈~
df.iloc[3] #选取第3行
#输出1
total_bill     23.68
tip             3.31
sex             Male
smoker            No
day              Sun
time          Dinner
size               2
Name: 3, dtype: object

df.iloc[2:4] #选取第2到第3行
#输出2
   total_bill   tip   sex smoker  day    time  size
      21.01  3.50  Male     No  Sun  Dinner     3
      23.68  3.31  Male     No  Sun  Dinner     2

df.iloc[0,1] #选取第0行1列的元素
#输出3
1.01

(二)筛选出需要的数据

(用的是tips.csv的数据,数据来源:https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv)

#example:假设我们要筛选出小费大于$8的数据
df[df.tip>8]
#输出
     total_bill  tip   sex smoker  day    time  size
      50.81   10  Male    Yes  Sat  Dinner     3
      48.33    9  Male     No  Sat  Dinner     4
#数据筛选同样可以用”或“和”且“作为筛选条件,比如
#1
df[(df.tip>7)|(df.total_bill>50)] #筛选出小费大于$7或总账单大于$50的数据
#输出
     total_bill    tip   sex smoker  day    time  size
       39.42   7.58  Male     No  Sat  Dinner     4
      50.81  10.00  Male    Yes  Sat  Dinner     3
      48.33   9.00  Male     No  Sat  Dinner     4

#2
df[(df.tip>7)&(df.total_bill>50)]#筛选出小费大于$7且总账单大于$50的数据
#输出
     total_bill  tip   sex smoker  day    time  size
      50.81   10  Male    Yes  Sat  Dinner     3

三.统计描述

(用的是tips.csv的数据,数据来源:https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv)

print(df.describe()) #描述性统计 (简单统计信息)
#输出  各指标都比较简单就不解释了哈
       total_bill         tip        size
count  244.000000  244.000000  244.000000 
mean    19.785943    2.998279    2.569672
std      8.902412    1.383638    0.951100
min      3.070000    1.000000    1.000000
25%     13.347500    2.000000    2.000000
50%     17.795000    2.900000    2.000000
75%     24.127500    3.562500    3.000000
max     50.810000   10.000000    6.000000

#count  行数 mean    中值 std      标准差 min max 最小值 最大值

详情参考:https://www.jianshu.com/p/ff5be0d18515

四.数据处理

一)数据转置(用的是tips.csv的数据,数据来源:https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv)

print(df.T)
#output
      1       2       3       4       5       6       7    \
total_bill   16.99   10.34   21.01   23.68   24.59   25.29    8.77   26.88   
tip           1.01    1.66     3.5    3.31    3.61    4.71       2    3.12   
sex         Female    Male    Male    Male  Female    Male    Male    Male   
smoker          No      No      No      No      No      No      No      No   
day            Sun     Sun     Sun     Sun     Sun     Sun     Sun     Sun   
time        Dinner  Dinner  Dinner  Dinner  Dinner  Dinner  Dinner  Dinner   
size             2       3       3       2       4       4       2       4   
      9     ...       234     235     236     237     238  \
total_bill   15.04   14.78   ...     15.53   10.07    12.6   32.83   35.83   
tip           1.96    3.23   ...         3    1.25       1    1.17    4.67   
sex           Male    Male   ...      Male    Male    Male    Male  Female   
smoker          No      No   ...       Yes      No     Yes     Yes      No   
day            Sun     Sun   ...       Sat     Sat     Sat     Sat     Sat   
time        Dinner  Dinner   ...    Dinner  Dinner  Dinner  Dinner  Dinner   
size             2       2   ...         2       2       2       2       3   
    240     241     242     243  
total_bill   29.03   27.18   22.67   17.82   18.78  
tip           5.92       2       2    1.75       3  
sex           Male  Female    Male    Male  Female  
smoker          No     Yes     Yes      No      No  
day            Sat     Sat     Sat     Sat    Thur  
time        Dinner  Dinner  Dinner  Dinner  Dinner  
size             3       2       2       2       2  

[7 rows x 244 columns]

(二)数据排序

(用的是tips.csv的数据,数据来源:https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv)

df.sort_values(by='tip')  #按tip列升序排序
#输出(为了不占篇幅我简化了一部分)
     total_bill    tip     sex smoker   day    time  size
        3.07   1.00  Female    Yes   Sat  Dinner     1
      12.60   1.00    Male    Yes   Sat  Dinner     2
        5.75   1.00  Female    Yes   Fri  Dinner     2
       7.25   1.00  Female     No   Sat  Dinner     1
        16.99   1.01  Female     No   Sun  Dinner     2
..          ...    ...     ...    ...   ...     ...   ...
      28.17   6.50  Female    Yes   Sat  Dinner     3
      34.30   6.70    Male     No  Thur   Lunch     6
       48.27   6.73    Male     No   Sat  Dinner     4
       39.42   7.58    Male     No   Sat  Dinner     4
      48.33   9.00    Male     No   Sat  Dinner     4
      50.81  10.00    Male    Yes   Sat  Dinner     3

[244 rows x 7 columns]

(三)缺失值处理

1.填充缺失值(数据来自《利用python进行数据分析》第二章 usagov_bitly_data2012-03-16-1331923249.txt,下载:

(需要CSDN币),或者百度文件名 下载其他资源。注意txt的格式需为ANSI.

import json  #python有许多内置或第三方模块可以将JSON字符串转换成python字典对象
import pandas as pd
import numpy as np
from pandas import DataFrame
path = r'F:\PycharmProjects\pydata-book-master\ch02\usagov_bitly_data2012-03-16-1331923249.txt' #根据自己的路径填写
records = [json.loads(line) for line in open(path)]
frame = DataFrame(records)
frame['tz']

#输出(为了节省篇幅我删除了部分输出结果)
         America/New_York
           America/Denver
         America/New_York
        America/Sao_Paulo
         America/New_York
         America/New_York
            Europe/Warsaw
                         
                         
                         
     America/Los_Angeles
        America/New_York
        America/New_York
                     NaN
               ...         
Name: tz, dtype: object

从以上输出值可以看出数据存在未知或缺失值,接着咱们来处理缺失值。

print(frame['tz'].fillna(1111111111111)) #以数字代替缺失值
#输出结果(为了节省篇幅我删除了部分输出结果)
         America/New_York
           America/Denver
         America/New_York
        America/Sao_Paulo
         America/New_York
         America/New_York
            Europe/Warsaw
                         
                         
                         
     America/Los_Angeles
        America/New_York
        America/New_York
           1111111111111
Name: tz, dtype: object
print(frame['tz'].fillna('YuJie2333333333333')) #用字符串代替缺失值
#输出(为了节省篇幅我删除了部分输出结果)
         America/New_York
           America/Denver
         America/New_York
        America/Sao_Paulo
         America/New_York
         America/New_York
            Europe/Warsaw
                         
                         
                         
     America/Los_Angeles
        America/New_York
        America/New_York
      YuJie2333333333333
Name: tz, dtype: object
还有:
print frame['tz'].fillna(method='pad') #用前一个数据代替缺失值
print frame['tz'].fillna(method='bfill') #用后一个数据代替缺失值
2.删除缺失值 (数据同上)
print frame['tz'].dropna(axis=0) #删除缺失行
print frame['tz'].dropna(axis=1) #删除缺失列


3.插值法填补缺失值

由于没有数据,这儿插播一个小知识点:创建一个随机的数据框

import pandas as pd
import numpy as np
#创建一个6*4的数据框,randn函数用于创建随机数
czf_data = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD')) 
czf_data
#输出
          A         B         C         D
 0.355690  1.165004  0.810392 -0.818982
 0.496757 -0.490954 -0.407960 -0.493502
-0.202123 -0.842278 -0.948464  0.223771
 0.969445  1.357910 -0.479598 -1.199428
 0.125290  0.943056 -0.082404 -0.363640
-1.762905 -1.471447  0.351570 -1.546152

好啦,数据就出来了。接着我们用空值替换数值,创造出一个含有空值的DataFrame。

#把第二行数据设置为缺失值
czf_data.ix[2,:]=np.nan
czf_data
#输出
          A         B         C         D
 0.355690  1.165004  0.810392 -0.818982
 0.496757 -0.490954 -0.407960 -0.493502
      NaN       NaN       NaN       NaN
 0.969445  1.357910 -0.479598 -1.199428
 0.125290  0.943056 -0.082404 -0.363640
-1.762905 -1.471447  0.351570 -1.546152
#接着就可以利用插值法填补空缺值了~
print(czf_data.interpolate())
#输出
          A         B         C         D
 0.355690  1.165004  0.810392 -0.818982
 0.496757 -0.490954 -0.407960 -0.493502
 0.733101  0.433478 -0.443779 -0.846465
 0.969445  1.357910 -0.479598 -1.199428
 0.125290  0.943056 -0.082404 -0.363640
-1.762905 -1.471447  0.351570 -1.546152

 (四)数据分组

(用的是tips.csv的数据,数据来源:https://github.com/mwaskom/seaborn-data)

import json  #python有许多内置或第三方模块可以将JSON字符串转换成python字典对象
import pandas as pd
import numpy as np
from pandas import DataFrame
path = r'F:\PycharmProjects\pydata-book-master\ch02\usagov_bitly_data2012-03-16-1331923249.txt' #根据自己的路径填写
records = [json.loads(line) for line in open(path)]
df= DataFrame(records)

group = df.groupby('c')  #按day这一列进行分组
#1
print(group.first())#打印每一组的第一行数据
#输出
      total_bill   tip     sex smoker    time  size
day                                                
Fri        28.97  3.00    Male    Yes  Dinner     2
Sat        20.65  3.35    Male     No  Dinner     3
Sun        16.99  1.01  Female     No  Dinner     2
Thur       27.20  4.00    Male     No   Lunch     4
#2
print(group.last())#打印每一组的最后一行数据
#输出
      total_bill   tip     sex smoker    time  size
day                                                
Fri        10.09  2.00  Female    Yes   Lunch     2
Sat        17.82  1.75    Male     No  Dinner     2
Sun        15.69  1.50    Male    Yes  Dinner     2
Thur       18.78  3.00  Female     No  Dinner     2

(五)值替换

import pandas as pd
import numpy as np
#首先创造一个Series(没有数据情况下的福音233)
Series = pd.Series([0,1,2,3,4,5])
In [108]:
Series 
Out[108]:

0    0
1    1
2    2
3    3
4    4
5    5
dtype: int64



In [117]:
#数值替换,例如将元素0换成10000000000000
print(Series.replace(0,10000000000000))

0    10000000000000
1                 1
2                 2
3                 3
4                 4
5                 5
dtype: int64
#列和列的替换同理
print(Series.replace([0,1,2,3,4,5],[11111,222222,3333333,44444,55555,666666]))
#输出
     11111
    222222
   3333333
     44444
     55555
    666666
dtype: int64

五.统计分析

(一)t检验

1.独立样本t检验

T检验是用于两个样本(或样本与群体)平均值差异程度的检验方法。它是用T分布理论来推断差异发生的概率,从而判定两个平均数的差异是否显著。

检验的适用条件为样本分布符合正态分布
T检验的应用条件:

  • 当样本例数较小时,要求样本取自正态总体;
  • 做两样本均数比较时,还要求两样本的总体方差相
    等。

T检验的用途:(1)样本均数与群体均数的比较;(2)两样本均数的比较。

https://www.jianshu.com/p/46d9b111dffc

开始找不到合适的数据,我就在网上随便摘抄了个spss做独立样本t检验的实例数据作为例子大家暂时看着吧找到合适的例子再给大家举~

数据如下,我将数据保存为本地xlsx格式:

group  data
     1    34
     1    37
     1    28
     1    36
     1    30
     2    43
     2    45
     2    47
     2    49
     2    39

import pandas as pd
from scipy.stats import ttest_ind
IS_t_test = pd.read_excel('C:\\IS_t_test.xls')
Group1 = IS_t_test[IS_t_test['group'] == 1]['data']
Group2 = IS_t_test[IS_t_test['group'] == 2]['data']
print(ttest_ind(Group1, Group2))
#输出
(-4.7515451390104353, 0.0014423819408438474)

输出结果的第一个元素为t值,第二个元素为p-value

ttest_ind默认两组数据方差齐性的,如果想要设置默认方差不齐,可以设置equal_var=False

print ttest_ind(Group1,Group2,equal_var=True)
print ttest_ind(Group1,Group2,equal_var=False)
#输出
(-4.7515451390104353, 0.0014423819408438474)
(-4.7515451390104353, 0.0014425608643614844)

2.配对样本t检验

同样找不到数据,让我们暂且假设上边独立样本是配对样本吧,使用同样的数据。

import pandas as pd
from scipy.stats import ttest_rel
IS_t_test = pd.read_excel('E:\\IS_t_test.xlsx') 
Group1 = IS_t_test[IS_t_test['group']==1]['data']
Group2 = IS_t_test[IS_t_test['group']==2]['data']
print ttest_rel(Group1,Group2)

#输出
(-5.6873679190073361, 0.00471961872448184)

同样的,输出结果的第一个元素为t值,第二个元素为p-value。

(二)方差分析

1.单因素方差分析

这里依然沿用t检验的数据

import pandas as pd
from scipy import stats
IS_t_test = pd.read_excel('E:\\IS_t_test.xlsx') 
Group1 = IS_t_test[IS_t_test['group']==1]['data']
Group2 = IS_t_test[IS_t_test['group']==2]['data']
w,p = stats.levene(*args)
#levene方差齐性检验。levene(*args, **kwds)  Perform Levene test for equal variances.如果p<0.05,则方差不齐
print(w,p)
#进行方差分析
f,p = stats.f_oneway(*args)
print(f,p)

#输出
(0.019607843137254936, 0.89209916055865535)
22.5771812081 0.00144238194084

2.多因素方差分析

    数据是我从网上找的多因素方差分析的一个例子,研究区组和营养素对体重的影响。我做成了excel文件,需要的同学可以问我要哈~做多因素方差分析需要加载statsmodels模块,如果电脑没有安装可以pip install一下。

#数据导入
import pandas as pd
MANOVA=pd.read_excel('E:\\MANOVA.xlsx')
MANOVA
#输出(为了节省篇幅删掉了中间部分的输出结果)
    id  nutrient  weight
   1         1    50.1
   2         1    47.8
   3         1    53.1
   4         1    63.5
   5         1    71.2
   6         1    41.4
.......................
  6         3    38.5
  7         3    51.2
  8         3    46.2


#多因素方差分析
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
formula = 'weight~C(id)+C(nutrient)+C(id):C(nutrient)'
anova_results = anova_lm(ols(formula,MANOVA).fit())
print anova_results
#output
                   df        sum_sq     mean_sq   F  PR(>F)
C(id)               7  2.373613e+03  339.087619   0     NaN
C(nutrient)         2  1.456133e+02   72.806667   0     NaN
C(id):C(nutrient)  14  3.391667e+02   24.226190   0     NaN
Residual            0  8.077936e-27         inf NaN     NaN

也许数据选得不对,p-value全是空值23333,待我找个好点儿的数据再做一次多因素方差分析。

3.重复测量设计的方差分析(单因素)   ********待完善

重复测量设计是对同一因变量进行重复测度,重复测量设计的方差分析可以是同一条件下进行的重复测度,也可以是不同条件下的重复测量。

代码和多因素方差分析一样,思路不一样而已~但我还找不到多因素方差分析合适的数据所以这儿就先不写了2333

 4.混合设计的方差分析   ********待完善

#########统计学学得好的同学们,教教我吧。。

(三)卡方检验

  卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。(from 百度百科2333)

1.单因素卡方检验

数据源于网络,男女化妆与不化妆人数的理论值与实际值。

import numpy as np
from scipy import stats
from scipy.stats import chisquare
observed = np.array([15,95])
 #观测值:110学生中化妆的女生95人,化妆的男生15人
expected = np.array([55,55])
#理论值:110学生中化妆的女生55人,化妆的男生55人
chisquare(observed,expected)
#output
(58.18181818181818, 2.389775628860044e-14)

2.多因素卡方检验*****正在研究中,学会了完善这一块~

 (四)计数统计

(用的数据为tips.csv)

#example:统计性别
count = df['sex'].value_counts()
#输出
print(count)
Male      157
Female     87
Name: sex, dtype: int64

(五)回归分析  *****待学习: 数据拟合,广义线性回归。。。。等等

六.可视化

python + pyechart
原文:https://blog.csdn.net/wsp_1138886114/article/details/80509375 

一、第一个PyEcharts图标

1 安装:                            pip install pyecharts2 引用pyecharts from pyecharts import Bar3 编写实现柱状图

bar = Bar('我的第一个图标','副标题')

bar.add('服装',['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子'],[5,20,36,10,75,90])

4 输出到.html中进行展示:bar.render(.././html/bar01.html)

5 新建一个html文件

代码:
import pyecharts
from pyecharts import Bar

bar = Bar("我的第一个图表", "这里是副标题")
bar.use_theme('dark')                                  #暗色背景色
bar.add("服装",                                        #注解==label
        ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"], #横坐标
        [5, 20, 36, 10, 75, 90])                       #纵坐标
bar.render('./picture1.html')                          #文件存储路径(默认保存当前文件路径)

1、统计数组词频  Python for Data Analysis, p24

纯python

collections. Counter    counts=Counter (time_zone) 前10名 counts.most_common(10)

pandas:

import pandas as pd
import numpy as np
frame = pd.DataFrame(record)

frame['tz'].value_counts()

相关文章:

  • 【VS输出UTF8】 C++ 控制台程序中输出UTF8字符乱码问题解决方法
  • 【python】python一些热点问题
  • 【thrift】thrift 研究
  • 【人工智能】我的人工智能之旅——线性回归 研读
  • 【python】Python Web服务器并发性能测试
  • 【protocolbuff】linux下安装google protobuf[实践] --未成功
  • 【ML】之 线性回归(实战) 研读
  • 【VS2017】VS2017离线安装教程
  • 【hadoop】为什么要用hadoop?
  • 【容器适配器】什么是容器适配器和用法
  • 【socket】setsockopt函数的作用和说明
  • 【hadoop】Hadoop编程实例之MapReduce
  • 【VS】发布库lib/dll 带运行环境(/MT、/MTd、/MD、/MDd)静态库/动态库
  • 【linux】Rehat linux离线安装GCC等软件的方法
  • 【‘前端‘框架】React、Vue、Bootstrap、easyUI 、AngularJS 的区别
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【刷算法】从上往下打印二叉树
  • Android单元测试 - 几个重要问题
  • java小心机(3)| 浅析finalize()
  • React-redux的原理以及使用
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • tweak 支持第三方库
  • 从伪并行的 Python 多线程说起
  • 近期前端发展计划
  • 聊聊flink的BlobWriter
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何设计一个比特币钱包服务
  • 深入 Nginx 之配置篇
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 运行时添加log4j2的appender
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • # 计算机视觉入门
  • #、%和$符号在OGNL表达式中经常出现
  • #前后端分离# 头条发布系统
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (ibm)Java 语言的 XPath API
  • (多级缓存)缓存同步
  • (分布式缓存)Redis哨兵
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET NPOI导出Excel详解
  • @Bean注解详解
  • @Query中countQuery的介绍
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 数据结构 - C++]红黑树RBTree
  • [20160902]rm -rf的惨案.txt
  • [20161101]rman备份与数据文件变化7.txt
  • [20171113]修改表结构删除列相关问题4.txt
  • [BZOJ3757] 苹果树
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数