利用Python进行基本的数据分析
##采用open函数读取csv文件, 但此种方法局限性很多
#with open ( "C:/Users/Desktop/test_file.csv" , "r" ) as file:
#for line in file:
#print ( line)
###采用open函数读取xlsx文件,局限性多
import xlrd
#file = xlrd. open_workbook ( "C:/Users/Desktop/test_file.xlsx" )
#table = file. sheet_by_index ( 0 ) ##按照索引读取列表
#for i in range ( table. nrows) : ##读取每行并打印
#print ( table. row_values ( i) )
###
import pandas as pd
df = pd. read_csv ( "C:/Users/Desktop/test_file.csv" , header= 0 )
print ( df. head ( ) )
data = pd. read_excel ( "C:/Users/Desktop/test_file.xlsx" , sheet_name= 'test_file' )
print ( data. head ( 10 ) ) ## 查看前10 行
print ( data. tail ( ) ) ## 查看后5 行
print ( data. describe ( ) ) ## 基本统计描述,如均值、方差、四分位数等等
print ( data. count ( ) ) ## 各类指标计数
###判断是否有缺失值
print ( data. isnull ( ) )
print ( data. notnull ( ) )
####删除含有缺失值的列和行, 0 为行,1 为列
data. dropna ( axis= 0 )
data. dropna ( axis= 1 )
###dim是返回数据框的维度,是一个值
print ( data. ndim)
####shape返回数据框的行列数,0 为行,1 为列; len作用同shape[ 0 ]
print ( data. shape[ 1 ] , data. shape[ 0 ] , len ( data) )
########填补缺失值
df. fillna ( method= 'pad' ) ##前向填补
df. fillna ( method = 'bfill' ) ##后向填补
df. interpolate ( method = 'linear' ) ##插值填补,默认为线性填补
###interpolate ( ) 方法还有 linear, time, index, values, nearest, zero, slinear,
###quadratic, cubic, barycentric, krogh, polynomial, spline, piecewise_polynomial,
# from_derivatives, pchip, akima 等插值方法可供选择。
##如果你的数据增长速率越来越快,可以选择 method= 'quadratic' 二次插值。
##如果数据集呈现出累计分布的样子,推荐选择 method= 'pchip' 。
##如果需要填补缺省值,以平滑绘图为目标,推荐选择 method= 'akima' 。
##method= 'akima' ,method= 'barycentric' 和 method= 'pchip' 需要 Scipy 才能使用。
demo = pd. read_csv ( 'C:/Users/Desktop/one_hot_demo.csv' , header= 0 )
print ( demo. head ( ) )
print ( demo. shape[ 0 ] , demo. shape[ 1 ] , demo. dtypes) ##dtypes用于显示数据框中各变量的数据类型
###将名义变量转变为二维哑变量,即独热编码
onehot = pd. get_dummies ( demo[ [ 'status' , 'color' ] ] )
print ( onehot)
###重复值处理
pd. DataFrame. duplicated ( demo) . head ( 10 ) ##查看重复的行
pd. DataFrame. drop_duplicates ( demo) ##去除重复行
###异常值观测和处理
from matplotlib import pyplot as plt
data1 = pd. read_csv ( 'C:/Users/Desktop/test_file.csv' , header= 0 )
print ( data1. head ( 5 ) )
total_population = data[ "Total Population" ]
p = plt. boxplot ( total_population)
##data1. boxplot ( )
plt. show ( ) ##异常值观测
outlier = p[ 'fliers' ] [ 0 ] . get_ydata ( ) ##获取异常值数据,fliers为异常值的标签
print ( outlier)
## 数据库读取
## sudo apt- get install python- dev libmysqlclient- dev
## sudo apt- get install python3- mysqldb