学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家。博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~
前言:各种和数据分析相关python库的介绍(前言1~4摘抄自《利用python进行数据分析》)1.Numpy:Numpy是python科学计算的基础包,它提供以下功能(不限于此):(1)快速高效的多维数组对象naarray (2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数(3)用于读写硬盘上基于数组的数据集的工具(4)线性代数运算、傅里叶变换,以及随机数生成(5)用于将C、C++、Fortran代码集成到python的工具2.pandaspandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据(如SQL)灵活的数据处理能力。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。对于金融行业的用户,pandas提供了大量适用于金融数据的高性能时间序列功能和工具。DataFrame是pandas的一个对象,它是一个面向列的二维表结构,且含有行标和列标。ps.引用一段网上的话说明DataFrame的强大之处:Excel 2007及其以后的版本的最大行数是1048576,最大列数是16384,超过这个规模的数据Excel就会弹出个框框“此文本包含多行文本,无法放置在一个工作表中”。Pandas处理上千万的数据是易如反掌的事情,同时随后我们也将看到它比SQL有更强的表达能力,可以做很多复杂的操作,要写的code也更少。 说了一大堆它的好处,要实际感触还得动手码代码。3.matplotlibmatplotlib是最流行的用于绘制数据图表的python库。4.ScipyScipy是一组专门解决科学计算中各种标准问题域的包的集合。
5.statsmodels: 各种模型 ****待学习
6.scikit-learn: machine learning模块,很全 ****待学习
一.数据导入和导出(一)读取csv文件1.本地读取
import pandas as pd
df = pd.read_csv('E:\\tips.csv') #根据自己数据文件保存的路径填写(ps.填写路径时,单斜杠会报错,双斜杠不会,不知为何)
#输出:
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~
二.提取和筛选需要的数据