标签:
下星期二内部交流会要讲的内容,一并分享给大家。 待会儿的数据来源:https://github.com/mwaskom/seaborn-data 前言:各种和数据分析相关python库的介绍(摘抄自《利用python进行数据分析》) 1.Numpy: Numpy是python科学计算的基础包,它提供以下功能(不限于此): (1)快速高效的多维数组对象naarray (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是一组专门解决科学计算中各种标准问题域的包的集合 一.数据导入和导出 (一)读取csv文件 1.本地读取
import pandas as pd df = pd.read_csv(‘E:\tips.csv‘) #根据自己数据文件保存的路径填写
2.网络读取
import pandas as pd data_url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv" #填写url读取 df = pd.read_csv(data_url) #输出: 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]
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‘)
倘若为df = pd.read_excel(‘E:\tips.xls‘),报错IOError: [Errno 22] invalid mode (‘rb‘) or filename: ‘E:\tips.xls‘ ,加双斜杠就没事儿,暂时不知道为何。
(四)数据导出到csv文件
df.to_csv(‘E:\\demo.csv‘, encoding=‘utf-8‘, index=False) #index=False表示导出时去掉行名称,如果数据中含有中文,一般encoding指定为‘utf-8’
二.筛选、查看需要的数据
这儿用的是tips.csv的数据
print df.head() #打印数据前5行 print df.tail() #打印数据后5行 print df.columns #打印列名 print df.index #打印行名 print df.ix[10:20, 0:3] #打印10~20行前三列数据 print df.drop(df.columns[[1, 2]], axis = 1) #舍弃数据前两列 print df.drop(df.columns[[1, 2]], axis = 0) #舍弃数据前两行 print df.shape #打印维度 df.iloc[3] #选取第3行 df.iloc[2:4] #选取第2到第3行 df.iloc[0,1] #选取第0行1列的元素
三.数据变换
这儿用的是tips.csv的数据
print df.T #数据转置
四.统计描述
print df.describe()
五.数据处理
(一)填充缺失值
六.可视化
用的是Seaborn,Seaborn是基于matplotlib的Python可视化库,用它的原因是好入门而且还挺好看的2333
import numpy as np import pandas as pd import seaborn as sns import matplotlib as mpl import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips‘) #从网络环境导入数据tips with plt.xkcd(): sns.color_palette(‘husl‘, 8) sns.set_context(‘paper‘) sns.lmplot(x=‘total_bill‘, y=‘tip‘, data=tips, ci=65).savefig(‘picture1‘)
sns.lmplot("total_bill", "tip", tips, scatter_kws={"marker": ".", "color": "slategray"}, line_kws={"linewidth": 1, "color": "indianred"}).savefig(‘picture2‘)
plt.figure() sns.lmplot(‘size‘, ‘tip‘, tips, x_estimator= np.mean).savefig(‘picture3‘)
sns.lmplot(‘size‘, ‘tip‘, tips, x_jitter=.15).savefig(‘picture4‘)
with plt.xkcd(): sns.lmplot(‘total_bill‘, ‘tip‘, data=tips, hue=‘day‘) plt.xlabel(‘hue = day‘) plt.savefig(‘picture5‘)
with plt.xkcd(): sns.lmplot(‘total_bill‘, ‘tip‘, data=tips, hue=‘smoker‘) plt.xlabel(‘hue = smoker‘) plt.savefig(‘picture6‘)
sns.set_style(‘dark‘) sns.set_context(‘talk‘) sns.lmplot(‘size‘, ‘total_bill‘, tips, order=2) plt.title(‘# poly order = 2‘) plt.savefig(‘picture7‘) plt.figure() sns.lmplot(‘size‘, ‘total_bill‘, tips, order=3) plt.title(‘# poly order = 3‘) plt.savefig(‘picture8‘)
sns.jointplot("total_bill", "tip", tips).savefig(‘picture9‘)
标签:
原文地址:http://www.cnblogs.com/zzhzhao/p/5269217.html