龙空技术网

第三章:Python数据处理工具——pandas

最爱鱼摆摆 128

前言:

此时同学们对“pandas计算峰度”大致比较着重,朋友们都需要了解一些“pandas计算峰度”的相关资讯。那么小编在网络上网罗了一些对于“pandas计算峰度””的相关资讯,希望小伙伴们能喜欢,咱们一起来了解一下吧!

免责声明:本文是通过网络收集并结合自身学习等途径合法获取,仅作为学习交流使用,其版权归出版社或者原创作者所有,并不对涉及的版权问题负责。若原创作者或者出版社认为侵权,请联系及时联系,我将立即删除文章,十分感谢!

注:来源刘顺祥《从零开始学Python数据分析与挖掘》,版权归原作者所有,仅供学习使用,不用于商业用途,如有侵权请留言联系删除,感谢合作。

从零开始python数据分析与挖掘Python数据数据处理工具----pandas

import pandas as pd

构造序列

 import numpy as np gdp1 = pd.Series([2,3.01,8.99,8.59,5.18]) gdp2 = pd.Series({'北京':2.8,'上海':3.01,'广东':8.99,'江苏':8.59,'浙江':5.18}) gdp3 = pd.Series(np.array((2.8,3.01,8.99,8.59,5.18))) print(gdp1.shape) print(gdp2) print(gdp3)
# 取出gdp1中的第一、第四和第五个元素print('行号风格的序列:\n',gdp1[[0,3,4]])# 取出gdp2中的第一、第四和第五个元素print('行名称风格的序列:\n',gdp2[[0,3,4]])# 取出gdp2中上海、江苏和浙江的GDP值print('行名称风格的序列:\n',gdp2[['上海','江苏','浙江']])# 数学函数--取对数print('通过numpy函数:\n',np.log(gdp1))# 平均gdpprint('通过numpy函数:\n',np.mean(gdp1))print('通过序列的方法:\n',gdp1.mean())

构造数据框

df1 = pd.DataFrame([['张三',23,'男'],['李四',27,'女'],['王二',26,'女']])df2 = pd.DataFrame({'姓名':['张三','李四','王二'],'年龄':[23,27,26],'性别':['男','女','女']})df3 = pd.DataFrame(np.array([['张三',23,'男'],['李四',27,'女'],['王二',26,'女']]))print('嵌套列表构造数据框:\n',df1)print('字典构造数据框:\n',df2)print('二维数组构造数据框:\n',df3)
# 读取文本文件中的数据user_income = pd.read_table('C:\\Users\\Desktop\\data_test01.txt', sep = ',',                             parse_dates={'birthday':[0,1,2]},skiprows=2, skipfooter=3,engine='python',                             comment='#', encoding='utf8', thousands='&')print(user_income)child_cloth = pd.read_excel(io = 'C:\\Users\\Desktop\\data_test02.xlsx', header = None,                            names = ['Prod_Id','Prod_Name','Prod_Color','Prod_Price'], converters = {0:str})print(child_cloth)
数据类型转换及描述统计
# 数据读取sec_cars = pd.read_csv('C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\shujufenxi\\第5章 Python数据处理工具--Pandas\\sec_cars.csv',engine='python',sep=',',                       encoding='utf8')# 预览数据的前五行print(sec_cars.head())
# 查看数据的行列数print('数据集的行列数:\n',sec_cars.shape)# 查看数据集每个变量的数据类型print('各变量的数据类型:\n',sec_cars.dtypes)
# 修改二手车上牌时间的数据类型sec_cars.Boarding_time = pd.to_datetime(sec_cars.Boarding_time, format = '%Y年%m月')# 修改二手车新车价格的数据类型sec_cars.New_price = sec_cars.New_price.str[:-1].astype('float')# 重新查看各变量数据类型print(sec_cars.dtypes)
import numpy as npprint(np.max(sec_cars.New_price))# 数据的描述性统计print(sec_cars.describe())
# 数据的形状特征# 挑出所有数值型变量num_variables = sec_cars.columns[sec_cars.dtypes !='object'][1:]print(num_variables)#自定义函数,计算偏度和峰度def skew_kurt(x):    skewness = x.skew()    kurtsis = x.kurt()    # 返回偏度值和峰度值    return pd.Series([skewness,kurtsis], index = ['Skew','Kurt'])# 运用apply方法print(sec_cars[num_variables].apply(func = skew_kurt, axis = 0))
# 离散型变量的统计描述print(sec_cars.describe(include = ['object']))
# 离散变量频次统计Freq = sec_cars.Discharge.value_counts()Freq_ratio = Freq/sec_cars.shape[0]Freq_df = pd.DataFrame({'Freq':Freq,'Freq_ratio':Freq_ratio})print(Freq_df.head())
# 将行索引重设为变量Freq_df.reset_index(inplace = True)print(Freq_df.head())

字符与日期数据的处理

数据集

# 数据读入df = pd.read_excel('C:\\Users\Desktop\\data_test03.xlsx')# 各变量数据类型print(df.dtypes)# 将birthday变量转换为日期型df.birthday = pd.to_datetime(df.birthday, format = '%Y/%m/%d')# 将手机号转换为字符串df.tel = df.tel.astype('str')# 新增年龄和工龄两列df['age'] = pd.datetime.today().year - df.birthday.dt.yeardf['workage'] = pd.datetime.today().year - df.start_work.dt.year# 将手机号中间四位隐藏起来df.tel = df.tel.apply(func = lambda x : x.replace(x[3:7], '****'))# 取出邮箱的域名df['email_domain'] = df.email.apply(func = lambda x : x.split('@')[1])# 取出用户的专业信息df['profession'] = df.other.str.findall('专业:(.*?),')# 去除birthday、start_work和other变量df.drop(['birthday','start_work','other'], axis = 1, inplace = True)print(df.head())
# 常用日期处理方法dates = pd.to_datetime(pd.Series(['1989-8-18 13:14:55','1995-2-16']), format = '%Y-%m-%d %H:%M:%S')print('返回日期值:\n',dates.dt.date)print('返回季度:\n',dates.dt.quarter)print('返回几点钟:\n',dates.dt.hour)print('返回年中的天:\n',dates.dt.dayofyear)print('返回年中的周:\n',dates.dt.weekofyear)print('返回星期几的名称:\n',dates.dt.weekday_name)print('返回月份的天数:\n',dates.dt.days_in_month)

标签: #pandas计算峰度