Python数据分析之Pandas(1)——Pandas官方文档解读:一篇文章 Pandas 快速上手

qt根据散点图拟合曲线_seaborn库:分组线性回归拟合图 1.核心函数及参数介绍lmplot(data,x,y,hue,col,row,palette,col_wrap,height,aspect,markers,sharex,sharey,legend,legend_out,x_estimator,scatter,fit_reg,ci,order,logx,x_jitter,y_jitter,scatter_kws,line_kws)常用参数:data... 阅读详情

参考Pandas官方文档,Pandas快速教程,供自己复习使用。

一.概览

1. 两大数据结构:Series和DateFrame(分别对应一维数据和二维数据)

在这里插入图片描述

2. NumPy和Pandas的本质差别

a fundamental difference between pandas and NumPy: NumPy arrays have one dtype for the entire array, while pandas DataFrames have one dtype per column.
即NumPy数组中的数据元素只能有一种数据类型,而Pandas DateFrame的每一列(分别)都可以有一种。

3. 记住:

index(the rows) 用来代替 axis=0;
columns 用来代替axis=1

二.快速入门

1. 数据导入

  1. CSV文件、Excel文件、HDF5
    pd.read_csv()
    pd.read_excel()
    pd.read_hdf()
df = pandas.read_csv('music.csv')

在这里插入图片描述

2. 查看数据(Viewing Data)

  • df.head() 查看头

  • df.tail() 查看尾

  • df.index 查看索引

  • df.columns 查看列名

  • df.to_numpy() 展示底层数据的NumPy数组表示

  • df.describe() 查看数据的一些统计数据,比如计数、平均值、最大值等等:

  • df.T 转置数据

  • df.sort_index() 按轴排序

  • df.sort_values() 按值排序

3. 选择(Selection)

Pandas中有 df[ ]、df.X ; df.loc[ ] 、 df.iloc[ ] ; .at[ ]、.iat[ ] 等数据访问方法。

3.1 df[ ]、df.X

① 选择单列,df[ X ]、df.X两种方式等价

In [23]: df['A']
Out[23]: 
2013-01-01    0.469112
2013-01-02    1.212112
2013-01-03   -0.861849
2013-01-04    0.721555
2013-01-05   -0.424972
2013-01-06   -0.673690
Freq: D, Name: A, dtype: float64

② df[ ]可以使用切片获取多行数据

In [24]: df[0:3]
Out[24]: 
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804

In [25]: df['20130102':'20130104']
Out[25]: 
                   A         B         C         D
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860

3.2 df.loc[ ]

df.loc[ ]通过使用标签(列目录)来获得列数据、行数据
① df.loc[ ] 使用切片,提取(全行)一列或者(全行)多列数据

In [26]: df.loc[dates[0]]  # 一列数据
Out[26]: 
A    0.469112
B   -0.282863
C   -1.509059
D   -1.135632
Name: 2013-01-01 00:00:00, dtype: float64
In [27]: df.loc[:, ['A', 'B']]  # 多列数据
Out[27]: 
                   A         B
2013-01-01  0.469112 -0.282863
2013-01-02  1.212112 -0.173215
2013-01-03 -0.861849 -2.104569
2013-01-04  0.721555 -0.706771
2013-01-05 -0.424972  0.567020
2013-01-06 -0.673690  0.113648

② df.loc[ ] 提取多行和多列数据(切片)

In [28]: df.loc['20130102':'20130104', ['A', 'B']]
Out[28]: 
                   A         B
2013-01-02  1.212112 -0.173215
2013-01-03 -0.861849 -2.104569
2013-01-04  0.721555 -0.706771

③ df.loc[ ] 提取单行多列数据

In [29]: df.loc['20130102', ['A', 'B']] # 实现了降维
Out[29]: 
A    1.212112
B   -0.173215
Name: 2013-01-02 00:00:00, dtype: float64
In [30]: df.loc[dates[0], 'A']  # 提取单个数据
Out[30]: 0.46911229990718628

思考:选取列数据,比如‘A’ 时 ,df.loc[ : , ‘A’ ]、df[ ‘A’ ] 、df.A这三种方法是一样的么?

loc的方法更强大,可以同时涉及行和列
参考:http://www.ojit.com/article/85145

3.3 df.iloc[ ]

df.iloc[ ] 通过使用位置(索引)来进行数据选择,类似NumPy和Python。

① df.iloc[ ]用整数(按位置)选择某一行数据

In [32]: df.iloc[3]
Out[32]: 
A    0.721555
B   -0.706771
C   -1.039575
D    0.271860
Name: 2013-01-04 00:00:00, dtype: float64

② df.iloc[ ]用整数切片(按位置)来获取多行多列数据

In [33]: df.iloc[3:5, 0:2]
Out[33]: 
                   A         B
2013-01-04  0.721555 -0.706771
2013-01-05 -0.424972  0.567020

③ df.iloc[ ]用整数列表(按位置)来获取多行多列数据

In [34]: df.iloc[[1, 2, 4], [0, 2]]
Out[34]: 
                   A         C
2013-01-02  1.212112  0.119209
2013-01-03 -0.861849 -0.494929
2013-01-05 -0.424972  0.276232

④ df.iloc[ ] 用:(按位置)获取整行/列切片数据

In [35]: df.iloc[1:3, :]
Out[35]: 
                   A         B         C         D
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804

In [36]: df.iloc[:, 1:3]
Out[36]: 
                   B         C
2013-01-01 -0.282863 -1.509059
2013-01-02 -0.173215  0.119209
2013-01-03 -2.104569 -0.494929
2013-01-04 -0.706771 -1.039575
2013-01-05  0.567020  0.276232
2013-01-06  0.113648 -1.478427

⑤ df.iloc[ ] (按位置)提取单个数据

In [37]: df.iloc[1, 1]
Out[37]: -0.17321464905330858

4.过滤

使用>、<、==等布尔索引进行数据过滤。

In [39]: df[df.A > 0]
Out[39]: 
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
In [40]: df[df > 0]
Out[40]: 
                   A         B         C         D
2013-01-01  0.469112       NaN       NaN       NaN
2013-01-02  1.212112       NaN  0.119209       NaN
2013-01-03       NaN       NaN       NaN  1.071804
2013-01-04  0.721555       NaN       NaN  0.271860
2013-01-05       NaN  0.567020  0.276232       NaN
2013-01-06       NaN  0.113648       NaN  0.524988
In [41]: df2 = df.copy()

In [42]: df2['E'] = ['one', 'one', 'two', 'three', 'four', 'three']

In [43]: df2
Out[43]: 
                   A         B         C         D      E
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632    one
2013-01-02  1.212112 -0.173215  0.119209 -1.044236    one
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804    two
2013-01-04  0.721555 -0.706771 -1.039575  0.271860  three
2013-01-05 -0.424972  0.567020  0.276232 -1.087401   four
2013-01-06 -0.673690  0.113648 -1.478427  0.524988  three

In [44]: df2[df2['E'].isin(['two', 'four'])]
Out[44]: 
                   A         B         C         D     E
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804   two
2013-01-05 -0.424972  0.567020  0.276232 -1.087401  four

5. 设值(Setting)

通过赋值增加新的列到原数据。
其基本操作跟”获取“数据的操作一致。

In [45]: s1 = pd.Series([1, 2, 3, 4, 5, 6], index=pd.date_range('20130102', periods=6))

In [46]: s1
Out[46]: 
2013-01在这里插入代码片-02    1
2013-01-03    2
2013-01-04    3
2013-01-05    4
2013-01-06    5
2013-01-07    6
Freq: D, dtype: int64

In [47]: df['F'] = s1

按标签赋值:

In [48]: df.at[dates[0], 'A'] = 0

按位置赋值:

In [49]: df.iat[0, 1] = 0

按NumPy数组赋值:

In [50]: df.loc[:, 'D'] = np.array([5] * len(df))

使用设值(Setting)的一个where 操作:

In [52]: df2 = df.copy()

In [53]: df2[df2 > 0] = -df2

In [54]: df2
Out[54]: 
                   A         B         C  D    F
2013-01-01  0.000000  0.000000 -1.509059 -5  NaN
2013-01-02 -1.212112 -0.173215 -0.119209 -5 -1.0
2013-01-03 -0.861849 -2.104569 -0.494929 -5 -2.0
2013-01-04 -0.721555 -0.706771 -1.039575 -5 -3.0
2013-01-05 -0.424972 -0.567020 -0.276232 -5 -4.0
2013-01-06 -0.673690 -0.113648 -1.478427 -5 -5.0

6. 缺失值(Missing data)

Pandas 主要使用 np.nan 来表示缺失的数据。 进行运算时,默认不包含空值。

  • 如何开始

使用reindex可以增加、删除和更改指定轴的索引,并返回数据的副本,即不改变原来的数据。(不同于NumPy的resize操作)

In [55]: df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])

In [56]: df1.loc[dates[0]:dates[1], 'E'] = 1

In [57]: df1
Out[57]: 
                   A         B         C  D    F    E
2013-01-01  0.000000  0.000000 -1.509059  5  NaN  1.0
2013-01-02  1.212112 -0.173215  0.119209  5  1.0  1.0
2013-01-03 -0.861849 -2.104569 -0.494929  5  2.0  NaN
2013-01-04  0.721555 -0.706771 -1.039575  5  3.0  NaN
  • 删除含有缺失值的行
    df.dropna( )
In [58]: df1.dropna(how='any')
Out[58]: 
                   A         B         C  D    F    E
2013-01-02  1.212112 -0.173215  0.119209  5  1.0  
  • 填充缺失值
    df.fillna( )
In [59]: df1.fillna(value=5)
Out[59]: 
                   A         B         C  D    F    E
2013-01-01  0.000000  0.000000 -1.509059  5  5.0  1.0
2013-01-02  1.212112 -0.173215  0.119209  5  1.0  1.0
2013-01-03 -0.861849 -2.104569 -0.494929  5  2.0  5.0
2013-01-04  0.721555 -0.706771 -1.039575  5  3.0  5.0

  • 根据是否含缺失值来取布尔掩码
    pd.isna( )
In [60]: pd.isna(df1)
Out[60]: 
                A      B      C      D      F      E
2013-01-01  False  False  False  False   True  False
2013-01-02  False  False  False  False  False  False
2013-01-03  False  False  False  False  False   True
2013-01-04  False  False  False  False  False   True

7. 运算(Operations)

  • 统计
    运算一般将缺失值排除在外。
    一般的聚合(aggregation)函数包括 mean()、min() 和 max() 等。
In [61]: df.mean()
Out[61]: 
A   -0.004474
B   -0.383981
C   -0.687758
D    5.000000
F    3.000000
dtype: float64

可以在另外一个轴(行——列变化)上进行相同操作:

In [62]: df.mean(1)
Out[62]: 
2013-01-01    0.872735
2013-01-02    1.431621
2013-01-03    0.707731
2013-01-04    1.395042
2013-01-05    1.883656
2013-01-06    1.592306
Freq: D, dtype: float64
  • Apply函数
In [66]: df.apply(np.cumsum)
Out[66]: 
                   A         B         C   D     F
2013-01-01  0.000000  0.000000 -1.509059   5   NaN
2013-01-02  1.212112 -0.173215 -1.389850  10   1.0
2013-01-03  0.350263 -2.277784 -1.884779  15   3.0
2013-01-04  1.071818 -2.984555 -2.924354  20   6.0
2013-01-05  0.646846 -2.417535 -2.648122  25  10.0
2013-01-06 -0.026844 -2.303886 -4.126549  30  15.0

In [67]: df.apply(lambda x: x.max() - x.min())
Out[67]: 
A    2.073961
B    2.671590
C    1.785291
D    0.000000
F    4.000000
dtype: float64
  • 直方图
In [68]: s = pd.Series(np.random.randint(0, 7, size=10))

In [69]: s
Out[69]: 
0    4
1    2
2    1
3    2
4    6
5    4
6    4
7    6
8    4
9    4
dtype: int64

In [70]: s.value_counts()
Out[70]: 
4    5
6    2
2    2
1    1
dtype: int64
  • 字符串方法
In [71]: s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])

In [72]: s.str.lower()
Out[72]: 
0       a
1       b
2       c
3    aaba
4    baca
5     NaN
6    caba
7     dog
8     cat
dtype: object

8. 合并(Merge)

8.1 concat()

In [73]: df = pd.DataFrame(np.random.randn(10, 4))

In [74]: df
Out[74]: 
          0         1         2         3
0 -0.548702  1.467327 -1.015962 -0.483075
1  1.637550 -1.217659 -0.291519 -1.745505
2 -0.263952  0.991460 -0.919069  0.266046
3 -0.709661  1.669052  1.037882 -1.705775
4 -0.919854 -0.042379  1.247642 -0.009920
5  0.290213  0.495767  0.362949  1.548106
6 -1.131345 -0.089329  0.337863 -0.945867
7 -0.932132  1.956030  0.017587 -0.016692
8 -0.575247  0.254161 -1.143704  0.215897
9  1.193555 -0.077118 -0.408530 -0.862495

# 分解为多组
In [75]: pieces = [df[:3], df[3:7], df[7:]]

In [76]: pd.concat(pieces)
Out[76]: 
          0         1         2         3
0 -0.548702  1.467327 -1.015962 -0.483075
1  1.637550 -1.217659 -0.291519 -1.745505
2 -0.263952  0.991460 -0.919069  0.266046
3 -0.709661  1.669052  1.037882 -1.705775
4 -0.919854 -0.042379  1.247642 -0.009920
5  0.290213  0.495767  0.362949  1.548106
6 -1.131345 -0.089329  0.337863 -0.945867
7 -0.932132  1.956030  0.017587 -0.016692
8 -0.575247  0.254161 -1.143704  0.215897
9  1.193555 -0.077118 -0.408530 -0.862495

8.2 merg():连接(Join)

In [77]: left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})

In [78]: right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})

In [79]: left
Out[79]: 
   key  lval
0  foo     1
1  foo     2

In [80]: right
Out[80]: 
   key  rval
0  foo     4
1  foo     5

In [81]: pd.merge(left, right, on='key')
Out[81]: 
   key  lval  rval
0  foo     1     4
1  foo     1     5
2  foo     2     4
3  foo     2     5

另外一个例子:

In [82]: left = pd.DataFrame({'key': ['foo', 'bar'], 'lval': [1, 2]})

In [83]: right = pd.DataFrame({'key': ['foo', 'bar'], 'rval': [4, 5]})

In [84]: left
Out[84]: 
   key  lval
0  foo     1
1  bar     2

In [85]: right
Out[85]: 
   key  rval
0  foo     4
1  bar     5

In [86]: pd.merge(left, right, on='key')
Out[86]: 
   key  lval  rval
0  foo     1     4
1  bar     2     5

8.3 append():追加(Append)

In [87]: df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])

In [88]: df
Out[88]: 
          A         B         C         D
0  1.346061  1.511763  1.627081 -0.990582
1 -0.441652  1.211526  0.268520  0.024580
2 -1.577585  0.396823 -0.105381 -0.532532
3  1.453749  1.208843 -0.080952 -0.264610
4 -0.727965 -0.589346  0.339969 -0.693205
5 -0.339355  0.593616  0.884345  1.591431
6  0.141809  0.220390  0.435589  0.192451
7 -0.096701  0.803351  1.715071 -0.708758

In [89]: s = df.iloc[3]

In [90]: df.append(s, ignore_index=True)
Out[90]: 
          A         B         C         D
0  1.346061  1.511763  1.627081 -0.990582
1 -0.441652  1.211526  0.268520  0.024580
2 -1.577585  0.396823 -0.105381 -0.532532
3  1.453749  1.208843 -0.080952 -0.264610
4 -0.727965 -0.589346  0.339969 -0.693205
5 -0.339355  0.593616  0.884345  1.591431
6  0.141809  0.220390  0.435589  0.192451
7 -0.096701  0.803351  1.715071 -0.708758
8  1.453749  1.208843 -0.080952 -0.264610

8. 分组(Grouping)

分组有以下一项或多项步骤的处理流程:
分割:根据需求将数据分组;
函数:将函数分别应用到每个组;
结合:将得到的结果组成一个新的数据结构;

In [91]: df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
   ....:                          'foo', 'bar', 'foo', 'foo'],
   ....:                    'B': ['one', 'one', 'two', 'three',
   ....:                          'two', 'two', 'one', 'three'],
   ....:                    'C': np.random.randn(8),
   ....:                    'D': np.random.randn(8)})
   ....: 

In [92]: df
Out[92]: 
     A      B         C         D
0  foo    one -1.202872 -0.055224
1  bar    one -1.814470  2.395985
2  foo    two  1.018601  1.552825
3  bar  three -0.595447  0.166599
4  foo    two  1.395433  0.047609
5  bar    two -0.392670 -0.136473
6  foo    one  0.007207 -0.561757
7  foo  three  1.928123 -1.623033

分组+应用函数:

In [93]: df.groupby('A').sum()
Out[93]: 
            C        D
A                     
bar -2.802588  2.42611
foo  3.146492 -0.63958

分组为多层索引+应函数:

In [94]: df.groupby(['A', 'B']).sum()
Out[94]: 
                  C         D
A   B                        
bar one   -1.814470  2.395985
    three -0.595447  0.166599
    two   -0.392670 -0.136473
foo one   -1.195665 -0.616981
    three  1.928123 -1.623033
    two    2.414034  1.600434

9. 重塑(Reshaping)

堆叠(Stack)

In [95]: tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
   ....:                      'foo', 'foo', 'qux', 'qux'],
   ....:                     ['one', 'two', 'one', 'two',
   ....:                      'one', 'two', 'one', 'two']]))
   ....: 

In [96]: index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])

In [97]: df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])

In [98]: df2 = df[:4]

In [99]: df2
Out[99]: 
                     A         B
first second                    
bar   one     0.029399 -0.542108
      two     0.282696 -0.087302
baz   one    -1.575170  1.771208
      two     0.816482  1.100230

stack() 方法把 DataFrame 列压缩至一层:

In [100]: stacked = df2.stack()

In [101]: stacked
Out[101]: 
first  second   
               B   -0.542108
       two     A    0.282696
               B   -0.087302
baz    one     A   -1.575170
               B    1.771208
       two     A    0.816482
               B    1.100230
dtype: float64

压缩后(stacked)的 DataFrame 或 Series 具有多层索引, stack() 的逆操作是 unstack() ,默认拆叠最后一层:

In [102]: stacked.unstack()
Out[102]: 
                     A         B
first second                    
bar   one     0.029399 -0.542108
      two     0.282696 -0.087302
baz   one    -1.575170  1.771208
      two     0.816482  1.100230

In [103]: stacked.unstack(1)
Out[103]: 
second        one       two
first                      
bar   A  0.029399  0.282696
      B -0.542108 -0.087302
baz   A -1.575170  0.816482
      B  1.771208  1.100230

In [104]: stacked.unstack(0)
Out[104]: 
first          bar       baz
second                      
one    A  0.029399 -1.575170
       B -0.542108  1.771208
two    A  0.282696  0.816482
       B -0.087302  1.100230

10. 透视图(Pivot tables)

In [105]: df = pd.DataFrame({'A': ['one', 'one', 'two', 'three'] * 3,
   .....:                    'B': ['A', 'B', 'C'] * 4,
   .....:                    'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,
   .....:                    'D': np.random.randn(12),
   .....:                    'E': np.random.randn(12)})
   .....: 

In [106]: df
Out[106]: 
        A  B    C         D         E
0     one  A  foo  1.418757 -0.179666
1     one  B  foo -1.879024  1.291836
2     two  C  foo  0.536826 -0.009614
3   three  A  bar  1.006160  0.392149
4     one  B  bar -0.029716  0.264599
5     one  C  bar -1.146178 -0.057409
6     two  A  foo  0.100900 -1.425638
7   three  B  foo -1.035018  1.024098
8     one  C  foo  0.314665 -0.106062
9     one  A  bar -0.773723  1.824375
10    two  B  bar -1.170653  0.595974
11  three  C  bar  0.648740  1.167115

很容易就能生成透视图:

In [107]: pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
Out[107]: 
C             bar       foo
A     B                    
one   A -0.773723  1.418757
      B -0.029716 -1.879024
      C -1.146178  0.314665
three A  1.006160       NaN
      B       NaN -1.035018
      C  0.648740       NaN
two   A       NaN  0.100900
      B -1.170653       NaN
      C       NaN  0.536826

11. 时间序列(Time series)、类别型(Categoricals)、Ploting(可视化)、数据输出(Getting data out)暂略

写在最后

思考:
对于这些知识点的罗列,顶多算知道了Pandas是什么,有哪些东西在里面——“what”,
但是离如何使用还有一段距离,因此要学会如何去使用Pandas——“How”,但是在这之前不妨想一想,为什么会有Pandas出现?大家都拿他来干些什么?——“Why”。
刚好,昨天刚买的书到了,有这样一段话,对我这个数据分析小白来说有些启发,在此记录一下:

在这里插入图片描述归根到底,我们所做的一切事情,在本质上,不过是将现实生活里的事物的一些记录和规律(数据),转变成计算机能够接受的方式(向量);在此基础上我们进一步处理这些数据,“取其精华去其糟粕”,从中找出我们需要的部分组成新的数据;接着,再将这些已经向量化的数据的格式进行调整,并将其输送到计算机中的数学模型中,进行模型训练;我们不断地调整模型并输出最后的结果,最后我们得以可视化我们的结果。

参考:
10 minutes to pandas

Python pandas 库从入门到实战:初学者友好的数据分析指南 这篇文章是面向初学者的pandas入门指南,主要包含以下内容: 学习pandas的必要性:介绍pandas作为Python数据分析核心库的价值,能高效处理结构化数据(如Excel表格),实现数据读取、清洗和分析自动化。 环境搭建:提供了简单的pandas安装方法(pip install pandas)和验证步骤,确保初学者能快速上手。 核心数据结构: Series:带标签的一维数据(如学生成绩列表) DataFrame:二维表格数据(如完整的学生成绩表) 实战操作: 数据读取与保存:支持CSV、Excel等 阅读详情

相关推荐

99、Python数据分析基石:Pandas快速上手与实战技巧

本文介绍了Python数据分析基石Pandas的快速上手方法,涵盖安装、基本使用、应用场景和实用技巧。通过学习Pandas,可以轻松处理数据清洗、聚合和重塑等任务。文章还提供了处理缺失值、数据类型转换和数据筛选的方法,帮助读者快速掌握Pandas并应用于实际数据分析。

silenceallat的博客 508

用QT实现线性拟合图像显示

QT绘制线性拟合图像(最小二乘法)的实现方法

weixin_44984557的博客 5346

QCharts - 6.示例-曲线图

一.示例 二.源码 QSplineSeries是用来绘制光滑曲线的类,它在两点之间连线时采用差值算法,绘制折线图采用的是QLineSeries序列类,两点间只是简单的用直线连接。 QChart *chart = new QChart(); chart->legend()->hide(); chart->setTitle("Multiaxis chart example"); //![1] //![2] QValueAxis *a

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 2039

Pandas参考手册、常用函数及方法汇总

一、入门与升级宝典 如果个人时间充裕,可以去官网查看文档信息 官网链接:http://pandas.pydata.org pandas参考文档:http://pandas.pydata.org/pandas-docs/stable/index.html 二、常用的函数和方法 创建测试对象: pd.DataFrame(np.random.rand(20,5)):创建20行5列的随机数组成...

theskylife的博客 9438

Python数据分析库之pandas,你该这么学!No.1

这是关于pandas python的一个系列教程,风趣的语言,简洁的文字,带你走入python数据分析的大门,对的,这系列文章看完,你学习数据分析就有门了,没准还能深入的搞搞,是的,我写够简介了没?好像够了,加油弄,后面还有很多事情要做,不加班,不加班,不加班

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

python数据分析基础005 -pandas详解_pandas入门这一篇就足够了

pandas详解,建议收藏!!

苏凉.py的博客 8125

一篇文章让你快速入门Pandas

目录Pandas介绍简单介绍Pandas的基本功能Pandas的优势数据结构为什么有多个数据结构大小可变与数据复制Pandas的基本内容Pandas的基础方法数据的生成与有关方法一维数组二维数组数组的其余方法Pandas的选择数据用标签选取数据切片利用iloc进行选择Boolean indexing布尔索引Pandas的缺失值处理删除缺失值的行填充缺失值提取NAN值的布尔掩码Pandas的运算统计合并concat合并join合并append追加Pandas数据的导入与导出数据导入数据导出应用实例Pandas

qq_51718832的博客 2578

Python数据处理035:结构化数据分析工具Pandas之Pandas概览

Python结构化数据分析工具Pandas之Pandas概览

若北辰 5645

【优质书籍推荐】Python数据分析快速上手与项目实战

本文深入讲解了Python数据分析优质书籍:《Python数据分析快速上手》,希望能对学习Python和数据分析的同学们有所帮助。 文章目录 1. 前言 2. 书籍推荐 2.1 内容简介 2.2 本书作者 2.3 本书目录 2.4 适合读者 3. 购买链接

herosunly的博客 3万+

Qt图形图像开发之曲线图表模块QChart库坐标轴和数据不对应、密集的散点图无法显示问题解决方法

主要介绍了Qt图形图像开发之曲线图表模块QChart库坐标轴和数据不对应、密集的散点图无法显示问题解决方法,需要的朋友可以参考下

Matlab生成dsp程序——环境搭建(c2000系列[F28335、F2837x]都适用)

一、环境配置 (28377D的操作是一模一样就是硬件设置的时候需要选择28377d进行相应的设置) 1)matlab与ccs联合编译需要安装对应的matlab版本和ccs版本,且只有2016a以上的matlab支持c2000系列。具体对应关系参照: http://software-dl.ti.com/ccs/esd/documents/ccs_matlab.html 2)matlab版本确定之后,还需要安装有关于ccs的相关软件: I、TI Code Composer Studio xxxx(对应

qq_42151264的博客 2万+

【教程】python数据分析pandas快速学习

pandas是一个著名的python数据分析的开源库,他使用方便、应用广泛,与其他数据分析相关的第三方库兼容良好,是目前python数据处理的主流选择。

风舞雪凌月的博客 1676

51单片机定时器的原理、应用与编程实现

本文系统介绍了51单片机定时器的基本原理与应用。首先阐述了定时器的工作原理,包括定时模式和计数模式的区别。然后详细讲解了定时器的四种工作模式(方式0-方式3)及其适用场景,并分析了相关寄存器(TMOD、TCON、THx/TLx)的功能设置。文章还给出了定时器编程的具体步骤,包括初始化、计数初值计算和示例代码。最后通过LED闪烁、PWM波形产生、脉冲计数等实际应用案例,展示了定时器的多样化应用。掌握这些知识对嵌入式系统开发具有重要意义。

2501_91227323的博客 1523

pandas快速上手-CDA数据分析师

CDA证书 #CDA数据分析师本文将被收录在CDA打卡系列专栏,更多相关文章可以在里面查找。

Zeonwai_GJ_Gong的博客 753

一起玩儿物联网人工智能小车(ESP32)——48. 利用循迹模块实现循迹小车(三)

摘要:本文介绍循迹小车的接线方法及类的基础知识

一起玩儿科技 1134

Spring AI Alibaba实战训练营-05模型输出质量评估

本文介绍了使用Spring AI Alibaba库评估AI模型输出质量的方案。项目通过5种评估器实现自动化评估:相关性评估、事实准确性评估、答案相关性评分、答案正确性评估和忠实度评估。开发步骤包括环境准备(Java 17、Maven、API Key获取)、创建Maven项目、配置Spring AI(通过环境变量安全设置API Key)以及实现RAG流程。重点强调了通过评估器自动检测AI输出的质量指标,帮助开发者优化AI应用性能。

program哲学 217

Python 与数据科学工具链入门:NumPy、Pandas、Matplotlib 快速上手

本文介绍了Python数据科学三大核心工具(NumPy、Pandas、Matplotlib)的快速入门方法。首先强调了工具链的重要性,指出NumPy提供高效的数值计算,Pandas简化数据处理,Matplotlib实现数据可视化。文章详细讲解了如何搭建开发环境(推荐Anaconda),并通过实际代码示例演示了NumPy数组操作、Pandas数据框处理以及数据清洗技巧。这些工具共同构成了机器学习项目的基础设施,掌握它们能显著提高数据分析和建模效率。

htw250056的博客 4385

2026快手爬虫终极指南:JA4+指纹绕过+sign全逆向+AES响应解密(附可运行代码)

快手2026反爬破解实战指南 本文深入剖析快手2026年最新反爬体系,提供完整的破解方案: 四层防御体系:从传输层(JA4+指纹)、应用层(sign参数)、设备层到行为层,90%的爬虫在前两层即被拦截 JA4+指纹绕过:使用curl_cffi模拟Chrome 124的TLS指纹,完美匹配真实浏览器特征 sign参数逆向:通过动态调试提取加密逻辑,Python实现MD5签名算法,包含参数排序和盐值处理 响应解密:破解AES-GCM加密接口数据,完整还原响应内容 技术亮点: 使用curl-impersonate

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1802

Python之三大基本库——Pandas(1)

本文介绍了Python数据分析库Pandas的基本概念和使用方法。Pandas是基于NumPy构建的开源库,专注于结构化数据处理,提供DataFrame和Series两种核心数据结构,支持数据清洗、统计分析等功能,适用于金融分析、机器学习预处理等场景。文章详细说明了Pandas的安装方法(推荐使用清华镜像源),并强调要掌握Series和DataFrame这两个核心数据结构才能熟练使用Pandas。这是Pandas系列教程的第一篇,后续将深入讲解更多内容。

m0_61746796的博客 5816

39-高级优化技术:指令调度与乱序执行 - 手把手教你手写CPU

本文介绍了现代处理器设计中提高指令级并行性(ILP)的两种关键技术:指令调度和乱序执行。指令调度分为静态调度(由编译器完成)和动态调度(由硬件完成),后者能更好适应运行时情况但复杂度更高。乱序执行通过动态重排指令顺序提高硬件利用率,其核心组件包括重排序缓冲区、保留站和寄存器重命名。文章提供了保留站的Verilog实现示例,并分析了不同优化技术在性能、硬件开销和功耗方面的权衡。最终指出,CPU设计需根据性能、功耗等需求选择合适的优化技术。

2301_79143213的博客 85

[明道云] -基础教学5- 明道云 40 种控件详解与场景解析

明道云工作表提供40种业务控件,涵盖文本、数值、关联、公式等类型,支持各类业务场景。文本类支持多行输入、正则校验;数值/金额类提供进度条、百分比显示等功能;关联类实现多表数据引用;公式/函数类支持复杂逻辑运算;自动化类包括打印模板、API调用等控件。合理使用这些控件可提升数据收集质量和自动化效率,同时需注意控件联动的性能影响和权限配置。关键控件包括关联记录、级联选择、公式计算等,适用于订单管理、客户信息关联等业务场景。

每日出拳老爷子的博客 8541

Python数据分析之可视化——用一篇文章总结:matplotlib、Pandas、seaborn

目录1. 使用 matplotlib 进行数据可视化1.1 基础概念1.2 核心步骤:画图三步走1.3 详细介绍:1.建立画布2. 建立坐标系(确定画图区域)3. 设置坐标轴设置坐标轴的标题设置坐标轴的刻度设置坐标轴的范围其他设置5.绘制图表6.图标显示1.4 常见问题1.5 极简代码实现一个坐标系多个坐标系2. 使用 Pandas 进行数据可视化线图条形图直方图箱线图散点图饼图3. 使用 sea...

Robin_Pi的博客 3469

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

快速上手Python三剑客--Pandas篇

快速上手Pandas—个人学习使用

记录学习 2255

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

新书速览|Python数据分析快速上手

本书内容包括Python基础,用NumPy进行数据计算,用Pandas进行数据分析,用SciPy进行数据分析,用Scikit-learn进行数据分析、数据预处理、数据可视化,用Matplotlib进行可视化等内容。无论您是数据分析的新手,还是希望提升现有技能的职场人士,或是对数据分析充满热情的学生,《Python数据分析快速上手》都将帮助您建立扎实的Python数据分析基础,引导您探索数据分析的广阔天地,开启数据洞察之旅。,将复杂的数据分析概念简化,使您能够轻松掌握Python在数据分析中的应用。

quanzhankaifaqua的博客 824

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python数据分析终极指南:从NumPy到pandas的10分钟快速上手

《利用Python进行数据分析·第2版》是数据分析领域的经典教程,本指南将带你快速掌握Python数据分析的核心工具与实用技能,让你在10分钟内从入门到实战,轻松应对各类数据处理任务。 ### 为什么选择Python进行数据分析? Python作为胶水语言,能够无缝整合多种数据处理库,完美解决数据分析中的“两种语言”问题。无论是数据清洗、可视化还是复杂建模,Python都能提供高效且易用的解决

gitblog_00856的博客 467
上一篇: Python数据分析之NumPy(1)——NumPy快速入门笔记:用一篇文章快速解最核心的NumPy知识
下一篇: Python数据分析之NumPy(2)——NumPy核心概念强化篇
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值