Data prepare

https://mp.weixin.qq.com/s/biZ6wTNb1PSrQvEnJw8Iig

https://mp.weixin.qq.com/s/LLMEljWN_KbzVvtSbTp1zg

https://mp.weixin.qq.com/s/HW0_I35UifMsAOxtK70stQ

 

1.生成数据

2.数据表检查

3.数据表清洗

4.数据预处理

5.数据提取

6.数据筛选

7.数据汇总

8.数据统计

9.数据输出

 

1.生成数据

1.导入数据表

1df = pd.read_excel('C:/Users/Admin/Desktop/types/output.xlsx')
2df1 = pd.read_csv('C:/Users/Admin/Desktop/types/output.csv')

2.创建数据表

1df = pd.DataFrame(({"id": [100110021003100410051006],
2                    "date": pd.date_range('20130102', periods=6),
3                    "city": ['Beijing ''SH'' guangzhou ''Shenzhen''shanghai''BEIJING '],
4                    "age": [234454323432],
5                    "category": ['100-A''100-B''110-A''110-C''210-A''130-F'],
6                    "price": [1200, np.nan, 21335433, np.nan, 4432]}))

返回结果:

 

2.数据表检查

1.查看维度(行列)

1df.shape

(6, 6)

2.数据表信息

1df.info()

返回结果:

 

3.查看数据格式

1查看数据表各列格式
2print(df.dtypes)
3查看数据表单列格式
4print(df['city'].dtype)

返回结果:

 

4.查看空值

1检查数据是否为空值
2print(df.isnull())
3检查特定列是否为空值
4print(df['price'].isnull())

返回结果:

 

5.查看唯一值

1查看city列中的唯一值
2print(df['city'].unique())

['Beijing ' 'SH' ' guangzhou ' 'Shenzhen' 'shanghai' 'BEIJING ']

6.查看数据表数据

1print(df.values)

返回结果:

 

7.查看列名称

1print(df.columns)

Index(['id', 'date', 'city', 'age', 'category', 'price'], dtype='object')

8.查看前多少行数据

1不设置值时,默认为5
2print(df.head(3))

返回结果:

 

9.查看后多少行数据

1不设置值时,默认为5
2print(df.tail(3))

返回结果:

 

3.数据表清洗

1.处理空值(删除或填充)

1删除数据表中含有空值的行
2df.dropna(how='any')

返回结果:

 

 

1使用数据0填空数据表中空值
2df.fillna(value=0)

返回结果:

 

 

1使用price均值对NA进行填充
2print(df['price'].fillna(df['price'].mean()))

返回结果:

 

2.清理空格

1清除city字段中的字符空格
2df['city'] = df['city'].map(str.strip)

3.大小写转换

1# city列大小写转换
2df['city'] = df['city'].str.lower()

返回结果:

 

4.更改数据格式

1更改数据格式
2df['age'] = df['age'].astype(int)

5.更改列名称

1df.rename(columns={'category''category-size'})

返回结果:

 

6.删除重复值

1print(df['city'])

返回结果:

 

 

1删除后出现的重复值(第一次的beijing被保留,最后出现的beijing被删除)
2print(df['city'].drop_duplicates())

返回结果:

 

1设置keep='list'参数后,与之前删除重复值的结果相反,第一位出现的beijing被删除,保留最后一位出现的beijing
2print(df['city'].drop_duplicates(keep='last'))

返回结果:

 

7.数值修改及替换

1数据替换
2print(df['city'].replace('sh''shanghai'))

返回结果:

 

4.数据预处理

1.数据表合并

1df1 = pd.DataFrame({'id': [10011002100310041005100610071008],
2                    'gender': ['male''female''male''female''male''female''male''female'],
3                    'pay': ['Y''N''Y''Y''N''Y''N''Y'],
4                    'm-point': [1012204040403020]})

返回结果:

 

 

1数据表匹配合并
2内连接
3df_inner = pd.merge(df, df1, how='inner')

返回结果:

 

 

1左连接
2df_left = pd.merge(df, df1, how='left')

返回结果:

 

 

1右连接
2df_right = pd.merge(df, df1, how='right')

返回结果:

 

 

1外连接
2df_out = pd.merge(df, df1, how='outer')

返回结果:

 

 

2.设置索引列

1print(df_inner.set_index('id'))

返回结果:

 

3.排序(按索引,按数值)

1按特定列的值排序
2print(df_inner.sort_values(by=['age']))  默认升序,降序ascending=False

返回结果:

 

 

1按索引列排序
2print(df_inner.set_index(keys='date'))  行索引进行排序

返回结果:

 

4.数据分组

1如果price列的值>3000,group列显示high,否则显示为low
2df_inner['group'] = np.where(df_inner['price'] > 3000'high''low')
3
4对复合多个条件的数据进行分组标记
5city列等于beijing并且price列大于等于4000的数据标记为1
6df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign'] = 1

返回结果:

 

5.数据分列

1category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为categorysize
2split = pd.DataFrame((x.split('-'for x in df_inner['category']), index=df_inner.index, columns=['category''size'])
3print(split)

返回结果:

 

 

1将完成分列后的数据表与原df_inner数据表进行匹配
2df_inner = pd.merge(df_inner, split, right_index=True, left_index=True)
3print(df_inner)

返回结果:

 

5.数据提取

1.按标签提取(loc)

1按索引提取单行的数据
2print(df_inner.loc[3])

返回结果:

 

 

1按索引提取区域行数值
2print(df_inner.loc[0:5]) 提取05的数据行

返回结果:

 

 

1设置日期为索引
2df_inner = df_inner.set_index('date')

返回结果:

 

 

1重设索引
2print(df_inner.reset_index()) 恢复索引

返回结果:

 

 

1提取4日之前的所有数据
2print(df_inner[:'2013-01-04']) 从开始提取到这个日期

返回结果:

 

2.按位置提取(iloc)

1使用iloc按位置区域提取数据
2print(df_inner.iloc[:3, :2]) 行列

返回结果:

 

 

1使用iloc按位置单独提取数据
2print(df_inner.iloc[[025], [45]])

返回结果:

 

3.按标签和位置提取(ix)

1使用ix按索引标签的位置混合提取数据
2print(df_inner.ix[:'2013-01-03', :4])

返回结果:

 

4.按条件提取(区域和条件值)

1判断city列的值是否为beijing
2print(df_inner['city'].isin(['beijing']))

返回结果:

 

 

1先判断city列里是否包含beijingshanghai,然后将复合条件的数据提取出来
2print(df_inner.loc[df_inner['city'].isin(['beijing''shanghai'])])
3category = df_inner['category_x']
4print(category)

返回结果:

 

 

1提取前三个字符,并生成数据表
2print(pd.DataFrame(category.str[:3]))

返回结果:

 

6.数据筛选

使用条件进行筛选

1筛选大于25岁并且城市为北京的这些列['id', 'city', 'age', 'category_x', 'gender']的值
2print(df_inner.loc[
3(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id''city''age''category_x''gender']])

返回结果:

 

使用条件筛选

1筛选大于25岁或城市为北京的这些列['id', 'city', 'age', 'category_x', 'gender']的值,并按照年龄对其进行排序
2print(df_inner.loc[
3(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id''city''age''category_x',
4'gender']].sort_values(by='age'))
5print(df_inner.loc[
6(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id''city''age''category_x',
7'gender']].sort_values(by='id').city.count())

返回结果:

 

6

使用query函数进行筛选

1筛选出city列等于beijing或者shanghai
2print(df_inner.query('city == ["beijing","shanghai"]'))
3print(df_inner.query('city == ["beijing","shanghai"]').price.sum())

返回结果:

 

5632.0

7.数据汇总

1.分类汇总

1对所有列进行计数汇总
2print(df_inner.groupby('city').count())

返回结果:

 

 

1按照城市对id字段进行汇总计数
2print(df_inner.groupby('city')['id'].count())

返回结果:

 

 

1对两个字段进行汇总计数
2print(df_inner.groupby(['city''size'])['id'].count())

返回结果:

 

 

1city字段进行汇总并计算price的合计和均值
2print(df_inner.groupby('city')['price'].agg([len, np.sum, np.mean]))

返回结果:

 

2.数据透视

1数据透视表
2设置city为行字段,size为列字段,price为值字段
3print(pd.pivot_table(df_inner, index=["city"], values=["price"], columns=["size"],
4aggfunc=[len, np.sum], fill_value=0, margins=True))

返回结果:

 

8.数据统计

1.数据采样

1简单的数据采样(随机抽取3条数据)
2print(df_inner.sample(n=3))

返回结果:

 

 

1# sample函数中的参数replace,用于设置采样数是否放回

2采样后不放回
3print(df_inner.sample(n=6, replace=False))

返回结果:

 

 

1采样后放回
2print(df_inner.sample(n=6, replace=True))

返回结果:

 

2.描述统计

1数据表描述性统计
2print(df_inner.describe())

返回结果:

 

3.标准差

1print(df_inner['price'].std())


 

1966.6385026231944

4.协方差

1两个字段间的协方差
2print(df_inner['price'].cov(df_inner['m-point']))


 

28771.666666666664
 

1数据表中所有字段间的协方差
2print(df_inner.cov())

 

返回结果:

 

5.相关分析

1print(df_inner['price'].corr(df_inner['m-point']))


 

0.9753247017958027
 

1数据表相关性分析
2print(df_inner.corr())

返回结果:

 

9.数据输出

1.写入Excel

1输出到Excel格式
2df_inner.to_Excel('excel_to_python.xlsx',sheet_name='bluewhale')

2.写入csv

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值