本文总结Python语言做数据探索的知识。
类似R语言做数据探索,利用Python语言做数据探索。
数据格式常有:csv、tsv、txt、xlsx和json等。 Python可以方便地导入这些数据格式。 利用Python的pandas库做数据导入,把导入的数据存放在一个DataFrame对象里,主要函数如下:
导入csv格式代码
import pandas as pd
csv_data <- pd.read_csv('user.csv')
print csv_data.head(6)
导入Excel格式代码
import pandas as pd
#导入student.xlsx里basic_info表xlsx_data <- pd.read_excel('D:/student.xlsx', 'basic_info')
print xlsx_data.head(6)
导入txt或者tsv格式代码
import pandas as pdtxt_data <- pd.read_csv('customer.txt', sep = '\t')print txt_data.head(6)tsv_data <- pd.read_table('customer.tsv')print tsv_data.head(6)
数据类型变化是数据处理的一种常用操作。 数值变量转换为字符串变量或者字符串变量转换为数值变量
str_output = str(int_input)int_output = int(str_input)float_output = float(str_input)
字符串变量转换为日期变量
from datetime import datetimestr_date = 'Apr 1 2017 1:20 PM'date_obj = datetime.strptime(str_date, '%b %d %Y %I:%M%p')print(date_obj)
Python做数据透视图,如图:
import pandas as pddf = pd.read_excel('E:/product.xlsx', 'Sheet1')print(df)result = df.pivot(index = 'ID', columns='Product', values='Sales')print(result)
Python做数据排序,可以针对一个变量或者多个变量进行升序或者降序操作。
import pandas as pddf1 = pd.read_excel('E:/product.xlsx', 'Sheet1')print(df1)result1 = df1.sort(['Product', 'Sales'], ascending = [True, False])
数据可视化可以更加容易方便地认识和理解数据。 Python做数据可视化的常用库:matplotlib和seaborn。 对于一份销售职员数据集
使用数据可视化解决这些问题:
直方图
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('E:/employee.xlsx', 'Sheet1')
fig = plt.figure()ax = fig.add_subplot(1,1,1)
ax.hist(df['Age', bins=5])plt.title('Age distribution')
plt.xlabel('Age')
plt.ylabel('#Employee')
plt.show()
散点图
import matplotlib.pyplot as pltimport pandas as pddf = pd.read_excel('E:/employee.xlsx', 'Sheet1')fig = plt.figure()ax = fig.add_subplot(1,1,1)ax.scatter(df['Age'], df['Sales'])plt.title('Sales and Age distribution')plt.xlabel('Age')plt.ylabel('Sales')plt.show()
列联表常用于理解一个或者多个分类变量的分布。
import pandas as pddf = pd.read_excel('E:/employee.xlsx', 'Sheet1')print(df)test = df.groupby(['Gender','BMI'])test.size()
数据抽样可以快速方便地理解数据。 Python做数据抽样利用numpy和random模块
import numpy as np
import pandas as pd
from random import sample
df = pd.read_excel('E:/employee.xlsx', 'Sheet1')
rindex = np.array(sample(xrange(len(df), 5)))
dfr = df.ix[rindex]print(dfr)
Python去掉数据集中重复记录,使用dataframe.drop_duplicates()方法。
rem_dup=df.drop_duplicates(['Gender', 'BMI'])print rem_dup
Python对数据做摘要分析,即快速获取数据最小值、最大值、平均值等信息,使用dataframe.describe()方法。
test= df.groupby(['Gender'])test.describe()
Python识别数据缺失值用dataframe.isnull()
df.isnull()
缺失值处理方法:1)删除方法、2)插补方法 以插入均值修补变量缺失值为例
import numpy as npmeanAge = np.mean(df.Age)df.Age = df.Age.fillna(meanAge)
数据连接与合并是把不同数据源集成在一块的常用操作。 使用pandas的merge方法
df_new = pd.merge(df1, df2, how = 'inner', left_index = True, right_index = True)
# 基于索引做连接## 拓展知识点:## 1 外连接,how='outer',左连接,how='left'## 2 也可以指定列进行关联