利用python库 pandas完成数据分析(持续更新中~)

利用python库 pandas完成数据分析

导读

利用python库 pandas完成数据分析(持续更新中~)
  • Pandas是一个强大的分析结构化数据的工具集,它的使用基础是Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析,同时也提供数据清洗功能。
  • 本文收集了Python数据分析库Pandas及相关工具的日常使用方法,备查,持续更新中。

缩写说明

  • df:任意的 Pandas DateFrame 对象
  • s: 任意的Pandas Series对象
  • 注: 有些属性方法df和s都可以使用。

; 推荐资源:

  • pandas在线教程
  • https://www.gairuo.com/p/pandas-tutorial
  • 书籍《深入浅出Pandas:利用Python进行数据处理和分析》

一、导入数据

'先导库'
import pandas as pd
import numpy as np
imoport matplotlib.pyplot as plt
%matplotlib inline

pd.read_csv('file.csv',names=['列名1','列名2',.]

pd.read_table(filename,header=0)

pd.read_excel('file.xlsx',sheet_name='表1',header=0)

pd.read_sql(query,connect_object)

pd.read_json(json_string)

pd.read_html(url)

pd.read_clipboard()

pd.DataFrame(dict)

from io import StringIO
pd.read_csv(StringIO(web_data.text))

二、导出数据


df.to_csv('filename.csv')

df.to_excel('filename.xlsx',index=True)

df.to_sql(table_name,connect_object)

df.to_json(filename)

df.to_html()
df.to_markdown()
df.to_sting()
df.to_latex(index=False)
df.to_dict('split')
df.to_clipboard(sep=',',index=False)

writer=pd.ExcelWriter('nes.xlsx')
df_1.to_excel(writer,sheet_name='第一个',index=False)
df_2.to_excel(writer,sheet_name='第二个',index=False)
writer.save()

with pd.ExcelWriter('new.xlsx') as writer:
    df1.to_excel(writer,sheet_name='第一个')
    df2.to_excel(writer,sheet_name='第二个')

创建测试对象


pd.DataFrame(np.random.rand(20,5))

pd.Series(my_list)

df.index=pd.date_range('1900/1/30',periods=df.shape[0])

df.pt.util.testing.makeDataFrame()

df=pd.util.testing.makePeriodFrame()
df=pd.util.testing.makeTimeDateFrame()

df=pd.util.testig.makeMixeDataFrame()

查看、检查、统计、属性

df.head(n)
df.tail(n)
df.sample(n)
df.shape
df.info()
df.describe()
df.dtypes
df.axes

df.mean()
df.mean(1)
df.corr()
df.count()
df.max()
df.min()
df.median()
df.std()
df.var()
s.mode()
s.cumprod()
df.cumsum(axis=0)

s.nunique()
df.idxmax()
df.idmin()
df.columns
df.team.unique()

s.values_counts(drona=False)

df.apply(pd.Series.value_counts)

df.duplicated()
df.drop_option()

pd.get_option()
pd.options.display.max_rows=None
pd.options.display.max_columns=None
df.col.argmin()
df.col.idxmin()

ds.cunsum()
ds.cumprod()
ds.cummax()
ds.cummin()

ds.rolling(x).sum()
ds.rolling(x).mean()
ds.rolling(x).val()
ds.rolling(x).std()
ds.rolling(x).min()
ds.rolling(x).max()

缺失值的处理

df.info() #摘要包括所有列的列表及其数据类型以及每列中非空值的数量

利用python库 pandas完成数据分析(持续更新中~)

; 数据清洗

df.columns=['a','b','c']
df.columns=df.columns.str.replace(' ','_')
data.loc[:, 'a']
data.loc[:, ['a', 'b']]

df.drop(['name'], axis=1)
df.drop([0,10] ,axis=0)
del df['name']
df.dropna()
    df.dropna(axis=0,subset=["toy"])
df.dropna(axis=1)
df.dropna(axis=1,thresh=n)

df.fillna(x)
df.fillna(value={'prov':'未知'})
s.astype(float)
df.index.astype('datetime64[ns]')

s.replace(1,'one')
s.replace([1,3],['one',three'])
df.set_index('column_one')
df.rename(index=lambda x:x+1)
df.reset_index()

数据处理

df.round(2)
df.round({'A':1,'c':2})

df[ df['team'] == 'A') & (df['Q1']>80) & df.utype.isin(['老客','老访客'])]
df[df.name.str.contains('张')]
DataFrame.sort_values(by='

df.apply(np.max,axis=1)
df.insert(3, '两倍',df['值']*2)

样式显示

**
df['per_cost'] = df['per_cost'].map('{:,.2f}%'.format)

df.style.applymap(lambda x: 'background-color: grey' if x>0 else '',
                  subset=pd.IndexSlice[:, ['B', 'C']])

df.style.highlight_max(color='lightgreen').highlight_min(color='#cd4f39')
df.style.format('{:.2%}', subset=pd.IndexSlice[:, ['B']])

format_dict = {'sum':'${0:,.0f}',
                       'date': '{:%Y-%m}',
                       'pct_of_total': '{:.2%}'
                       'c': str.upper}

(df.style.format(format_dict)
    .hide_index()

    .background_gradient(subset=['sum_num'], cmap='BuGn')

    .bar(color='#FFA07A', vmin=100_000, subset=['sum'], align='zero')

    .bar(color='lightgreen', vmin=0, subset=['pct_of_total'], align='zero')

    .bar(color=['#ffe4e4','#bbf9ce'], vmin=0, vmax=1, subset=['增长率'], align='zero')

    .set_caption('2018 Sales Performance')
    .hide_index())

def background_color(row):
    if row.pv_num >= 10000:
        return ['background-color: red'] * len(row)
    elif row.pv_num >= 100:
        return ['background-color: yellow'] * len(row)
    return [''] * len(row)

df.style.apply(background_color, axis=1)**

Jupyter notebooks问题


import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (15.0, 8.0)
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

from IPython.core.display import display, HTML
display(HTML(".container { width:100% !important; }"))

from IPython.display import IFrame
IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

key = utils.uuid().slice(2,6)+encodeURIandParens(blob.name);
key = utils.uuid().slice(2,6)+Object.keys(that.attachments).length;

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

https://plot.ly/create

三、可视化

  • 创建组合图
df = pd.DataFrame({"revenue":[57,68,63,71,72,90,80,62,59,51,47,52],
                   "advertising":[2.1,1.9,2.7,3.0,3.6,3.2,2.7,2.4,1.8,1.6,1.3,1.9],
                   "month":range(12)})

ax = df.plot.bar("month", "revenue", color = "green")
df.plot.line("month", "advertising", secondary_y = True, ax = ax)
ax.set_xlim((-1,12));

利用python库 pandas完成数据分析(持续更新中~)
!](https://img-blog.csdnimg.cn/7054729c7d2a4f339cc3a07e99ac09e8.png)
利用python库 pandas完成数据分析(持续更新中~)

Original: https://blog.csdn.net/weixin_52001949/article/details/123751722
Author: 麻辣清汤
Title: 利用python库 pandas完成数据分析(持续更新中~)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751093/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球