为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 数据库 正文

果断收藏!python数据分析入门学习笔记(上)(python数据分析零基础入门)

三叶资源网 2022-08-17 21:18:50 数据库 336 ℃ 0 评论

目录

一、 数据分析有关的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/


二.数据导入和导出

(一)读取csv文件

1.本地读取

import pandas as pd
df = pd.read_csv('E:\\tips.csv')  #根据自己数据文件保存的路径填写(p.s.  python填写路径时,要么使用/,要么使用\\)
#输出:
     total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
5         25.29  4.71    Male     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       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)
#输出同上,为了节省篇幅这儿就不粘贴了

3.read_csv详解

功能: Read CSV (comma-separated) file into DataFrame

read_csv(filepath_or_buffer, sep=',', dialect=None, compression='infer', doublequote=True, 
         escapechar=None, quotechar='"', quoting=0, skipinitialspace=False, lineterminator=None, 
         header='infer', index_col=None, names=None, prefix=None, skiprows=None,
         skipfooter=None, skip_footer=0, na_values=None, true_values=None, false_values=None, 
         delimiter=None, converters=None, dtype=None, usecols=None, engine=None, 
         delim_whitespace=False, as_recarray=False, na_filter=True, compact_ints=False, 
         use_unsigned=False, low_memory=True, buffer_lines=None, warn_bad_lines=True, 
         error_bad_lines=True, keep_default_na=True, thousands=None, comment=None, 
         decimal='.', parse_dates=False, keep_date_col=False, dayfirst=False, date_parser=None, 
         memory_map=False, float_precision=None, nrows=None, iterator=False, chunksize=None,
         verbose=False, encoding=None, squeeze=False, mangle_dupe_cols=True, tupleize_cols=False, 
         infer_datetime_format=False, skip_blank_lines=True)

参数详解: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

(二)读取Mysql数据   

假设数据库安装在本地,用户名为myusername,密码为mypassword,要读取mydb数据库中的数据

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’

(五)读写SQL数据库

import pandas as pd
import sqlite3
con = sqlite3.connect('...')
sql = '...'
df=pd.read_sql(sql,con)

#help文件
help(sqlite3.connect)
#输出
Help on built-in function connect in module _sqlite3:

connect(...)
    connect(database[, timeout, isolation_level, detect_types, factory])
    
    Opens a connection to the SQLite database file *database*. You can use
    ":memory:" to open a database connection to a database that resides in
    RAM instead of on disk.
#############
help(pd.read_sql)
#输出
Help on function read_sql in module pandas.io.sql:

read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
    Read SQL query or database table into a DataFrame.

ps.数据库的代码是我直接从网络上粘贴过来的,没有测试过是不是可行,先贴上来。

数据库我还在摸索中,学习心得学习笔记之类的大家可以一起分享23333~

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

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

print df.head() #打印数据前五行
#输出
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4
print df.tail()  #打印数据后5行
#输出
     total_bill   tip     sex smoker   day    time  size
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2
print df.columns  #打印列名
#输出
Index([u'total_bill', u'tip', u'sex', u'smoker', u'day', u'time', u'size'], dtype='object')
print df.index  #打印行名
#输出
Int64Index([  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,
            ...
            234, 235, 236, 237, 238, 239, 240, 241, 242, 243],
           dtype='int64', length=244)
print df.ix[10:20, 0:3]  #打印10~20行前三列数据
#输出
    total_bill   tip     sex
10       10.27  1.71    Male
11       35.26  5.00  Female
12       15.42  1.57    Male
13       18.43  3.00    Male
14       14.83  3.02  Female
15       21.58  3.92    Male
16       10.33  1.67  Female
17       16.29  3.71    Male
18       16.97  3.50  Female
19       20.65  3.35    Male
20       17.92  4.08    Male
#提取不连续行和列的数据,这个例子提取的是第1,3,5行,第2,4列的数据
df.iloc[[1,3,5],[2,4]]
#输出
    sex  day
1  Male  Sun
3  Male  Sun
5  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) #舍弃数据前两行
#为了节省篇幅结果就不贴出来了哈~
print df.shape #打印维度
#输出
(244, 7)
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
2       21.01  3.50  Male     No  Sun  Dinner     3
3       23.68  3.31  Male     No  Sun  Dinner     2

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

(二)筛选出需要的数据(用的是tips.csv的数据,数据来源:https://github.com/mwaskom/seaborn-data)

#example:假设我们要筛选出小费大于$8的数据
df[df.tip>8]
#输出
     total_bill  tip   sex smoker  day    time  size
170       50.81   10  Male    Yes  Sat  Dinner     3
212       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
23        39.42   7.58  Male     No  Sat  Dinner     4
170       50.81  10.00  Male    Yes  Sat  Dinner     3
212       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
170       50.81   10  Male    Yes  Sat  Dinner     3
#接上
#假如加入了筛选条件后,我们只关心day和time
df[['day','time']][(df.tip>7)|(df.total_bill>50)]
#输出
     day    time
23   Sat  Dinner
170  Sat  Dinner
212  Sat  Dinner

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

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

end.

作者:小星星.

来源:博客园.


关注我们吧,查看更多干货文章,视频。回复“数据”还有数据分析相关资料领取,每周更有免费直播课,有问题也可私信咨询小编哦!

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
CreateMutexA新浪微博Web协议修改MP3文件摘要指针操作类进销存系统文件搜索动态调用汇编快速启动吃鸡辅助原子锁模式HP端口转发HTTP接口调试工具APK查询工具sqlite3粒子发射器硬盘遍历代理采集本机QQ登录彗星小助手
最新评论